1、快照:

虽然ceph提供了三副本原则保证了可靠性,但是如果数据是人为删除的话ceph就没有办法恢复了。
快照可以记录磁盘某一时刻的状态。通过快照可以恢复人为删除的数据。
快照记录的数据是到某一瞬间的

创建快照:(node1)
rbd create demo --image-feature layering --size 10G	#创建了一个名为demo的镜像,开启快照功能
rbd snap create demo --snap demo-copy	#为demo镜像创建了一个名为demo-copy快照
rbd snap ls demo	#查看demo镜像的快照

删除快照:(node1)
rbd snap rm demo --snap demo-copy

使用快照还原数据:(node1)
# ceph使用快照进行还原数据,在客户机上一定要umount
rbd snap rollback demo --snap demo-copy
# 之后在客户机上重新挂载镜像,可以看到数据被恢复

2、克隆:
如果想要一个和别人完全相同的磁盘,那么就需要用到克隆。
克隆一定是基于快照的,不能直接对镜像进行克隆。
一边向镜像中写数据,一边直接克隆镜像,这样克隆出来的镜像可能就是半成品。因此需要把镜像某时刻的状态记录下来(快照),然后在进行克隆。

在对快照进行克隆的时候也会出现问题。
例如:在克隆的时候把快照给删除了。
因此需要对克隆的快照进行保护,让快照在克隆时不能被操作。

流程如下:
镜像----->快照----->被保护的快照---->克隆的镜像

创建一个新的镜像:
rbd create demo --image-feature layering --size 10G

为镜像创建快照:
rbd snap create demo --snap demo-copy

保护快照:
rbd snap protect demo --snap demo-copy

克隆:
rbd clone demo --snap demo-copy demo-clone --image-feature layering
rbd list	#查看是否克隆成功,有一个名为demo-clone的镜像

查看克隆镜像的信息:
rbd info demo-clone
...
parent: rbd/xxxxxx		#这里是克隆镜像和快照之间的联系

# 此时还不可以删除快照,因为快照处于protect状态
rbd snap unprotect demo --snap demo-copy	#取消保护
# 执行这个命令会失败,因为克隆的镜像的使用必须要基于这个快照
# 所以要让克隆镜像独立,需要把快照中的内容都复制到这个克隆镜像当中

克隆镜像的独立:(复制快照中的数据,这一步操作比较耗时)
rbd flatten demo-clone
rbd info demo-clone	#查看克隆镜像信息,镜像和快照的联系就不存在了

删除快照:
rbd snap unprotect demo --snap demo-copy	#取消保护
rbd snap rm demo --snap demo-copy	#成功删除

客户端使用镜像:(client)
# 前提要安装好ceph-common 复制配置文件ecph.conf 和秘钥ceph.client.admin.keyring到/etc/ceph/下
rbd map demo-clone	#会多一块磁盘,lsblk查看
rbd unmap /dev/vbd0	#取消使用

写总结的第三十天!!!