前面咱們 backup 了 voluem,今天咱們將討論如何 restore volume。web
restore 的過程其實很簡單,兩步走: api
在存儲節點上建立一個空白 volume。 spa
將 backup 的數據 copy 到空白 voluem 上。 rest
下面咱們來看 restore 操做的詳細流程: 日誌
向 cinder-api 發送 restore 請求 orm
cinder-api 發送消息 ci
cinder-scheduler 挑選最合適的 cinder-volume it
cinder-volume 建立空白 volume class
cinder-backup 將 backup 數據 copy 到空白 volume 上 import
咱們先來看第 1 步。
客戶(能夠是 OpenStack 最終用戶,也能夠是其餘程序)向 cinder-api 發送請求:「請 restore 指定的 backup。這裏咱們將 restore 以前建立的 backup。
目前 restore 只能在 CLI 中執行。
cinder-api 接收到 restore 請求。日誌文件在 /opt/stack/logs/c-api.log。
這裏看到 cinder-api 轉發請求,爲 restore 建立 volume。 以後 cinder-scheduler 和 cinder-volume 將建立空白 volume,這個過程與 create volume 同樣,再也不贅述。
接下來分析數據恢復的過程。 首先,在 cinder-api 日誌中能夠看到相關信息。
這裏注意日誌中的 volume_id 和 backup_id 與前面 backup-restore 命令的輸出是一致的。
下面來看 cinder-backup 是如何恢復數據的。
日誌爲 /opt/stack/logs/c-vol.log。
啓動 restore 操做,mount NFS。
讀取 container 目錄中的 metadata。
將數據解壓並寫到 volume 中。
恢復 volume 的 metadata,完成 restore 操做。
此時,在 GUI 中已經能夠看到 restore 建立的 volume。
以上就是 volume restore 的分析,下一節咱們討論如何將 volume 做爲 instance 的啓動盤。