
本文原載於 iT 邦幫忙 2021 鐵人賽系列〈突破困境:企業開源虛擬化管理平台〉第 24 天,原文連結。
隨著 Proxmox VE 上線後重要的客體機服務越來越多,如何確保所有重要客體機都有完整的備份就是一項重要課題。
而 Proxmox VE 已經內建了完善的備份功能,並具有排程備份機制,更可以讓我們將所有的備份工作完全自動化處理,確保所有資料都能有完善的保存,再搭配備份保留策略的能力,將備份區的容量使用率與保存年限最佳化。
建立排程進行備份
要設定排程備份作業,請選取 資料中心,切換至 備份,再按下 增加 按鈕。

進入建立備份作業選項視窗後,在 儲存 欄位下拉清單中選取要用來存放備份檔的儲存集區,本例我預計把備份檔放置到 NFS 掛接進來的 nas2-nfs 裡。

要設定排程備份在一週內的那幾天進行,請點選 週 欄位的下拉清單,將要啟用的那幾天選取為淺藍色背景即可,本例為選取了每週的 星期二、星期四、星期六 這三天進行排程備份作業。

上面決定了一週裡的那幾天要進行備份,接下來是指定在那幾天的何時要進行,請在 開始時間 欄位的下拉清單中,選取要在那一個時間點開始執行備份動作,本例選在 01:00 這個時間點。

提醒:
若您建立多個排程備份作業,請將時間錯開以免磁碟或網路使用率過高,導致備份失敗甚至影響其它主機的網路運作。
對於管理者而言,排程備份並不是一件安排好就不再需要關心的事,而是要留意每一次的排程備份作業有沒有順利完成,若沒有全部完成,是否有錯誤產生?
您可以在 發送郵件到 欄位輸入管理者的電子郵件,以及 郵件提醒 下拉清單中選取通知的類型,我建議是選擇 總是,如此一來,管理者可以在信箱中檢視每次排程備份作業的結果,以判斷是否需要人為介入進行調整。

提醒:
發送郵件是採用內建的 Postfix,若您的郵件伺服器啟用了較嚴格的發信機制,請將 Proxmox VE 節點的 IP 加入信任清單。
Proxmox VE 所提供的備份功能可以將備份檔案壓縮後儲存,以提升備份區的容量使用率,目前提供三種壓縮演算法:
- 無
- LZO (壓縮速度較快)
- GZIP (壓縮比例較好)
- ZSTD (壓縮速度快且比例好)
看完上面的清單,正常人應該都會將 壓縮 下拉清單中選擇為 ZSTD (壓縮速度快且比例好),因為它速度快容量又小,當然是首選。
不過,我在某些客戶案例中有觀察到 ZSTD 演算法在遇到某些客體機所使用的虛擬磁碟較大時,有時會發生備份失敗的情況。若有發生此情況時,請將壓縮演算法改為 LZO,應可避免此問題發生。

對於正在運行中的客體機,在啟動備份時有三種模式可以選擇,說明如下:
- 快照:對磁碟進行快照後,由該快照製作備份檔案,這個做法客體機會持續運作不受影響,如果虛擬機有正確安裝 Qemu Agent 會更理想。
- 暫停:將客體機暫停下來,待備份作業完成後再繼續運作,這個做法客體機會暫停服務一段時間。
- 停止:將客體機進行正常的關機程序,關機後進行備份作業,備份作業完成後再將客體機開機回復運作,這個做法停止服務時間最久。
除非是該客體機所運行的服務對於記憶體內的資料保存非常重要之外,我會建議將 模式 選用 快照 是較為理想的。

接著,我們將 啟用 核取方塊勾選,再於下方的客體機清單中勾選要在這個備份作業中進行備份的客體機,最後按下 建立 即可。

當排程備份作業建立完成以後,在清單中就可以看到這一筆作業的相關資訊。

若想回頭檢視這個作業的套用對象與設定內容,可以點選清單上的 作業細節 按鈕,進入檢視細節。

執行排程備份作業
當前面的排程備份作業建立完成後,Proxmox VE 就會在指定的時間進行備份作業,若想要立即執行這個備份作業,可以按下上方的 立即執行 按鈕,馬上啟動備份程序。
當備份程序開始以後,可以點選作業記錄區的 備份作業 兩下,檢視目前進行的狀況

備份作業記錄視窗中會顯示目前進行的細節,包括備份的客體機、備份目標、容量以及速度等等。

當備份作業完成後,記錄的會顯示每一個客體機總共花費的備份時間,備份後的備份檔容量。最後兩行會顯示 INFO: Backup job finished successfully 以及 TASK OK,表示正確完成

備份結果通知郵件
當我們有啟用通知郵件的功能後,在每次備份作業結束後都會寄出通知郵件。
在郵件的開頭會以表格方式呈現備份結果的總覽,若 STATUS 為 OK 則表示正確完成,而 TIME 欄位是指該客體機所花費的備份時間,SIZE 欄位是產出的備份檔大小。
在總覽表格的下方則是詳細的備份記錄,如有發生問題時可以做為找出問題線索的必要資訊。

若發生備份失敗,可以在總覽表格中看到明顯的 FAILED 失敗字樣,在後方也會顯示備份失敗的最後訊息。
而詳細的失敗原因資訊,在該郵件往下捲動檢視詳細記錄,可以查到一些蛛絲馬跡。

往下追查詳細記錄,可以找到失敗的原因,此例的狀況是 zstd: /*stdout*\: Input/output,表示在 ZSTD 壓縮時發生錯誤而致,那麼就可以從當時的 CPU 使用狀況、磁碟效能、磁碟可用空間等等方向追查。

檢視未在排程備份的客體機
當我們客體機越來越多,建立的排程備份作業也越來越多後,肯定會發生一種情況:我是不是有那些客體機還沒有被設定在排程備份作業裡?
當然,我們可以一個一個排程備份作業點進去一一檢視確認,但這種作法效率不佳,其實有一個很簡單的檢視方式。請按下右上方的 顯示 按鈕。

進入後,下方的清單即會顯示沒有被放置在任何一個排程備份作業裡的客體機,右上方還有搜尋欄位方便以名稱、VMID 及客體機類型進行查詢,以便管理者儘快安排進排程備份作業裡。

備份保留策略
隨著備份檔案日漸增加,這樣無止盡增加下去遲早會把我們的儲存伺服器塞爆。在 Proxmox VE 當中提供了備份保留策略的功能,可以依據我們的儲存目標以及策略進行配置。
選取 資料中心 後,切換至 儲存 頁籤,在我們用來存放備份檔的儲存項目上點兩下,本例是 vmdisk-2。

進入後,切換至 備份保留 頁籤,將 保留所有備份 核取方塊取消勾選。
如果要以指定份數作為保留方式,可以在 保留最近份數 輸入數字,例如輸入 10 即表示保留最近 10 個備份檔案,當備份數量達到上限時,會在第 11 個備份檔完成後將前面 10 個備份檔最早的那一的檔案刪除。

若想要在保留較長時間以前的備份,但又要兼顧容量的使用率,可以採用複合式的作法。例如我們想要保留以下的備份檔案:
- 最近 5 天,每天 1 個最近的備份,共 5 份
- 最近 6 月,每月 1 個最近的備份,共 6 份
- 最近 3 年,每年 1 個最近的備份,共 3 份
以此策略為例,在 保留最近天數 填入 5,在 保留最近月數 填入 6,在 保留最近年數 填入 3 即可。


