Snapshot Volume 操做 - 天天5分鐘玩轉 OpenStack(58)

Snapshot 能夠爲 volume 建立快照,快照中保存了 volume 當前的狀態,之後能夠經過 snapshot 回溯。snapshot 操做實現比較簡單,流程圖以下:api

image413.png

  1. 向 cinder-api 發送 snapshot 請求分佈式

  2. cinder-api 發送消息ide

  3. cinder-volume 執行 snapshot 操做spa

下面咱們詳細討論每個步驟。指針

向 cinder-api 發送 snapshot 請求

客戶(能夠是 OpenStack 最終用戶,也能夠是其餘程序)向 cinder-api 發送請求:「請 snapshot 指定的 volume。日誌

這裏咱們將 snapshot volume 「vol-1」。ci

進入 GUI 操做菜單 Project -> Compute -> Volumes。日誌分析

選擇 volume 「vol-1」,點擊 「Create Snapshot」。引用

爲 snapshot 命名。請求

這裏咱們看到界面提示當前 volume 已經 attach 到某個 instance,建立 snapshot 可能致使數據不一致。咱們能夠先 pause instance,或者確認當前 instance 沒有大量的磁盤 IO,處於相對穩定的狀態,則能夠建立 snapshot,不然仍是建議先 detach volume 在作 sanpshot。

cinder-api 將接收到 snapshot volume 的請求。日誌文件在 /opt/stack/logs/c-api.log。

cinder-api 發送消息

cinder-api 發送消息 snapshot 消息。cinder-api 沒有打印發送消息的日誌,只能經過源代碼查看 /opt/stack/cinder/cinder/volume/api.py,方法爲 _create_snapshot。

cinder-volume 執行 snapshot 操做

cinder-volume 執行 lvcreate 命令建立 snapshot。 日誌爲 /opt/stack/logs/c-vol.log。

對於 LVM volume provider,snapshot 實際上也是一個 LV,同時記錄了與源 LV 的 snapshot 關係,能夠經過 lvdisplay 查看。


GUI 的 Volume Snapshots 標籤中能夠看到新建立的 「vol-1-snapshot」。

有了 snapshot,咱們就能夠將 volume 回溯到建立 snapshot 時的狀態。方法是經過 snapshot 建立新的 volume。

新建立的 volume 容量必須大於或等於 snapshot 的容量

其過程與 Create Volume 相似,不一樣之處在於 LV 建立以後會經過 dd 將 snapshot 的數據 copy 到新的 volume。
日誌分析再也不贅述,留個你們練習。

若是一個 volume 存在 snapshot,則這個 volume 是沒法刪除的。
這是由於 snapshot 依賴於 volume,snapshot 沒法獨立存在。

在 LVM 做爲 volume provider 的環境中,snapshot 是從源 volume 徹底 copy 而來,因此這種依賴關係不強。
但在其餘 volume provider(好比商業存儲設備或者分佈式文件系統),snapshot 一般是源 volume 建立快照時數據狀態的一個引用(指針),佔用空間很是小,在這種實現方式裏 snapshot 對源 volume 的依賴就很是明顯了。

以上就是 volume snapshot 的分析,下一節咱們討論一個與 snapshot 容易混淆的操做:backup。

 

相關文章
相關標籤/搜索