目录
1.1 创建一个名为 rbd-xy101 的专门用于 RBD 的存储池
2.1 在管理节点创建并授权一个用户可访问指定的 RBD 存储池
2.3 将用户的keyring文件和ceph.conf文件发送到客户端的/etc/ceph目录下
将上一篇博客client节点挂载内容解挂
1.创建 Ceph 块存储系统 RBD 接口
服务端
1.1 创建一个名为 rbd-xy101 的专门用于 RBD 的存储池
ceph osd pool create rbd-xy101 64
ceph osd pool application enable rbd-xy101 rbd #将poll转化为rbd模式
rbd pool init -p rbd-xy101 #rbd初始化
1.2 创建镜像
rbd create -p rbd-xy101 --image rbd-demo1.img --size 10G #创建镜像
1.3 查看镜像
rbd ls -l -p rbd-xy101 #查看pool中镜像列表
rbd info -p rbd-xy101 --image rbd-demo1.img #查看镜像详细信息
1.4 修改镜像大小
rbd resize -p rbd-xy101 --image rbd-demo1.img --size 20G #扩大镜像大小
#使用 resize 调整镜像大小,一般建议只增不减,如果是减少的话需要加选项 --allow-shrink
rbd resize -p rbd-xy101 --image rbd-demo1.img --size 5G --allow-shrink
1.5 删除镜像
#删除镜像
rbd rm|remove -p rbd-xy101 --image rbd-demo1.img
或
rbd rm rbd-xy101/rbd-demo1.img
1.6 临时删除镜像
rbd trash move -p rbd-xy101 --image rbd-demo1.img #删除放在回收站,可恢复
等于 rbd trash move rbd-xy101/rbd-demo1.img
rbd trash list -p rbd-xy101 #查看被临时删除的镜像列表和镜像恢复id
rbd trash restore rbd-xy101/ #恢复被临时删除的镜像
2.Linux客户端使用
客户端使用 RBD 有两种方式:
●通过内核模块KRBD将镜像映射为系统本地块设备,通常设置文件一般为:/dev/rbd*
●另一种是通过librbd接口,通常KVM虚拟机使用这种接口。
本例主要是使用Linux客户端挂载RBD镜像为本地磁盘使用。开始之前需要在所需要客户端节点上面安装ceph-common软件包,因为客户端需要调用rbd命令将RBD镜像映射到本地当作一块普通硬盘使用。并还需要把ceph.conf配置文件和授权keyring文件复制到对应的节点。
2.1 在管理节点创建并授权一个用户可访问指定的 RBD 存储池
ceph auth get-or-create client.<用户名> osd "allow * pool=<存储池名>" mon "allow r" > /etc/ceph/<用户名>.keyring
ceph auth get-or-create client.osd-mount osd "allow * pool=rbd-xy101" mon "allow r" > ceph.client.osd-mount.keyring
2.2 修改RBD镜像特性
CentOS7默认情况下只支持layering和striping特性,需要将其它的特性关闭
rbd feature disable rbd-xy101/rbd-demo1.img object-map, fast-diff, deep-flatten
2.3 将用户的keyring文件和ceph.conf文件发送到客户端的/etc/ceph目录下
scp ceph.client.osd-mount.keyring ceph.conf client:/etc/ceph/
客户端操作
2.4 安装 ceph-common 软件包
//linux客户端操作
#安装 ceph-common 软件包
yum install -y ceph-common
2.5 执行客户端映射
语法格式
rbd map <存储池名>/<镜像名称> --keyring /etc/ceph/<用户名>.keyring --user <用户名>
rbd map rbd-xy101/rbd-demo1.img --keyring ceph.client.osd-mount.keyring --user osd-mount
2.6 查看映射状态
rbd showmapped
rbd device list
2.7 格式化并挂载
语法格式:
mkfs -t xfs /dev/rbd0 ##针对xfs文件系统
mkdir /opt/rbd/
mount /dev/rbd0 /opt/rbd/
umount /opt/rbd #解挂
rbd unmap rbd-xy101/rbd-demo1.img #取消映射
2.8 在线扩容
在管理节点调整镜像的大小
rbd resize <存储池名>/<镜像名称> --size 20G
在客户端刷新设备文件(扩容镜像后在线刷新)
xfs_growfs /dev/rbd0 #刷新xfs文件系统容量
resize2fs /dev/rbd0 #刷新ext4类型文件系统容量
xfs_growfs /dev/rbd0
df -hT
3.快照管理
对 rbd 镜像进行快照,可以保留镜像的状态历史,另外还可以利用快照的分层技术,通过将快照克隆为新的镜像使用。
在管理节点对镜像创建快照
rbd snap create -p rbd-xy101 --image rbd-demo1.img --snap rbd-demo1.snap1
可简写为:
rbd snap create rbd-xy101/[email protected]
列出指定镜像所有快照
rbd snap list -p rbd-xy101 --image rbd-demo1.img
#用json格式输出:
rbd snap list rbd-demo/rbd-demo1.img --format json --pretty-format
回滚镜像到指定
在回滚快照之前,需要将镜像取消镜像的映射,然后再回滚。
#在客户端操作 取消映射
rm -rf /opt/rbd/*
umount /opt/rbd
rbd unmap rbd-xy101/rbd-demo1.img
#在管理节点操作
rbd snap rollback rbd-xy101/[email protected]
rbd snap rollback <存储池名>/<镜像名称>@<快照名称>
#在客户端重新映射并挂载
rbd map rbd-xy101/rbd-demo1.img --keyring ceph.client.osd-mount.keyring --user osd-mount
mount /dev/rbd0 /opt/rbd/
ls /opt/rbd #发现数据还原回来了
限制镜像可创建快照数
rbd snap limit set rbd-xy101/rbd-demo1.img --limit 3
解除限制
rbd snap limit clear rbd-xy101/rbd-demo1.img
删除快照
#删除指定快照:
rbd snap rm rbd-xy101/rbd-demo1.img@demo1_snap1
#删除所有快照:
rbd snap purge rbd-xy101/rbd-demo1.img
4.快照分层
快照分层支持用快照的克隆生成新镜像,这种镜像与直接创建的镜像几乎完全一样,支持镜像的所有操作。唯一不同的是克隆镜像引用了一个只读的上游快照,而且此快照必须要设置保护模式。
快照克隆
1)将上游快照设置为保护模式:rbd snap protect rbd-xy101/[email protected]
2)克隆快照为新的镜像rbd clone rbd-xy101/[email protected] --dest rbd-xy101/rbd-demo666.img
rbd ls -l -p rbd-xy101 #查看
3)命令查看克隆完成后快照的子镜像
rbd children myrbd/[email protected]
5.快照展平
通常情况下通过快照克隆而得到的镜像会保留对父快照的引用,这时候不可以删除该父快照,否则会有影响。
rbd snap rm rbd-xy101/[email protected]
#报错 snapshot '666.snap1' is protected from removal.
如果要删除快照但想保留其子镜像,必须先展平其子镜像,展平的时间取决于镜像的大小
1) 展平子镜像rbd flatten rbd-xy101/rbd-demo666.img
2)取消快照保护
rbd snap unprotect rbd-xy101/[email protected]
3)删除快照
rbd snap rm rbd-xy101/[email protected]
rbd ls -l -p rbd-demo #在删除掉快照后,查看子镜像依然存在
6.镜像导入导出
导出镜像
rbd export rbd-xy101/rbd-demo666.img /opt/rbd-demo666.img
导入镜像
client节点
#取消挂载、映射
umount /opt/rbd
rbd unmap rbd-xy101/rbd-demo1.img
admin节点
#清除镜像下的所有快照,并删除镜像
rbd snap rm rbd-xy101/rbd-demo1.img --snap rbd-demo1.snap1 #删除快照
rbd rm rbd-xy101/rbd-demo1.img
rbd rm rbd-xy101/rbd-demo666.img #删除镜像
#导入镜像
rbd import /opt/rbd-demo666.img rbd-xy101/rbd-demo666.img
rbd ls -l -p rbd-xy101
admin节点
CentOS7默认情况下只支持layering和striping特性,需要将其它的特性关闭
bd feature disable rbd-xy101/rbd-demo666.img object-map, fast-diff, deep-flatten
rbd info rbd-xy101/rbd-demo666.img #查看镜像详细情况
client节点重新做映射、挂载
rbd map rbd-xy101/rbd-demo666.img --keyring ceph.client.osd-mount.keyring --user osd-mount
rbd showmapped #查看
mount /dev/rbd0 /opt/rbd/
ls /opt/rbd