ceph block snapshot 基本命令操作
备注:ceph block snapshot操作时不指定存储池,它将使用默认的 rbd 存储池,但默认并无 rbd 存储池,所以可以创建名为 rbd 的存储池,亦可以使用 rbd pool init 指定存储池为默认存储池(使用中好像未生效)
1 创建块设备池和映像
ceph osd pool create rbd_pool 100
rbd create --size 102400 rbd_pool/foo
2 创建快照
# 语法
rbd snap create {pool-name}/{image-name}@{snap-name}
# 例子
rbd snap create rbd_pool/foo@snapname
3 罗列快照
# 语法
rbd snap ls {pool-name}/{image-name}
# 例子
rbd snap ls rbd_pool/foo
4 回滚快照
# 语法
rbd snap rollback {pool-name}/{image-name}@{snap-name}
# 例子
rbd snap rollback rbd_pool/foo@snapname
5 删除快照
克隆前必须先保护快照
# 语法
rbd snap rm {pool-name}/{image-name}@{snap-name}
# 例子
rbd snap rm rbd_pool/foo@snapname
# 备注:Ceph OSDs 异步地删除数据,所以删除快照后不会立即释放磁盘空间。
6 清除快照(删除某个映像的所有快照)
# 语法
rbd snap purge {pool-name}/{image-name}
# 例子
rbd snap purge rbd_pool/foo
7 保护快照
1、克隆映像要访问父快照。如果用户不小心删除了父快照,所有克隆映像都会损坏。为防止数据丢失,在克隆前必须先保护快照。
2、无法删除受保护的快照
# 语法
rbd snap protect {pool-name}/{image-name}@{snapshot-name}
# 例子
rbd snap protect rbd_pool/foo@snapname
8 克隆快照
克隆前必须先保护快照
# 语法
rbd clone {pool-name}/{parent-image}@{snap-name} {pool-name}/{child-image-name}
# 例子
rbd clone rbd_pool/foo@snapname rbd_pool/new_foo
# 备注:可以把某个存储池中映像的快照克隆到另一存储池。例如,可以把某一存储池中的只读映像及其快照作为模板维护,把可写克隆置于另一存储池。
9 取消保护快照
1、删除快照前,必须先取消保护
2、不可以删除被克隆映像引用的快照,所以在你删除快照前,必须先拍平( flatten )此快照的各个克隆
# 语法
rbd snap unprotect {pool-name}/{image-name}@{snapshot-name}
# 例子
rbd snap unprotect rbd_pool/foo@snapname
10 罗列快照的子孙
# 语法
rbd children {pool-name}/{image-name}@{snapshot-name}
# 例子
rbd children rbd_pool/foo@snapname
11 拍平克隆映像
1、克隆出来的映像仍保留了对父快照的引用。要从子克隆删除这些到父快照的引用,可以把快照的信息复制给子克隆,也就是“拍平”它。拍平克隆映像的时间随快照尺寸增大而增加。要删除快照,必须先拍平子映像
# 语法
rbd flatten {pool-name}/{image-name}
# 例子
rbd flatten rbd_pool/foo