Backup Volume 操作 - 每天5分鍾玩轉 OpenStack(59)


本節我們討論 volume 的 Backup 操作。

Backup 是將 volume 備份到別的地方(備份設備),將來可以通過 restore 操作恢復。

Backup VS Snapshot

初看 backup 功能好像與 snapshot 很相似,都可以保存 volume 的當前狀態,以備以后恢復。但二者在用途和實現上還是有區別的,具體表現在:

  1. Snapshot 依賴於源 volume,不能獨立存在;而 backup 不依賴源 volume,即便源 volume 不存在了,也可以 restore。

  2. Snapshot 與源 volume 通常存放在一起,都由同一個 volume provider 管理;而 backup 存放在獨立的備份設備中,有自己的備份方案和實現,與 volume provider 沒有關系。

  3. 上面兩點決定了 backup 具有容災功能;而 snapshot 則提供 volume provider 內便捷的回溯功能。

配置 cinder-backup

Cinder 的 backup 功能是由 cinder-backup 服務提供的,devstack 默認沒有啟用該服務,需要手工啟用。與 cinder-volume 類似,cinder-backup 也通過 driver 架構支持多種備份 backend,包括 POSIX 文件系統、NFS、Ceph、GlusterFS、Swift 和 IBM TSM。支持的driver 源文件放在 /opt/stack/cinder/cinder/backup/drivers/

本節我們將以 NFS 為 backend 來研究 backup 操作。

在實驗環境中,存放 volume backup 的 NFS 遠程目錄為 192.168.104.11:/backup cinder-backup 服務節點上 mount point 為 /backup_mount。

需要在 /etc/cinder/cinder.conf 中作相應配置。

然后手工啟動 cinder-backup 服務。

/usr/bin/python /usr/local/bin/cinder-backup --config-file /etc/cinder/cinder.conf

一切准備就緒,下面我們來看 backup 操作的流程

  1. 向 cinder-api 發送 backup 請求

  2. cinder-api 發送消息

  3. cinder-backup 執行 backup 操作

下面我們詳細討論每一個步驟。

向 cinder-api 發送 backup 請求

客戶(可以是 OpenStack 最終用戶,也可以是其他程序)向 cinder-api 發送請求:“請 backup 指定的 volume。

這里我們將 backup volume “vol-1”,目前 backup 只能在 CLI 中執行。

這里因為 vol-1 已經 attach 到 instance,需要使用 --force 選項。

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

cinder-api 發送消息

cinder-api 發送 backup 消息。cinder-api 沒有打印發送消息的日志,只能通過源代碼查看 /opt/stack/cinder/cinder/backup/api.py,方法為 create。

cinder-backup 執行 backup 操作

cinder-backup 收到消息后,通過如下步驟完成 backup 操作,日志為 /opt/stack/logs/c-vol.log。

  1. 啟動 backup 操作,mount NFS。

  2. 創建 volume 的臨時快照。

  3. 創建存放 backup 的 container 目錄。

  4. 對臨時快照數據進行壓縮,並保存到 container 目錄。

  5. 創建並保存 sha256(加密)文件和 metadata 文件。

  6. 刪除臨時快照。

Backup 完成后,我們可以查看一下 container 目錄的內容

里面有三個文件,根據前面的日志我們可以知道:

  1. backup-00001,壓縮后的 backup 文件。

  2. backup_metadata,metadata 文件。

  3. backup_sha256file,加密文件。

可以通過 cinder backup-list 查看當前存在的 backup。

另外我們可以查看一下 cinder backup-create 的用法。

這里有 --incremental 選項,表示可以執行增量備份。 如果之前做過普通(全量)備份,之后可以通過增量備份大大減少需要備份的數據量,是個很不錯的功能。增量備份的操作和日志分析留給大家做練習。

以上就是 volume backup 的分析,下一節我們討論如何通過 restore 操作恢復備份的 volume。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM