快照
創建快照:
# rbd snap create rbd/test@snap-test
查看快照:
# rbd snap ls rbd/test
SNAPID NAME SIZE
4 snap-test 2048 MB
快照回滾:
# rbd snap rollback rbd/test@snap-test
ps: 回滾以后必須重新掛載卷
Note:把映像回滾到某一快照的意思是,用快照中的數據覆蓋映像的當前版本,映像越大,此過程花費的時間就越長。從快照克隆要快於回滾到某快照,這也是回到先前狀態的首選方法。
刪除快照:
# rbd snap rm rbd/test@snap-test
ps: 是指刪除某個特定的快照
Note:Ceph OSDs 異步地刪除數據,所以刪除快照后不會立即釋放磁盤空間。
清除快照:
# rbd snap purge rbd/test
ps: 是指刪除該rbd的所有快照
分層(寫時復制克隆)
步驟:創建鏡像 --> 創建快照 --> 保護快照 --> 克隆快照(多次)
保護快照
克隆映像要訪問父快照。如果用戶不小心刪除了父快照,所有克隆映像都會損壞。為防止數據丟失,在克隆前必須先保護快照。
rbd snap protect {pool-name}/{image-name}@{snapshot-name}
例如:
rbd snap protect rbd/my-image@my-snapshot
Note:你刪除不了受保護的快照。
克隆快照
克隆出的映像包含對父快照的引用,也包含存儲池 ID 、映像 ID 和快照 ID 。包含存儲池 ID 意味着你可以把一個存儲池內的快照克隆到其他存儲池。
- 映像模板: 塊設備分層的一個常見用法是創建一個主映像及其快照,並作為模板以供克隆。例如,用戶可以創建某一 Linux 發行版(如 Ubuntu 12.04 )的映像、並對其做快照。此用戶可能會周期性地更新映像、並創建新的快照(如在 rbd snap create 之后執行 sudo apt-get update 、 sudo apt-get upgrade 、 sudo apt-get dist-upgrade )。當映像成熟時,用戶可以克隆任意快照。
- 擴展模板: 更高級的用法包括擴展映像模板,來提供比基礎映像更多的信息。例如,用戶可以克隆一個映像(如 VM 模板)、並安裝其它軟件(如數據庫、內容管理系統、分析系統等等),然后為此擴展映像做快照,做好的快照可以像基礎映像一樣進行更新。
- 模板存儲池: 塊設備分層的一種用法是創建一個存儲池,存放作為模板的主映像和那些模板的快照。然后把只讀權限分給用戶,這樣他們就可以克隆快照了,而無需分配此存儲池的寫和執行權限。
- 映像遷移/恢復: 塊設備分層的一種用法是把某一存儲池內的數據遷移或恢復到另一存儲池。
要克隆快照,你得指定父存儲池、父映像名和快照,還有子存儲池和子映像名。克隆前必須先保護快照。
rbd clone {pool-name}/{parent-image}@{snap-name} {pool-name}/{child-image-name}
例如:
rbd clone rbd/my-image@my-snapshot rbd/new-image
Note:你可以把某個存儲池中映像的快照克隆到另一存儲池。例如,你可以把某一存儲池中的只讀映像及其快照作為模板維護,把可寫克隆置於另一存儲池。
取消快照保護
刪除快照前,必須先取消保護。另外,你不可以刪除被克隆映像引用的快照,所以在你刪除快照前,必須先拍平( flatten )此快照的各個克隆。
rbd snap unprotect {pool-name}/{image-name}@{snapshot-name}
例如:
rbd snap unprotect rbd/my-image@my-snapshot
羅列快照的子孫
用下列命令羅列某個快照的子孫:
rbd children {pool-name}/{image-name}@{snapshot-name}
例如:
rbd children rbd/my-image@my-snapshot
拍平克隆映像
克隆出來的映像仍保留了對父快照的引用。要從子克隆刪除這些到父快照的引用,你可以把快照的信息復制給子克隆,也就是“拍平”它。拍平克隆映像的時間隨快照尺寸增大而增加。要刪除快照,必須先拍平子映像。
rbd flatten {pool-name}/{image-name}
例如:
rbd flatten rbd/my-image
Note:因為拍平的映像包含了快照的所有信息,所以拍平的映像占用的存儲空間會比分層克隆要大。
