ceph分布式存储

2023-09-21 21:18:40

目录

前言

一、概述

(一)、特点

(二)、组件

(三)、架构图

二、搭建

(一)、基础环境

(二)、准备工作

(三)、ceph安装

(四)、集群构建

(五)、dashboard安装

(六)、ceph文件系统创建

(七)、客户端挂载

总结


前言

Ceph项目最早起源于Sage就读博士期间的工作(最早的成果于2004年发表),并随后贡献给开源社区。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。RedHat及OpenStack都可与Ceph整合以支持虚拟机镜像的后端存储。


一、概述

是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。

(一)、特点

1. 统一存储

虽然 ceph 底层是一个分布式文件系统,但由于在上层开发了支持对象和块的接口。所以在开源存储软件中,能够一统江湖。

2. 高扩展性

扩容方便、容量大。能够管理上千台服务器、EB 级的容量。

3. 可靠性强

支持多份强一致性副本,EC。副本能够垮主机、机架、机房、数据中心存放。所以安全可靠。存储节点可以自动管理、自动修复。无单点故障,容错性强。

4. 高性能

因为是多个副本,因此在读写操作时候能够做到高度并行化。理论上,节点越多,整个集群的 IOPS和吞吐量越高。另外一点 ceph 客户端读写数据直接与存储设备(osd) 交互。

(二)、组件

1. Monitor
    一个Ceph集群需要多个Monitor组成的小集群,它们通过Paxos同步数据,用来保存OSD的元数据。
2. OSD
    OSD全称Object Storage Device,也就是负责响应客户端请求返回具体数据的进程。一个Ceph集群一般都有很多个OSD。
3. MDS
    MDS全称Ceph Metadata Server,是CephFS服务依赖的元数据服务。
4. Object
    Ceph最底层的存储单元是Object对象,每个Object包含元数据和原始数据。
5. PG
    PG全称Placement Grouops,是一个逻辑的概念,一个PG包含多个OSD。引入PG这一层其实是为了更好的分配数据和定位数据。
6. RADOS
    RADOS全称Reliable Autonomic Distributed Object Store,是Ceph集群的精华,用户实现数据分配、Failover等集群操作。
7. Libradio
    Librados是Rados提供库,因为RADOS是协议很难直接访问,因此上层的RBD、RGW和CephFS都是通过librados访问的,目前提供PHP、Ruby、Java、Python、C和C++支持。
8. CRUSH
    CRUSH是Ceph使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方。
9. RBD
    RBD全称RADOS block device,是Ceph对外提供的块设备服务。
10. RGW
    RGW全称RADOS gateway,是Ceph对外提供的对象存储服务,接口与S3和Swift兼容。
11. CephFS
    CephFS全称Ceph File System,是Ceph对外提供的文件系统服务。

(三)、架构图

1:文件上传,先将文件切片成N个object(如果开启了cephFS,可以使用MDS缓存)
2:切片后的文件object会存入到Ceph中
3:文件存储前,会经过CRUSH算法,计算当前文件存储归结于哪个PG
4:PG是逻辑概念上对文件存储范围划分的索引
5:根据PG索引将文件存储到指定服务器的OSD中

二、搭建

(一)、基础环境

192.168.238.11 sentos1(osd)网关192.168.238.2

192.168.238.12 sentos2(osd)网关192.168.238.2

192.168.238.13 sentos3(osd)网关192.168.238.2

192.168.238.14 sentos4(client)网关192.168.238.2

(二)、准备工作

全部关闭防火墙、关闭图形网络管理器、关闭Selinux

分别修改至上面IP和主机名、添加hosts文件

进行免密登录然后测试

添加一块磁盘(分别重启或热扫描)

cd /sys/class/scsi_host/
for i in `ls`;do echo "- - -" > $i/scan;done

对添加的磁盘进行格式化        mkfs.xfs /dev/sdb

修改ssh配置

sed -i "s/#UseDNS yes/UseDNS no/" /etc/ssh/sshd_config
systemctl restart sshd

时间同步

在sentos1上开启时间同步服务器

yum install -y ntp
vim /etc/ntp.conf

systemctl start ntpd
systemctl enable ntpd
for i in 11 12 13 14;do ssh 192.168.238.$i ntpdate 192.168.238.11;done

(三)、ceph安装

只在sentos1执行

yum install epel-release -y
yum install lttng-ust -y

添加ceph安装源

vim /etc/yum.repo.d/ceph.repo

[Ceph]
name=Ceph packages for $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/x86_64/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
[Ceph-noarch]
name=Ceph noarch packages
# 清华源
baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/noarch/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
[ceph-source]
name=Ceph source packages
baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/SRPMS/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
 yum -y install ceph ceph-deploy 

(四)、集群构建

只在sentos1执行,集群操作都在/usr/local/soft/cephcluster目录下操作

创建集群目录

mkdir -p /usr/local/soft/cephcluster
cd /usr/local/soft/cephcluster

创建集群

ceph-deploy new sentos1 sentos2 sentos3

修改配置文件

vim ceph.conf

#对外开放网段
public network = 192.168.238.0/24
# 设置pool池默认分配数量
osd pool default size = 2
# 容忍更多的时钟误差
mon clock drift allowed = 2
mon clock drift warn backoff = 30
# 允许删除pool
mon_allow_pool_delete = true
[mgr]
# 开启WEB仪表盘
mgr modules = dashboard

安装(确保网络流畅,否则会报错)

ceph-deploy install sentos1 sentos2 sentos3

  确保网络流畅,否则会报错

初始化monitor

ceph-deploy mon create-initial

同步管理信息

ceph-deploy admin sentos1 sentos2 sentos3

安装mgr(管理守护进程)

ceph-deploy mgr create  sentos1 sentos2 sentos3

安装rgw

ceph-deploy rgw create sentos1 sentos2 sentos3

创建mds服务

ceph-deploy mds create sentos1 sentos2 sentos3

OSD安装

OSD服务是对象存储守护进程, 负责把对象存储到本地文件系统, 必须要有一块独立的磁盘作为存储。如果没有独立磁盘,怎么办? 可以在Linux下面创建一个虚拟磁盘进行挂载。

创建OSD

ceph-deploy osd create --data /dev/sdb sentos1
ceph-deploy osd create --data /dev/sdb sentos2
ceph-deploy osd create --data /dev/sdb sentos3

查看集群状态        ceph -s

(五)、dashboard安装

开启dashboard模块

ceph mgr module enable dashboard

生成签名

ceph dashboard create-self-signed-cert

创建目录

mkdir -p /usr/local/jx/cephcluster/mgr-dashboard
cd /usr/local/jx/cephcluster/mgr-dashboard
openssl req -new -nodes -x509   -subj "/O=IT/CN=ceph-mgr-dashboard" -days 3650   -keyout dashboard.key -out dashboard.crt -extensions v3_ca

启动服务(先关再起)

ceph mgr module disable dashboard
ceph mgr module enable dashboard

设置访问地址与端口

ceph config set mgr mgr/dashboard/server_addr 192.168.238.11
ceph config set mgr mgr/dashboard/server_port 9001

关闭https

ceph config set mgr mgr/dashboard/ssl false
ceph mgr services

生成账户密码(自定义)

ceph dashboard set-login-credentials jx123 123.com

访问

https://192.168.238.11:8443

(六)、ceph文件系统创建

创建存储池

ceph osd pool create cephfs_data 128
ceph osd pool create cephfs_metadata 64

查看存储池

ceph osd lspools

创建文件系统、查看文件系统、查看mds状态

ceph fs new  fs_test  cephfs_metadata cephfs_data
ceph fs ls
ceph mds stat

(七)、客户端挂载

在centos1中安装        ceph-deploy install centos4

同步管理信息

cd /usr/local//soft/cephcluster
ceph-deploy admin sentos4

在centos4中安装        yum install -y ceph-fuse

查看信息

ls /etc/ceph

创建挂载目录

mkdir /ceph

挂载ceph文件系统

ceph-fuse -k /etc/ceph/ceph.client.admin.keyring -m 192.168.238.11:6789 /ceph

再访问查看


总结

搭建中最大的问题莫过于网络的流畅度,不然安装失败,安装过程失败导致后续所有操作都无法进行,需要注意的是ceph安装到客户端挂载之前都是在1台主机上操作的(sentos1)。

更多推荐

OpenGL之着色器

着色器(Shader)是运行在GPU上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。从基本意义上来说,着色器只是一种把输入转化为输出的程序。着色器也是一种非常独立的程序,因为它们之间不能相互通信;它们之间唯一的沟通只有通过输入和输出。GLSL着色器是使用一种叫GLSL的类C语言写成的。GLSL是为图形计算量身

MyCat主从数据库集群搭建

1背景最近工作需要对比几种数据库技术方案,主从读写分离集群也是其中之一。接着上一篇文章《MySQL主从数据库搭建》基础上继续搭建MyCat主从集群。2MyCat什么是MyCat?MyCat是数据库中间件,就是介于数据库和应用之间,进行数据处理与交互的中间服务。可以对数据进行分片处理,从原有一个库,被切分为多个分片数据库

安装torch113、cuda116并运行demo【Transformer】

文章目录01.导读02.显卡驱动版本03.创建环境、下载安装必要包04.运行参考代码:01.导读安装torch113、cuda116并运行demo【Transformer】02.显卡驱动版本C:\Users\Administrator>nvidia-smi-l10WedSep1323:35:082023±-------

Docker 原理

基础技术试验进程linuxnamespaceMount(mnt)namespace可以在不影响宿主机文件系统的基础上挂载或者取消挂载文件系统了;PID(ProcessID)在一个pidnamespace中,第一个进程的pid为1,所有在此namespace中的其他进程都是此进程的子进程,操作系统级别的其他进程不需要在此

kruskal重构树

Kruskal重构树第二次学了。大致思路就是在最小生成树加边的时候,把每条边也设一个点,和他连着的两个点连边。由于最小生成树的贪心,感觉很像哈夫曼树,有性质是经过的边的长度(已经转化为点权)越向上越大/越小,取决于生成树的排序。那就可以通过倍增找不经过长度超过x的边所能走到的所有点,实际上是一直往上跳的那个子树。for

红海云签约科百特,“膜界”小巨人人力资源数字化转型全面提速

杭州科百特过滤器材有限公司(以下简称“科百特”)是全球优秀的创新过滤企业,专注于纳米膜材料的开发和应用,致力于为全球集成电路制造和生物制药产业提供创新的过滤纯化解决方案。近日,科百特与广州红海云计算股份有限公司达成战略合作。红海云作为一家技术驱动的专业型厂商,基于深厚的人力资源管理专业积累和前沿的数字技术,成功打造了众

Linux CentOS7系统运行级别

运行级别就是Linux操作系统当前正在运行的功能级别。在早期系统设置中,共设有七个运行级别,编号从0到6。系统可以引导到任何给定的运行级别。每个运行级别指定不同的系统配置,并允许访问不同的进程组合。默认情况下,Linux会引导至运行级别3或运行级别5。启动时一次只执行一个运行级别,它不会一个接一个地执行。在SysVin

Buffer Pool

一.BufferPool的含义BufferPool:缓冲池,简称BP,其作用是用来缓存表数据与索引数据,减少磁盘IO操作,提升效率。当Mysql执行查询的sql语句的时候,会先去缓存当中看是否有对应的数据,如果有则直接读内存,如果没有则去磁盘里拿,然后把数据放到BufferPool里拿,来提高查询速度。BufferPo

Unity减少发布打包文件的体积——获取精灵图片的信息限制它的大小

一、起因一个工程,打包成webGL且压缩成zip文件后,接近400M,后来把大的精灵图片设置最大尺寸,降低大小后,再次发布,zip文件缩减到250M二、如何一键获得工程里面的精灵图片信息三、获取精灵图片信息1、查找项目中的所有精灵图片//查找工程文件中的所有精灵图片string[]guids=AssetDatabase

2023年中秋·国庆节放假通知

放假期间如有业务、技术及其他相关需求,欢迎新老客户前来咨询!放假期间如给您带来不便敬请谅解!注意事项1、放假离开公司前须全面清扫所属办公区域的卫生,收拾好桌面、保管好个人办公物品;2、关闭个人电脑等办公设备的电源,切断用电设备的插座电源开关,锁好门窗防雨,做好防火防盗工作;3、节日期间重点安全部门,如仓库,要加强对仓库

【计算机网络】网络编程接口 Socket API 解读(5)

Socket是网络协议栈暴露给编程人员的API,相比复杂的计算机网络协议,API对关键操作和配置数据进行了抽象,简化了程序编程。本文讲述的socket内容源自Linuxman。本文主要对各API进行详细介绍,从而更好的理解socket编程。connectconnect()遵循POSIX.1-20081.库标准c库,li

热文推荐