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

image快照
什么是快照呢?所谓快照我们可以理解为一种数据备份手段;做快照之所以快 , 是因为我们在做快照时不需要复制数据 , 只有数据发生改变时 , 对应快照才会把我们需要修改的数据复制到现有快照之上 , 然后再做修改;修改过后的数据会被保存到现有快照之上;对于原卷上的数据 , 是不会发生变化的;我们在读取没有发生变化的数据 , 是直接到原卷上读取;简单讲快照就是给原卷做了一层可写层 , 把原卷的内容保护起来 , 修改数据时 , 从原卷复制数据到快照 , 然后再修改 , 修改后的数据直接保存到快照 , 所以我们读取修改后的数据是直接读取快照上的数据;未修改的数据 , 访问还是直接到原卷访问;这也是为什么快照很快和快照比原卷小的原因;
创建快照命令格式: 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 , 并挂载磁盘 , 看看对应数据是否恢复?
[root@ceph-admin ~]# rbd map --user test ceph-rbdpool/vol01/dev/rbd0[root@ceph-admin ~]# mount /dev/rbd0 /mnt[root@ceph-admin ~]# cd /mnt[root@ceph-admin mnt]# lstest.txt[root@ceph-admin mnt]#cat test.txthello ceph[root@ceph-admin mnt]#提示:可以看到现在再次挂载上磁盘 , 被删除的数据就被找回来了;
限制快照数量
命令格式:rbd snap limit set [--pool <pool>] [--image <image>] [--limit <limit>]
解除限制:rbd snap limit clear [--pool <pool>] [--image <image>]
[root@ceph-admin ~]# rbd snap limit set ceph-rbdpool/vol01 --limit 3[root@ceph-admin ~]# rbd snap limit set ceph-rbdpool/vol01 --limit 5[root@ceph-admin ~]# rbd snap limit clear ceph-rbdpool/vol01[root@ceph-admin ~]#

经验总结扩展阅读