Ceph集群里Rbd、Cephfs以及高可用性部署

什么是Ceph FS ?   Ceph FS 即 ceph filesystem,可以实现文件系统共享功能,客户端通过 ceph 协议挂载并使用ceph 集群作为数据存储服务器。 Ceph FS 需要运行 Meta Data Services(MDS)服务,其守护进程为 ceph-mds,ceph-mds 进程管理与 cephFS 上存储的文件相关的元数据,并协调对 ceph 存储集群的访问。   什么是RBD ?   RBD(RADOS Block Devices)即为块存储的一种,RBD 通过 librbd 库与 OSD 进行交互,RBD 为KVM 等虚拟化技术和云服务(如 OpenStack 和 CloudStack)提供高性能和无限可扩展性的存 储后端,这些系统依赖于 libvirt 和 QEMU 实用程序与 RBD 进行集成,客户端基于 librbd 库即可将 RADOS 存储集群用作块设备,不过,用于 rbd 的存储池需要事先启用 rbd 功能并进 行初始化。     环境准备:   Ceph集群一套、测试端一台(这里采用Centos7)   说明:本次部署均采用普通账号权限     RBD部署:   1.部署Ceph(上期已经部署完成,这里不再演示,直接使用即可)   2.登录到ceph-deploy虚拟机执行ceph-s,查看状态  [ root@ceph-deploy ceph-cluster]#ceph -s Ceph集群里Rbd、Cephfs以及高可用性部署

 

 

3.准备2个普通账号,一个用于Ceph FS部署,一个用于Rbd   这里我创建2个账号,gfeng和gfeng-fs     首先:创建用于rbd的存储池并进行初始化等操作:

 

 

创建存储池:
[root@ceph-deploy ceph-cluster]# ceph osd pool create rbd-data1 32 32
pool 'rbd-data1' created
#验证存储池:
[ceph@ceph-deploy ceph-cluster]$ ceph osd pool ls

 

在存储池启用 rbd:  

[root@ceph-deploy ceph-cluster]# ceph osd pool application enable rbd-data1 rbd 

enabled application 'rbd' on pool 'rbd-data1'

 

初始化 rbd:
[root@ceph-deploy ceph-cluster]# rbd pool init -p rbd-data1

 

4.创建 img 镜像:

rbd 存储池并不能直接用于块设备,而是需要事先在其中按需创建映像(image),并把映 像文件作为块设备使用。rbd 命令可用于创建、查看及删除块设备相在的映像(image), 

以及克隆映像、创建快照、将映像回滚到快照和查看快照等管理操作。

 

 

创建镜像:

 

#创建两个镜像:
# rbd create data-img1 --size 5G --pool rbd-data --image-format 2 --image-feature layering
# rbd create data-img2 --size 10G --pool rbd-data --image-format 2 --image-feature layering

 

验证镜像:
#rbd ls --pool rbd-data 
data-img1
data-img2

 

列出镜像个多信息: 

#rbd ls --pool rbd-data -l 

NAME
SIZE PARENT FMT PROT LOCK
data-img1 5  GiB 2
data-img2 10 GiB 2

 

  5.准备普通账号:

创建普通账户
[root@ceph-deploy ceph-cluster]#ceph auth add client.gfeng mon 'allow r' osd 'allow rwx pool=rbd-data1'
added key for client.gfeng
验证用户信息
[root@ceph-deploy ceph-cluster]# ceph auth get client.gfeng

创建用 keyring 文件
[root@ceph-deploy ceph-cluster]#ceph-authtool -C ceph.client.gfeng.keyring
creating ceph.client.gfeng.keyring

Ceph集群里Rbd、Cephfs以及高可用性部署

 

 


导出用户 keyring
[root@ceph-deploy ceph-cluster]# ceph auth get client.gfeng -o ceph.client.gfeng.keyring
exported keyring for client.gfeng

查看生成的文件:

Ceph集群里Rbd、Cephfs以及高可用性部署

 

 

6.配置客户端使用 RBD:

在 centos 客户端挂载 RBD,使用普通账号 gfeng 及挂载 RBD 并验证使用。

客户端要想挂载使用 ceph RBD,需要安装 ceph 客户端组件 ceph-common,但是 ceph-common
不在 cenos 的 yum 仓库,因此需要单独配置 yum 源。
#配置 yum 源:
# yum install epel-release
# yum install
https://mirrors.aliyun.com/ceph/rpm-octopus/el7/noarch/ceph-release-1-1.el7.noarch.rpm -y

安装 ceph 客户端:

 

[root@ceph-client ~]# yum install ceph-common -y

 

7.同步普通用户认证文件:

[root@ceph-deploy ceph-cluster]#  scp ceph.conf ceph.client.gfeng.keyring root@客户端IP:/etc/ceph/

 

登录客户端验证权限:

cd /etc/ceph

[root@ceph-client  ceph]#ceph --user gfeng -s #查看集群状态,看是否能显示

Ceph集群里Rbd、Cephfs以及高可用性部署

 

 

 

使用普通用户权限映射 rbd 

[root@ceph-deploy ceph-cluster]#  rbd --user gfeng -p rbd-data map data-img1

[root@ceph-deploy ceph-cluster]#  rbd --user gfeng -p rbd-data map data-img1

如果出现如下提示:

rbd: sysfs write failed
RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd
feature disable rbd-data1/data-img1 object-map".
In some cases useful info is found in syslog - try "dmesg | tail".
rbd: map failed: (6) No such device or address #部分特性不支持,需要在 ceph 管理端关闭特性
object-map

管理端关闭 img data-img1 特性 object-map
[root@ceph-deploy ceph-cluster]# rbd feature disable rbd-data/data-img1 object-map

 [root@ceph-deploy ceph-cluster]# rbd feature disable rbd-data/data-img2 object-map

客户端再次映射,成功后执行lsblk查看

Ceph集群里Rbd、Cephfs以及高可用性部署

 

 

8.对rbd0和rbd1执行mkfs.xfs格式化操作,并创建2个挂载目录/data/ceph-disk0和/data/ceph-disk1

使用mount命令挂载:

mount /dev/rbd0 /data/ceph-disk0

mount /dev/rbd1 /data/ceph-disk1

最后执行df -h 查看

 

9.扩容测试:

rbd 镜像空间拉伸:

[root@ceph-deploy ceph-cluster]# rbd resize --pool rbd-data --image data-img2 --size 15G

[root@ceph-deploy ceph-cluster]# rbd ls -p rbd-data -l 查看结果

Ceph集群里Rbd、Cephfs以及高可用性部署

 

 

 

10.到客户端执行扩容操作并验证:

[root@ceph-client  ceph]#xfs_growfs /dev/rbd1

再次df -h 查看:

Ceph集群里Rbd、Cephfs以及高可用性部署

 

 

至此普通账号映射挂载,以及拉升扩容成功

 

Ceph FS部署:

 

1.要使用 cephFS,需要部署 cephfs 服务

在管理节点mgr1上执行:

root@ceph-mgr1:~# apt-cache madison ceph-mds
root@ceph-mgr1:~# apt install ceph-mds

部署完成后,登录到ceph-deploy上执行:

root@ceph-deploy:~/ceph-cluster#  ceph-deploy mds create ceph-mgr1

 

2.创建 CephFS metadata 和 data 存储池: 

使用 CephFS 之前需要事先于集群中创建一个文件系统,并为其分别指定元数据和数据相关
的存储池。下面创建一个名为 cephfs 的文件系统用于测试,它使用 cephfs-metadata 为元数
据存储池,使用 cephfs-data 为数据存储池:

创建存储池:

[root@ceph-deploy ceph-cluster]# ceph osd pool create cephfs-metadata 32 32
pool 'cephfs-metadata' created #保存 metadata 的 pool
[root@ceph-deploy ceph-cluster]#ceph osd pool create cephfs-data 64 64

 

3.创建 cephFS 并验证:

Ceph集群里Rbd、Cephfs以及高可用性部署

 

 

 执行:ceph mds stat 验证状态:

Ceph集群里Rbd、Cephfs以及高可用性部署

 

 

4.登录到ceph-deploy上创建普通账号gfeng-fs

 

创建普通账号并给与权限:

Ceph集群里Rbd、Cephfs以及高可用性部署

 

查看状态:

 Ceph集群里Rbd、Cephfs以及高可用性部署

 

 

 5.创建用 keyring 文件

Ceph集群里Rbd、Cephfs以及高可用性部署

   导出生成key文件

Ceph集群里Rbd、Cephfs以及高可用性部署

 

 

6.同步普通配置文件:

[root@ceph-deploy ceph-cluster]#  scp ceph.conf gfeng-key root@客户端IP:/etc/ceph/

 

7.客户端挂载测试

内核空间挂载 ceph-fs: 客户端挂载有两种方式,一是内核空间一是用户空间,内核空间挂载需要内核支持 ceph 模 块,用户空间挂载需要安装 ceph-fuse

首先分别在ceph-mon1,ceph-mon2,ceph-mon3上安装ceph-mds

[root@ceph-mon1 ~]# apt install ceph-mds -y
[root@ceph-mon2 ~]# apt install ceph-mds -y
[root@ceph-mon3 ~]# apt install ceph-mds -y

ceph-mds使用的端口为6789

执行挂载:

 

 

Ceph集群里Rbd、Cephfs以及高可用性部署

 

这里要指定刚才生成导出的key文件

写入数据测试:

Ceph集群里Rbd、Cephfs以及高可用性部署

 

 

服务端验证:

Ceph集群里Rbd、Cephfs以及高可用性部署

 

 

可以看到数据已经写入

 

高可用部署:

从上面刚才的配置,我们可以看到只有mgr1一个节点,所以这里打算加入3台,组成2主2备

 

1.安装ceph-mds

这里打算使用4台,分别是ceph-mgr1、ceph-mgr2、ceph-mon2、ceph-mon3

由于之前其他几台节点已经安装过ceph-mds,这里只需安装ceph-mgr2节点

[root@ceph-mgr2 ~]# apt install ceph-mds -y 

 

2:添加 MDS 服务器:

在部署节点ceph-deploy上操作:


root@ceph-deploy:~/ceph-cluster# ceph-deploy mds create ceph-mon2

按照上面操作,将其他2台也加入

如果出现如下报错:

Ceph集群里Rbd、Cephfs以及高可用性部署

 

 

执行强制同步:

root@ceph-deploy:~/ceph-cluster# ceph-deploy --overwrite-conf config push ceph-mon2

 

验证 mds 服务器当前状态:
root@ceph-deploy:~/ceph-cluster# ceph mds stat
mycephfs-1/1/1 up {0=ceph-mgr1=up:active}, 3 up:standby

发现有一主三备

当前处于激活状态的 mds 服务器有一台,处于备份状态的 mds 服务器有三台,设置处于激活状态 mds 的数量,设置为为两主两备

root@ceph-deploy:~/ceph-cluster#ceph fs set mycephfs max_mds 2

再次执行查看:

Ceph集群里Rbd、Cephfs以及高可用性部署

 

 执行ceph fs get mycephfs查看:

 

 Ceph集群里Rbd、Cephfs以及高可用性部署

 

 

3.高可用测试:

模拟故障,重启或停掉mon2节点服务

Ceph集群里Rbd、Cephfs以及高可用性部署

 

 

到服务端查看:

 

Ceph集群里Rbd、Cephfs以及高可用性部署

 

 

 发现ceph-mon3已经变成了主,而模拟故障的ceph-mon2节点则变成了备,高可用测试完成。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

       

 

 

 


 

 


 

 

 

 

   
上一篇:Proxmox VE + Ceph 超融合项目实战(第九部分:一些常用的Ceph/OSD命令)


下一篇:Ceph-mds