命令记不住

登陆

Ceph 存储 RBD

01.Ceph存储RBD

1.存储类型介绍

1.块存储(RBD)

优点:存储速度较快
缺点:不支持共享存储
应用场景:虚拟机硬盘
典型设备:raid,硬盘

2.文件存储CephFS

优点:支持共享存储
缺点:读写速度较慢,需要经过操作系统处理再转为块存储
应用场景:文件共享,多台服务器共享使用同一个存储
典型设备:FTP,NFS

3.对象存储(Object)

优点:具备块存储的读写性能和文件存储的共享特性
缺点:操作系统不能直接访问,只能通过应用程序级别的API访问
应用场景:图片存储,视频存储
典型设备:阿里云OSS,腾讯云COS

2.RBD块存储使用

1.RBD工作流程

1.客户端创建一个pool,并指定pg数量,创建rbd设备并挂载到文件系统
2.用户写入数据,ceph进行数据切块,每个块的大小默认为4M,每个块名字是object+序号
3.将每个object通过pg进行副本位子的分配
4.pg根据cursh算法会寻找3个osd,把这个object分别保存在这3个osd上存储
5.osd实际把硬盘格式化为xfs文件系统,object存储在这个文件系统就相当存储了一个文件rbd0.object1.file

2.RBD常用命令

# 创建块设备映像
rbd create
# 列出rbd存储池中的块设备
rbd ls
# 查看块设备信息
rbd info
# 可以统计rbd使用量
rbd diff
# 映射块设备
rbd map
# 查看已映射块设备
rbd showmapped
# 删除块设备
rbd remove
# 更改块设备的大小
rbd resize

3.RBD创建并使用

3.1 创建存储池

# 格式
ceph osd pool create <pool-name> <pg数量>
ceph osd pool create rbd-pool 256
ceph osd pool ls
# pg数量设置建议,PG数量=(osd数量x100)/副本数(默认3),一般设置结果是向上取2的N次方
例如:(6*100)/3=200;pool指定的pg数量是256

3.2 指定存储池使用存储类型

# 设定存储池类型为rbd
ceph osd pool application enable rbd-pool rbd

3.3 创建一个10G的设备

# 格式
rbd create --sieze {megabytes} {pool-name}/{image-name}
rbd create --size 10240 rbd-pool/image01

3.4 查看块设备

rbd ls rbd-pool
rbd info rbd-pool/image01

节点本地挂载使用块设备

3.5 映射块设备

# 任意节点可以进行挂载
rbd feature disable rbd-pool/image01 object-map fast-diff deep-flatten
rbd map rbd-pool/image01

3.6 格式化块设备

mkfs.xfs /dev/rbd0

3.7 挂载

mount /dev/rbd0 /mnt/

3.8 取消挂载和内核映射

umount /mnt
rbd unmap rbd-pool/image01

远程挂载使用块设备

3.9 拷贝配置文件和密钥

cd my-cluster
scp  ceph.conf     xxx:/etc/ceph
scp ceph.client.admin.keyring     xxx:/etc/ceph

4.0 安装ceph客户端

 yum -y install  ceph-common

4.1 像本地方式一样挂载

# 映射块设备
rbd feature disable rbd-pool/image02 object-map fast-diff deep-flatten
rbd map rbd-pool/image02
# 格式化块设备
mkfs.xfs /dev/rbd0
# 挂载
mount /dev/rbd0 /mnt/
# 取消挂载和内核映射
umount /mnt
rbd unmap rbd-pool/image02

3.RBD快照和克隆

快照:在某个时间点的副本,当系统出现问题,可以通过恢复快照来恢复之前副本状态

1.创建快照

rbd snap create rbd-pool/image01@snap01

2.查看快照

rbd snap list rbd-pool/image01
rbd snap ls rbd-pool/image01
rbd ls -l

3.还原快照

# 还原快照前需要先取消挂载和内核映射,否则会出错
umount /mnt
rbd unmap rbd-pool/image01
rbd snap rollback rbd-pool/image01@snap01

4.重新映射并挂载验证

rbd map rbd-pool/image01
mount /dev/rbd0 /mnt

5.删除快照

rbd snap rm rbd-pool/image01@snap01

克隆:基于指定的块设备克隆出相同的一份出来

1.创建一个块设备

rbd create --size 10240 rbd-pool/image03

2.创建快照

rbd snap create rbd-pool/image03@snap01

3.设置快照处于被保护状态

rbd snap protect rbd-pool/image03@snap01

4.通过快照克隆一个新块设备

rbd clone rbd-pool/image03@snap01 rbd-pool/image04
rbd info rbd-pool/image04

5.将克隆的块设备独立于父块设备

rbd flatten rbd-pool/image04
推荐阅读