【分布式系统】Ceph块存储系统之RBD接口

目录

一.服务端操作

[1.创建一个名为 rbd-xy101 的专门用于 RBD 的存储池](#1.创建一个名为 rbd-xy101 的专门用于 RBD 的存储池)

[2.将存储池转换为 RBD 模式](#2.将存储池转换为 RBD 模式)

3.初始化存储池

4.创建镜像

5.管理镜像

6.Linux客户端使用

[6.1.在管理节点创建并授权一个用户可访问指定的 RBD 存储池](#6.1.在管理节点创建并授权一个用户可访问指定的 RBD 存储池)

6.2.修改RBD镜像特性,CentOS7默认情况下只支持layering和striping特性,需要将其它的特性关闭

6.3.将用户的keyring文件和ceph.conf文件发送到客户端的/etc/ceph目录下

二.客户端操作

1.查看

2.安装

3.执行客户端映射

4.查看映射

5.格式化并挂载

6.在线扩容

三.快照管理

1.客户端操作

2.服务端操作

3.客户端操作

4.服务器操作

5.客户端操作

6.服务器操作

四.快照分层

五.快照展平

六.镜像的导出导入

1.导出镜像

2.导入镜像

七.总结


接着之前的部署集群架构

一.服务端操作

1.创建一个名为 rbd-xy101 的专门用于 RBD 的存储池

ceph osd pool create rbd-xy101 64 

2.将存储池转换为 RBD 模式

ceph osd pool application enable rbd-xy101 rbd

3.初始化存储池

rbd pool init -p rbd-xy101			# -p 等同于 --pool

4.创建镜像

rbd create -p rbd-xy101 --image rbd-demo1.img --size 10G

5.管理镜像

//查看存储池下存在哪些镜像
rbd ls -l -p rbd-xy101

//查看镜像的详细信息
rbd info -p rbd-xy101 --image rbd-demo11.img
rbd image 'rbd-xy101.img':
	size 10 GiB in 2560 objects							#镜像的大小与被分割成的条带数
	order 22 (4 MiB objects)							#条带的编号,有效范围是12到25,对应4K到32M,而22代表2的22次方,这样刚好是4M
	snapshot_count: 0
	id: 5fc98fe1f304									#镜像的ID标识
	block_name_prefix: rbd_data.5fc98fe1f304			#名称前缀
	format: 2											#使用的镜像格式,默认为2
	features: layering, exclusive-lock, object-map, fast-diff, deep-flatten			#当前镜像的功能特性
	op_features: 																	#可选的功能特性
	flags: 

//修改镜像大小
rbd resize -p rbd-xy101 --image rbd-demo1.img --size 20G

rbd info -p rbd-xy101 --image rbd-demo1.img

#使用 resize 调整镜像大小,一般建议只增不减,如果是减少的话需要加选项 --allow-shrink
rbd resize -p rbd-xy101 --image rbd-demo1.img --size 5G --allow-shrink

//删除镜像
#直接删除镜像
rbd rm -p rbd-xy101 --image rbd-demo2.img
rbd remove rbd-xy101/rbd-demo2.img

#推荐使用 trash 命令,这个命令删除是将镜像移动至回收站,如果想找回还可以恢复
rbd trash move rbd-xy101/rbd-demo1.img

rbd ls -l -p rbd-xy101

rbd trash list -p rbd-xy101
5fc98fe1f304 rbd-demo1.img

#还原镜像
rbd trash restore rbd-xy101/5fc98fe1f304

rbd ls -l -p rbd-xy101

6.Linux客户端使用

客户端使用 RBD 有两种方式

  • 通过内核模块KRBD将镜像映射为系统本地块设备,通常设置文件一般为:/dev/rbd*
  • 另一种是通过librbd接口,通常KVM虚拟机使用这种接口

6.1.在管理节点创建并授权一个用户可访问指定的 RBD 存储池

指定用户标识为client.test-rbd,对另对OSD有所有的权限,对Mon有只读的权限
ceph auth get-or-create client.test-rbd osd "allow * pool=rbd-xy101" mon "allow r" > ceph.test-rbd.keyring

6.2.修改RBD镜像特性,CentOS7默认情况下只支持layering和striping特性,需要将其它的特性关闭

rbd feature disable rbd-xy101/rbd-demo1.img object-map,fast-diff,deep-flatten
rbd info rbd-xy101/rbd-demo1.img

6.3.将用户的keyring文件和ceph.conf文件发送到客户端的/etc/ceph目录下

scp ceph.client.test-rbd.keyring ceph.conf client:/etc/ceph

二.客户端操作

1.查看

2.安装

#安装 ceph-common 软件包
yum install -y ceph-common

3.执行客户端映射

rbd map rbd-xy101/rbd-demo1.img --keyring ceph.client.test-rbd.keyring --user test-rbd

4.查看映射

rbd showmapped
rbd device list

5.格式化并挂载

语法格式:
mkfs -t xfs /dev/rbd0  ##针对xfs文件系统
mkdir /opt/rbd/
mount /dev/rbd0 /opt/rbd/

umount /opt/rbd     #解挂
rbd unmap rbd-xy101/rbd-demo1.img   #取消映射

6.在线扩容

在管理节点调整镜像的大小
rbd resize <存储池名>/<镜像名称> --size 20G
 
在客户端刷新设备文件(扩容镜像后在线刷新)
xfs_growfs /dev/rbd0		#刷新xfs文件系统容量
resize2fs /dev/rbd0			#刷新ext4类型文件系统容量
 
xfs_growfs /dev/rbd0
df -hT

三.快照管理

对 rbd 镜像进行快照,可以保留镜像的状态历史,另外还可以利用快照的分层技术,通过将快照克

隆为新的镜像使用

1.客户端操作

//在客户端写入文件
echo 1111 > /data/bb/11.txt
echo 2222 > /data/bb/22.txt
echo 3333 > /data/bb/33.txt

2.服务端操作

//在管理节点对镜像创建快照
rbd snap create --pool rbd-xy101 --image rbd-demo1.img --snap demo1_snap1

可简写为:
rbd snap create rbd-xy101/rbd-demo1.img@demo1_snap1

//列出指定镜像所有快照
rbd snap list rbd-xy101/rbd-demo1.img

#用json格式输出:
rbd snap list rbd-xy101/rbd-demo1.img --format json --pretty-format

//回滚镜像到指定
在回滚快照之前,需要将镜像取消镜像的映射,然后再回滚

3.客户端操作

rm -rf /data/bb/*
umount /data/bb
rbd unmap rbd-xy101/rbd-demo1.img

4.服务器操作

rbd snap rollback rbd-xy101/rbd-demo1.img@demo1_snap1

5.客户端操作

rbd map rbd-xy101/rbd-demo1.img --keyring /etc/ceph/ceph.client.test-rbd.keyring --user test-rbd
mount /dev/rbd0 /data/bb
ls /data/bb				#发现数据还原回来了

6.服务器操作

//限制镜像可创建快照数
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

四.快照分层

快照分层支持用快照的克隆生成新镜像,这种镜像与直接创建的镜像几乎完全一样,支持镜像的所

有操作。唯一不同的是克隆镜像引用了一个只读的上游快照,而且此快照必须要设置保护模式

#快照克隆
1)将上游快照设置为保护模式:
rbd snap create rbd-xy101/rbd-demo1.img@demo1_snap666

rbd snap protect rbd-xy101/rbd-demo1.img@demo1_snap666

2)克隆快照为新的镜像
rbd clone rbd-xy101/rbd-demo1.img@demo1_snap666 --dest rbd-xy101/rbd-demo666.img

rbd ls -p rbd-xy101

3)命令查看克隆完成后快照的子镜像
rbd children rbd-xy101/rbd-demo1.img@demo1_snap666

五.快照展平

通常情况下通过快照克隆而得到的镜像会保留对父快照的引用,这时候不可以删除该父快照,否会

有影响

rbd snap rm rbd-xy101/rbd-demo1.img@demo1_snap666
#报错 snapshot 'demo1_snap666' is protected from removal.

如果要删除快照但想保留其子镜像,必须先展平其子镜像,展平的时间取决于镜像的大小

1) 展平子镜像
rbd flatten rbd-xy101/rbd-demo666.img
2)取消快照保护
rbd snap unprotect rbd-xy101/rbd-demo1.img@rbd-demo1.snap666
3)删除快照
rbd snap rm rbd-xy101/rbd-demo1.img@rbd-demo1.snap666
 
 
rbd ls -l -p rbd-demo            #在删除掉快照后,查看子镜像依然存在

六.镜像的导出导入

1.导出镜像

rbd export rbd-xy101/rbd-demo666.img /opt/rbd-demo666.img

2.导入镜像

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.test-rbd.keyring --user test-rbd
rbd showmapped  #查看
mount /dev/rbd0 /opt/rbd/
ls /opt/rbd

七.总结

RBD操作

服务端

ceph osd pool create RBD-Pool名  PG数据                   #创建RBD存储用的Pool
ceph osd pool application enable RBD-Pool名 rbd           #将Pool转换为RBD模式
rbd pool init -p  RBD-Pool名                              #RBD初始化
rbd create -p RBD-Pool名 --image 镜像名 --size 镜像大小    #创建RBD镜像
rbd create  RBD-Pool名/镜像名  --size 镜像大小
rbd ls -l -p RBD-Pool名                                   #查看Pool中的镜像列表
rbd info  -p RBD-Pool名 --image 镜像名                    #查看镜像的详细信息
rbd rm|remove  -p RBD-Pool名 --image 镜像名               #直接删除镜像
rbd trash move  -p RBD-Pool名 --image 镜像名              #临时删除镜像
rbd trash list -p RBD-Pool名                              #查看被临时删除的镜像列表和镜像恢复ID
rbd trash restore  RBD-Pool名/镜像恢复ID                  #恢复被临时删除的镜像

ceph auth get-or-create client.用户名 osd "allow * pool=RBD-Pool名" mon "allow r" > ceph.client.用户名.keyring      
#给用户授权访问RBD-Pool
rbd feature disable RBD-Pool名/镜像名 object-map,fast-diff,deep-flatten                                             #关闭不支持的RBD镜像特性

rbd resize  RBD-Pool名/镜像名 --size 镜像大小             #扩容镜像大小

客户端

bd map RBD-Pool名/镜像名 --keyring ceph.client.用户名.keyring --user 用户名         
#在客户端映射RBD镜像
rbd showmapped      rbd device list                                                  
#查看映射信息
mkfs -t xfs /dev/rbd0                                                                
#格式化并挂载使用
mount /dev/rbd0  本地挂载点目录

xfs_growfs  /dev/rbd0                                     
#刷新扩容后的容量

umount /dev/rbd0                                          
#解挂并断开映射
rbd unmap  RBD-Pool名/镜像名

RBD快照操作

rbd snap create -p RBD-Pool名 --image 镜像名 --snap 快照名       #创建镜像的快照
rbd snap create  RBD-Pool名/镜像名@快照名
rbd snap list  RBD-Pool名/镜像名                                 #查看镜像的快照列表
rbd snap rollback  RBD-Pool名/镜像名@快照名                      #根据快照回滚镜像
rbd snap rm  RBD-Pool名/镜像名@快照名                            #删除镜像的一个快照
rbd snap purge  RBD-Pool名/镜像名                               #清空镜像的索引快照
rbd snap protect RBD-Pool名/镜像名@快照名                        #设置快照为保护模式
rbd snap unprotect RBD-Pool名/镜像名@快照名                      #关闭快照的保护模式

rbd clone RBD-Pool名/镜像名@快照名 --dest RBD-Pool名/子镜像名     #根据快照克隆子镜像
rbd flatten  RBD-Pool名/子镜像名                                 #将子镜像展平

rbd export  RBD-Pool名/镜像名  镜像文件路径                       #将镜像导出成文件
rbd import  镜像文件路径  RBD-Pool名/镜像名                       #将文件导入成镜像
相关推荐
升讯威在线客服系统9 分钟前
如何通过 Docker 在没有域名的情况下快速上线客服系统
java·运维·前端·python·docker·容器·.net
Karoku0662 小时前
【CI/CD】CI/CD环境搭建流程和持续集成环境配置
运维·ci/cd·docker·容器·kubernetes·prometheus
夜泉_ly2 小时前
MySQL -安装与初识
数据库·mysql
qq_529835353 小时前
对计算机中缓存的理解和使用Redis作为缓存
数据库·redis·缓存
勤奋的凯尔森同学5 小时前
webmin配置终端显示样式,模仿UbuntuDesktop终端
linux·运维·服务器·ubuntu·webmin
月光水岸New6 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山6756 小时前
数据库基础1
数据库
我爱松子鱼6 小时前
mysql之规则优化器RBO
数据库·mysql
chengooooooo6 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
Rverdoser7 小时前
【SQL】多表查询案例
数据库·sql