ceph rbd部署与使用

一、前言

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    #删除所有镜像
相关推荐
石兴稳1 天前
iSCSI 和SCSI的概述
ceph
骑鱼过海的猫1231 天前
【java】java通过s3访问ceph报错
java·ceph·iphone
石兴稳1 天前
Ceph 中PG与PGP的概述
ceph
石兴稳1 天前
Ceph后端两种存储引擎介绍
ceph
墨水\\3 天前
分布式----Ceph部署(上)
分布式·ceph
斯普信专业组9 天前
CephFS管理秘籍:全面掌握文件系统与MDS守护程序命令
ceph·cephfs
45° 微笑12 天前
k8s集群 ceph rbd 存储动态扩容
ceph·容器·kubernetes·rbd
查士丁尼·绵12 天前
ceph补充介绍
ceph
Hello.Reader14 天前
Ceph 存储系统全解
分布式·ceph
Clarence_Ls17 天前
<十六>Ceph mon 运维
运维·ceph