rbd snap(1)

时间:2024-01-15 15:31:14

来自官方文档:

快照介绍

  快照是映像在某个特定时间点的一份只读副本。

对当前镜像打过快照以后,Active层仍在当前镜像,快照文件为只读。

Note

  如果在做快照时映像仍在进行 I/O 操作,快照可能就获取不到该映像准确的或最新的数据,并且该快照可能不得不被克隆到一个新的可挂载的映像中。所以,我们建议在做快照前先停止 I/O 操作。如果映像内包含文件系统,在做快照前请确保文件系统处于一致的状态。要停止 I/O 操作可以使用fsfreeze 命令。详情可参考 fsfreeze(8) 手册页。对于虚拟机,qemu-guest-agent 被用来在做快照时自动冻结文件系统。

rbd snap(1)

rbd 快照

基本操作

创建

rbd snap create {pool-name}/{image-name}@{snap-name}

查看

rbd snap ls {pool-name}/{image-name}

回滚快照

rbd snap rollback {pool-name}/{image-name}@{snap-name}

Note

用快照中的数据覆盖映像的当前版本,映像越大,此过程花费的时间就越长。从快照克隆要快于回滚到某快照,这也是回到先前状态的首选方法。

删除快照

rbd snap rm {pool-name}/{image-name}@{snap-name}

Note

Ceph OSDs 异步地删除数据,所以删除快照后不会立即释放磁盘空间。

清除快照

rbd snap purge {pool-name}/{image-name}

分层

  可以为某一设备快照创建很多个写时复制( COW )克隆。分层快照使得 Ceph 块设备客户端可以很快地创建映像。例如,你可以创建一个包含有 Linux VM 的块设备映像;然后做快照、保护快照,再创建任意多个写时复制克隆。快照是只读的,所以简化了克隆快照的语义 —— 使得克隆很迅速。

rbd snap(1)

cow 原理图

分层步骤

  一个快照的 COW 克隆和其它任何 Ceph 块设备映像的行为完全一样。克隆出的映像没有特别的限制,你可以读出、写入、克隆、调整克隆映像的大小。然而快照的写时复制克隆引用了快照,所以你克隆快照前必须保护它。

rbd snap(1)

保护快照

rbd snap protect {pool-name}/{image-name}@{snapshot-name}

Note

你删除不了受保护的快照。

克隆快照

rbd clone {pool-name}/{parent-image}@{snap-name} {pool-name}/{child-image-name}

Note

你可以把某个存储池中映像的快照克隆到另一存储池。例如,你可以把某一存储池中的只读映像及其快照作为模板维护,把可写克隆置于另一存储池。

取消快照保护

rbd snap unprotect {pool-name}/{image-name}@{snapshot-name}

罗列快照的子孙

rbd children {pool-name}/{image-name}@{snapshot-name}

拍平克隆映像

  克隆出来的映像仍保留了对父快照的引用。要从子克隆删除这些到父快照的引用,你可以把快照的信息复制给子克隆,也就是“拍平”它。拍平克隆映像的时间随快照尺寸增大而增加。要删除快照,必须先拍平子映像。

rbd flatten {pool-name}/{image-name}

Note

因为拍平的映像包含了快照的所有信息,所以拍平的映像占用的存储空间会比分层克隆要大。

参考:

1、cow & row:http://blog.sina.com.cn/s/blog_b4b6c24d0102whpt.html