本節我們討論 volume 的 Backup 操作。
Backup 是將 volume 備份到別的地方(備份設備),將來可以通過 restore 操作恢復。
Backup VS Snapshot
初看 backup 功能好像與 snapshot 很相似,都可以保存 volume 的當前狀態,以備以后恢復。但二者在用途和實現上還是有區別的,具體表現在:
-
Snapshot 依賴於源 volume,不能獨立存在;而 backup 不依賴源 volume,即便源 volume 不存在了,也可以 restore。
-
Snapshot 與源 volume 通常存放在一起,都由同一個 volume provider 管理;而 backup 存放在獨立的備份設備中,有自己的備份方案和實現,與 volume provider 沒有關系。
-
上面兩點決定了 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 操作的流程
-
向 cinder-api 發送 backup 請求
-
cinder-api 發送消息
-
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。
-
啟動 backup 操作,mount NFS。
-
創建 volume 的臨時快照。
-
創建存放 backup 的 container 目錄。
-
對臨時快照數據進行壓縮,並保存到 container 目錄。
-
創建並保存 sha256(加密)文件和 metadata 文件。
-
刪除臨時快照。
Backup 完成后,我們可以查看一下 container 目錄的內容
里面有三個文件,根據前面的日志我們可以知道:
-
backup-00001,壓縮后的 backup 文件。
-
backup_metadata,metadata 文件。
-
backup_sha256file,加密文件。
可以通過 cinder backup-list 查看當前存在的 backup。
另外我們可以查看一下 cinder backup-create 的用法。
這里有 --incremental 選項,表示可以執行增量備份。 如果之前做過普通(全量)備份,之后可以通過增量備份大大減少需要備份的數據量,是個很不錯的功能。增量備份的操作和日志分析留給大家做練習。
以上就是 volume backup 的分析,下一節我們討論如何通過 restore 操作恢復備份的 volume。