
01.Ceph存储RBD
1.存储类型介绍
1.块存储(RBD)
优点:存储速度较快 缺点:不支持共享存储 应用场景:虚拟机硬盘 典型设备:raid,硬盘2.文件存储CephFS
优点:支持共享存储 缺点:读写速度较慢,需要经过操作系统处理再转为块存储 应用场景:文件共享,多台服务器共享使用同一个存储 典型设备:FTP,NFS3.对象存储(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.file2.RBD常用命令
# 创建块设备映像 rbd create # 列出rbd存储池中的块设备 rbd ls # 查看块设备信息 rbd info # 可以统计rbd使用量 rbd diff # 映射块设备 rbd map # 查看已映射块设备 rbd showmapped # 删除块设备 rbd remove # 更改块设备的大小 rbd resize3.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数量是2563.2 指定存储池使用存储类型
# 设定存储池类型为rbd ceph osd pool application enable rbd-pool rbd3.3 创建一个10G的设备
# 格式 rbd create --sieze {megabytes} {pool-name}/{image-name} rbd create --size 10240 rbd-pool/image013.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/image013.6 格式化块设备
mkfs.xfs /dev/rbd03.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/ceph4.0 安装ceph客户端
yum -y install ceph-common4.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@snap012.查看快照
rbd snap list rbd-pool/image01 rbd snap ls rbd-pool/image01 rbd ls -l3.还原快照
# 还原快照前需要先取消挂载和内核映射,否则会出错 umount /mnt rbd unmap rbd-pool/image01 rbd snap rollback rbd-pool/image01@snap014.重新映射并挂载验证
rbd map rbd-pool/image01 mount /dev/rbd0 /mnt5.删除快照
rbd snap rm rbd-pool/image01@snap01克隆:基于指定的块设备克隆出相同的一份出来
1.创建一个块设备
rbd create --size 10240 rbd-pool/image032.创建快照
rbd snap create rbd-pool/image03@snap013.设置快照处于被保护状态
rbd snap protect rbd-pool/image03@snap014.通过快照克隆一个新块设备
rbd clone rbd-pool/image03@snap01 rbd-pool/image04 rbd info rbd-pool/image045.将克隆的块设备独立于父块设备
rbd flatten rbd-pool/image04