分布式系统—Ceph块存储系统(RBD接口)

目录

一、服务端操作

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

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

[3 初始化存储池](#3 初始化存储池)

[4 创建镜像](#4 创建镜像)

[5 管理镜像](#5 管理镜像)

6.Linux客户端使用

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

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

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

二.客户端操作

[1 查看](#1 查看)

[2 安装](#2 安装)

[3 执行客户端映射](#3 执行客户端映射)

[4 查看映射](#4 查看映射)

[5 格式化并挂载](#5 格式化并挂载)

[6 在线扩容](#6 在线扩容)

三、快照管理

[1 客户端操作](#1 客户端操作)

[2 服务端操作](#2 服务端操作)

[3 客户端操作](#3 客户端操作)

[4 服务器操作](#4 服务器操作)

[5 客户端操作](#5 客户端操作)

[6 服务器操作](#6 服务器操作)

四、快照分层

五、快照展平

六、镜像的导出导入

[1 导出镜像](#1 导出镜像)

[2 导入镜像](#2 导入镜像)


先将上一篇博客client节点挂载内容解挂!

一、服务端操作

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虚拟机使用这种接口
在管理节点创建并授权一个用户可访问指定的 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
修改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
将用户的keyring文件和ceph.conf文件发送到客户端的/etc/ceph目录下

二.客户端操作

1 查看

复制代码
scp ceph.client.test-rbd.keyring ceph.conf client:/etc/ceph

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
相关推荐
Avan_菜菜1 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
SelectDB2 天前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
zzzzzz3103 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
XIAOHEZIcode3 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220704 天前
如何搭建本地yum源(上)
运维
大树887 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠7 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质7 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
小宇宙Zz7 天前
Maven依赖冲突
java·服务器·maven
Inhand陈工7 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信