分布式存储系统之Ceph集群RBD基础使用( 四 )

提示:缩减空间大小不能少见到小于已用空间大?。?
删除image
命令格式:rbd remove [--pool <pool>] [--image <image>] [--no-progress] <image-spec>
[root@ceph-admin ~]# rbd ls-p ceph-rbdpool -lNAMESIZE PARENT FMT PROT LOCKvol01 5 GiB2vol02 8 GiB2[root@ceph-admin ~]# rbd rm ceph-rbdpool/vol02Removing image: 100% complete...done.[root@ceph-admin ~]# rbd ls-p ceph-rbdpool -lNAMESIZE PARENT FMT PROT LOCKvol01 5 GiB2[root@ceph-admin ~]#提示:这种方式删除image以后,对应镜像就真的被删除了,如果有数据想恢复就不行了;所以这种方式不推荐;RBD提供回收站的功能,我们可以先将要删除的image移入回收站,如果确实不要了,可以再从回收站删除即可;
将image移入回收站
[root@ceph-admin ~]# rbd ls-p ceph-rbdpool -lNAMESIZE PARENT FMT PROT LOCKvol01 5 GiB2[root@ceph-admin ~]# rbd trash mv ceph-rbdpool/vol01[root@ceph-admin ~]# rbd trash ls ceph-rbdpool149196b8b4567 vol01[root@ceph-admin ~]# rbd ls-p ceph-rbdpool -l[root@ceph-admin ~]#将image从回收站删除
[root@ceph-admin ~]# rbd trash ls ceph-rbdpool149196b8b4567 vol01149e26b8b4567 vol02[root@ceph-admin ~]# rbd trash rm --pool ceph-rbdpool --image-id 149e26b8b4567Removing image: 100% complete...done.[root@ceph-admin ~]# rbd trash ls ceph-rbdpool149196b8b4567 vol01[root@ceph-admin ~]#提示:上述命令是删除回收站里指定image , 如果想要清空回收站直接使用rbd trash purge 指定存储池 , 表示清空回收站指定存储池里的镜像;
将image从回收站恢复(移回到原有存储池)
[root@ceph-admin ~]# rbd ls -p ceph-rbdpool -l[root@ceph-admin ~]# rbd trash ls ceph-rbdpool149196b8b4567 vol01[root@ceph-admin ~]# rbd trash restore --pool ceph-rbdpool --image-id 149196b8b4567[root@ceph-admin ~]# rbd trash ls ceph-rbdpool[root@ceph-admin ~]# rbd ls -p ceph-rbdpool -lNAMESIZE PARENT FMT PROT LOCKvol01 5 GiB2[root@ceph-admin ~]#image快照
什么是快照呢?所谓快照我们可以理解为一种数据备份手段;做快照之所以快,是因为我们在做快照时不需要复制数据 , 只有数据发生改变时,对应快照才会把我们需要修改的数据复制到现有快照之上,然后再做修改;修改过后的数据会被保存到现有快照之上;对于原卷上的数据 , 是不会发生变化的;我们在读取没有发生变化的数据,是直接到原卷上读?。患虻ソ部煺站褪歉碜隽艘徊憧尚床?nbsp;, 把原卷的内容保护起来 , 修改数据时,从原卷复制数据到快照,然后再修改,修改后的数据直接保存到快照,所以我们读取修改后的数据是直接读取快照上的数据;未修改的数据,访问还是直接到原卷访问;这也是为什么快照很快和快照比原卷小的原因;
创建快照命令格式: rbd snap create [--pool <pool>] --image <image> --snap <snap> 或者rbd snap create [<pool-name>/]<image-name>@<snapshot-name>
[root@ceph-admin ~]# mount /dev/rbd0 /mnt[root@ceph-admin ~]# cd /mnt[root@ceph-admin mnt]# ls[root@ceph-admin mnt]# echo "hello ceph" >>test.txt[root@ceph-admin mnt]# lstest.txt[root@ceph-admin mnt]# cat test.txthello ceph[root@ceph-admin mnt]# rbd snap create ceph-rbdpool/vol01@vol01-snap[root@ceph-admin mnt]# rbd snap list ceph-rbdpool/vol01SNAPID NAMESIZE TIMESTAMP4 vol01-snap 5 GiB Tue Oct4 23:26:09 2022[root@ceph-admin mnt]#提示:我们把ceph上ceph-rbdpool存储池里的vol01映射到本地当作硬盘使用,格式化分区以后 , 将对应磁盘挂载到/mnt下,然后在/mnt下新建了一个test.txt的文件,然后在管理端给对应存储池里的image做了一个快照;这里需要注意的是在创建映像快照之前应停止image上的IO操作,且image上存在文件系统时,还要确保其处于一致状态;
在客户端上删除数据,并卸载磁盘和磁盘映射
[root@ceph-admin mnt]# lstest.txt[root@ceph-admin mnt]# cat test.txthello ceph[root@ceph-admin mnt]# rm -rf test.txt[root@ceph-admin mnt]# ls[root@ceph-admin mnt]# cd[root@ceph-admin ~]# umount /mnt[root@ceph-admin ~]# rbd unmap /dev/rbd0[root@ceph-admin ~]# rbd showmapped[root@ceph-admin ~]#回滚快照
命令格式:rbd snap rollback [--pool <pool>] --image <image> --snap <snap> [--no-progress];
[root@ceph-admin ~]# rbd snap list ceph-rbdpool/vol01SNAPID NAMESIZE TIMESTAMP4 vol01-snap 5 GiB Tue Oct4 23:26:09 2022[root@ceph-admin ~]# rbd snap rollback ceph-rbdpool/vol01@vol01-snapRolling back to snapshot: 100% complete...done.[root@ceph-admin ~]#提示:这里需要注意将映像回滚到快照意味着会使用快照中的数据重写当前版本的image,而且执行回滚所需的时间将随映像大小的增加而延长;
在客户端映射image,并挂载磁盘,看看对应数据是否恢复?

推荐阅读