一、前言
Ceph RBD(Rados Block Device)是 Ceph 存储解决方案的一部分,它提供了一个分布式块设备服务,允许用户创建和管理虚拟块设备,类似于传统的本地磁盘,Ceph RBD 是一个高度可扩展的存储解决方案,可以根据需要动态地扩展存储容量和性能,还支持快照和克隆功能,允许用户创建块设备的快照,并在需要时基于这些快照创建新的克隆设备
快照(Snapshot):RBD 镜像支持快照功能,允许用户在任何时间点捕获 RBD 镜像的快照。快照是镜像在某个时间点的只读视图,可以用于数据备份、恢复、测试等用途。Ceph RBD 提供了快速、轻量级的快照功能,使用户能够快速创建和管理快照
克隆(Clone):RBD 镜像支持克隆功能,允许用户基于现有的快照创建新的镜像。克隆是一种轻量级的方式来创建新的镜像,可以在快速、高效地创建新的镜像副本时使用
镜像层叠(Layering):RBD 镜像支持镜像层叠功能,允许用户创建基于现有镜像的多个镜像副本。这种层叠结构可以节省存储空间,并简化镜像管理,因为所有的镜像共享相同的基础数据
复制(Replication):RBD 镜像支持复制功能,允许用户在不同的 Ceph 存储集群之间复制镜像数据。这种复制功能可以用于数据备份、灾难恢复等场景,确保数据的安全性和可用性
加密(Encryption):RBD 镜像支持加密功能,可以对镜像数据进行加密保护。这种加密功能可以保护敏感数据免受未经授权的访问和窃取,确保数据的机密性和安全性
二、部署
创建存储池
bash
ceph osd pool create rbd-data 32 32
使用该存储池开启rbd服务
bash
ceph osd pool application enable rbd-data rbd
初始化rbd服务
bash
rbd pool init -p rbd-data
创建img镜像(rbd块不能直接使用,需要先创建img镜像,通过挂载img镜像去使用)
bash
rbd create data-img --size 3G --pool rbd-data --image-format 2 --image-feature layering
--image-format 2
:指定了镜像的格式。在这里,指定的格式是 2。RBD 支持不同的镜像格式,其中格式 2 是最常用的格式,它支持更多的特性和功能
-image-feature layering
:这是一个镜像特性(Image Feature),指定了镜像支持的特性之一。layering
特性允许创建具有写时复制(Copy on Write,COW)特性的快照。使用 layering
特性创建的镜像可以更高效地管理快照,并支持更多的快照操作
镜像特性
layering:允许使用镜像层叠功能。启用此特性后,可以创建基于现有镜像的快照,并将其用作父镜像以创建克隆
striping:允许对镜像进行条带化(striping)。条带化可以提高 I/O 性能,并允许并行访问镜像数据
exclusive-lock:启用独占锁定功能。启用此特性后,只有一个客户端可以对镜像进行写入操作,防止多个客户端之间的冲突
object-map :启用对象映射功能。对象映射是一种元数据结构,用于跟踪每个块的使用情况,以便在执行快照、克隆等操作时提高性能,此特性依赖于exclusive-lock
fast-diff :启用快速差异计算功能。快速差异计算允许快速计算两个快照之间的差异,并只传输变更部分,从而加速快照复制和恢复操作,此特性依赖于object-map
deep-flatten:启用深度平铺功能。深度平铺允许将镜像快照展开成扁平的镜像,从而减少快照链的深度,并提高性能
启用镜像的指定特性
bash
rbd feature enable exclusive-lock --pool rbd-data --image data-img
禁用镜像的指定特性
bash
rbd feature enable exclusive-lock --pool rbd-data --image data-img
查看img镜像
bash
rbd ls --pool rbd-data -l
查看img镜像的详细信息
bash
rbd --pool rbd-data --image data-img info
三、使用
在centos主机挂载rbd块使用
需要在客户端主机安装ceph-common组件,也需要在管理节点拷贝ceph.conf和keyring密钥文件
安装ceph-common组件
vi /etc/yum.repos.d/ceph.repo
bash
[Ceph]
name=Ceph
baseurl=https://mirrors.aliyun.com/ceph/rpm-15.2.9/el7/x86_64/
enabled=1
gpgcheck=0
[Ceph-noarch]
name=Ceph noarch packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-15.2.9/el7/noarch/
enabled=1
gpgcheck=0
安装
bash
yum -y install epel-release
yum -y install ceph-common
从ceph管理节点拷贝文件
bash
scp /etc/ceph/ceph.conf /etc/ceph/ceph.client.admin.keyring root@10.1.60.118:/etc/ceph
客户端映射rbd镜像
bash
rbd -p rbd-data map data-img
查看映射的镜像
bash
lsblk
格式化磁盘
bash
mkfs.xfs /dev/rbd0
创建挂载目录
bash
mkdir /data/data1
挂载磁盘
bash
mount /dev/rbd0 /data/data1
查看挂载磁盘
bash
df -Th
扩容rbd镜像
这里我多创建了一个叫cs的镜像用于测试
并用于挂载后写入了数据
扩容镜像
bash
rbd resize --pool rbd-data --image cs --size 4G
rbd info --pool rbd-data --image cs
查看客户端会发现磁盘扩容了,但是挂载的文件系统没有扩容
这是因为文件系统需要手动去调整,这里因为之前初始化用的是xfs文件系统,所以需要用xfs文件系统的命令调整,执行完后会发现文件系统也扩容到了4G
bash
xfs_growfs /dev/rbd1
df -Th
查看文件,会发现并没有影响到原本存在的文件
bash
ls /mnt/cs
rbd镜像快照
创建镜像快照,快照并不会占用存储空间
bash
rbd snap create --pool rbd-data --image cs --snap cs-snap02
查看快照
bash
rbd snap list --pool rbd-data --image cs
快照恢复
先删除一部分文件
接下来进入恢复步骤
需要先卸载挂载目录(如果先恢复,再卸载目录,挂载会报错)
bash
cd ~
umount /mnt/cs
回滚快照
bash
rbd snap rollback --pool rbd-data --image cs --snap cs-snap02
挂载目录
bash
mount /dev/rbd1 /mnt/cs
查看目录文件
bash
ls /mnt/cs
可以看到恢复完成
快照删除
bash
rbd snap rm --pool rbd-data --image cs --snap cs-snap #删除特定镜像
rbd snap purge --pool rbd-data --image cs #删除所有镜像