一. 创建镜像:
1、创建存储池:
[root@node2 ~]# ceph osd pool create cephrbd 128
这里,cephrbd 是存储池的名称。
通常在创建pool之前,需要覆盖默认的pg_num,官方推荐:
若少于5个osD,设置 pg_num 为128。
5~10个oSD,设置 pg_num 为512。
10~50个osD,设置 pg_num 为4096。
超过50个osD,可以参考pgcalc计算。
创建默认的rbd池:
[root@node2 ~]# ceph osd pool create rbd 128
## 启动存储出
[rootenode2 ~]# ceph osd pool application enable rbd(存储池名称) rbd
(存储池关联的应用类型)
存储池关联的应用类型: rbd表示块设备存储类型
cephfs表示文件存储类型
rgw表示对象存储类型
2、查看存储池:
[root@node2 ~]# ceph osd lspools
[root@node2 ~]# ceph osd pool ls
## 获取池用量统计数据
[root@node2 ~]# ceph df
## 获取osd上磁盘使用量统计数据
[root@node2 ~]# ceph osd df
## 获取池性能统计数据
[root@node2 ~]# ceph osd pool stats
3. 删除存储池:
#ceph osd pool delete {pool-name} [{pool-name} --yes-i-really-really-really-mean-it]
## 删除池,池的名字要写两次
[root@node2 ~]# ceph osd pool delete rbd rbd --yes-i-really-really-mean-it
## 在ceph配置文件中加一个参数在[global]标签下
[root@node2 ~]# vim /etc/ceph/ceph.conf
[global]
mon_allow_pool_delete = true
## 重启ceph-mon.target服务
[root@node2 ~]# systemctl restart ceph-mon.target
4. 重命名存储池:
[root@node2 ~]# ceph osd pool rename {current-pool-name} {new-poo1-name}
5. 修改池参数:
## 修改池参数
[root@node2 ~]# ceph osd pool set pool-name parameter(参数名) value(参数值)
## 获取池参数
[root@node2 ~]# ceph osd pool get pool-name parameter(参数名)
## 列出所有参数及其值
[root@node2 ~]# ceph osd pool get pool-name all
6. 创建名为image的镜像:
语法格式:
rbd create --size {megabytes} {pool-name}/{image-name}
## RBD创建示例1,如果不指定存储池,默认为rbd
[root@node2 ~]# rbd create -p rbd --image rbd-demo.img --image-feature layering --size 10G
## RBD创建示例2,存储池名/镜像名
[root@node2 ~]# rbd create rbd/rbd-demo2.img --image-feature layerfing --size 10G
7. 查看块设备镜像:
[root@node2 ~]# rbd list
[root@node2 ~]# rbd ls
[root@node2 ~]# rbd info rbd/rbd-demo.img
8. 删除块设备镜像:
语法格式:
rbd rm {pool-name}/{image-name}
[root@node2 ~]# rbd rm rbd/rbd-demo2.img
二. 动态调整:
1. 扩充镜像容量:
[root@node2 ~]# rbd resize --size 15G rbd-demo.img
[root@node2 ~]# rbd info rbd-demo.img
2. 缩减镜像容量:
[root@node2 ~]# rbd resize --size 10G rbd-demo.img --allow-shrink
[root@node2 ~]# rbd info rbd-demo.img
3. 复制镜像:
[root@node2 ~]# rbd cp src-image-name(源镜像名) des-image-name(目标镜像名)
4. 移动镜像,类似于重命名:
[root@node2 ~]# rbd mv src-image-name des-image-name
5. RBD的删除与回复:
## 删除RBD可以先将其移动到回收站
[root@node2 ~]# rbd trash mv [pool-name]/image-name
## 从回收站删除RBD
[root@node2 ~]# rbd trash rm [pool-name]/image-name
## 从回收站恢复RBD
[root@node2 ~]# rbd trash restore image-id
## 查看当前回收站中的RBD,可以查看到镜像的id
[root@node2 ~]# rbd trash ls [pool-name]
三. 客户端访问:
1. 客户端需要安装ceph-common软件包:
[root@client ~]# yum install ceph-common
[root@client ~]# ls /etc/ceph/
ceph.client.admin.keyring ceph.conf rbdmap tmp_o0jaD
2. 将块设备映射到系统内核,
所有的映射都要在客户端进行
:
[root@client ~]# rbd device map rbd-demo1.img
/dev/rbd0
[root@client ~]# lsblk
## 取消映射
[root@client ~]# rbd device unmap rbd-demo1.img
3. 查看映射:
[root@client ~]# rbd showmapped
4. 客户端格式化,挂载分区:
[root@client ~]# mkfs.xfs /dev/rbd0
[root@client -]# mkdir /mnt/ceph-block
[root@client ~]# mount /dev/rbd0 /mnt/ceph-block
[root@client ~]# echo "test">/mnt/ceph-block/test.txt
四. 创建镜像快照
:
1. 查看镜像快照:
[root@node2 ~]# rbd snap ls image
2. 给镜像创建快照:
[root@node2 ~]# rbd snap create rbd/rbd-demo.img --snap snep1(快照名)
## 查看镜像快照
[root@node2 ~]# rbd snap ls rbd/rbd-demo.img
3. 删除客户端写入的测试文件:
[root@client ~]# rm -f /mnt/ceph-bock/test.txt
[root@client ~]# umount /mnt/ceph-block
4. 还原快照:
[root@node2 ~]#rbd snap rollback rbd/rbd-demo.img --snap snap1
## 客户端重新挂载
[root@client ~]# mount /dev/rbd0 /mnt/ceph-block/
## 检查文件
[root@client ~]# ls /mnt/ceph-block
test.txt
五. 创建快照克隆:
1. 克隆快照,用快照克隆新的镜像,首先保护快照,防止误删:
[root@node2 ~]# rbd snap protect rbd/rbd-demo.img --snap snap1
一旦将快照保护起来,就不能再删除了
## 克隆镜像
[root@node2 ~]# rbd clone rbd/rbd-demo.img --snap snap1 image-clone(克隆后的镜像名)
--image-feature layering
2. 查看克隆镜像与父镜像快照关系:
[root@node2 ~]# rbd info image-clone
3. 如果希望克隆镜像可以独立工作,就需要将父快照中的数据,全部拷贝一份,但比较耗时:
[root@node2 ~]# rbd flatten image-clone
## 再次查看克隆镜像信息
[root@node2 ~]# rbd info image-clone
4. 取消快照保护:
[root@node2 ~]# rbd snap unprotect rbd/rbd-demo.img --snap snap1
## 删除快照
[root@node2 ~]# rbd snap rm rbd/rbd-demo.img --snap snap1