使用免費的 VMware vSphere Hypervisor 在 HPE Proliant MicroServer Gen10 Plus 上面來跑虛擬機已經有一陣子,而且使用 Synology DS1819+ 的 SAN Manager 所分享出來的 iSCSI 磁碟來直接存放虛擬機的 Guest OS Image,如此一來就無需佔用實際硬體機上的 SATA 硬碟空間,而且也可以透過群暉的 HyperBackup 套件來做 iSCSI LUN 的完整備份,其實也算是蠻方便的。
不過前一陣子發生過兩次問題都無法解決,觀察 ESXi 與 DS1819+ 之間的 iSCSI 連線正常,但從 ESXi 卻看不到任何已掛載完成遠端的 iSCSI 資料存放區。而因為 Guest OS 設定與 VM Image 都存放在遠端的 iSCSI Disk,所以所有的虛擬機都會呈現有問題無效的狀態。如果透過 HyperBackup 將存放 VM Image 的 iSCSI LUN 備份整份倒回前一日的狀態,測試結果仍然無法將 iSCSI LUN 掛在到 ESXi 的檔案系統中,此時只好又重新安裝 Guest OS。(有人有相同經驗嗎?)不過重新安裝所有的 Guest OS 是個相當浩大工程,想來想去還是得找個備份 Guest OS VM Image 的解決辦法比較妥當些。
幸好群暉 NAS 的套件中心裡就有免費提供這樣的套件 Active Backup for Business。在老舊的 DS1511+ 的套件中心(版本已經是 DSM 6.2.4),這套件還稱為 Active Backup for Server,裡面只能備份實體機中 Windows / Linux 兩種伺服器的作業系統,但在 DS1819+ 的 DSM 上就已經改名為 Active Backup for Business,除了原本實體機的備份功能外,還加上了 VMware / Microsoft Hyper-v 虛擬機的備份,而且還是免費提供,想想群暉還真的是很佛心來著。
- 從 DSM 的套件中心中直接尋找 Active Backup for Business 套件安裝。
- 設定一個新的 Hypervisor ESXi Host 設定
設定好 Hostname/IP以及連線的帳號密碼即可(可以在 ESXi 上建立一個專門備份用的帳號設定在這兒)
- 建立備份任務
- 選擇要備份的虛擬機清單
接著就可以建立一個虛擬機器的備份任務了。如果 ESXi 上的連線帳號密碼設定正確,以及 ESXi 上這兩項服務「啟用主控台 shell」及「啟用 Secure Shell (SSH)」也都有正確啟用的話,就可以看到 ESXi 上所有的虛擬機設定。
- 選取NAS上要儲存備份的共用資料夾
Active Backup for Business 套件安裝完畢,就已經自動建立一個「ActiveBackupforBusiness」的共用資料夾,備份目的地可以直接選擇放在這兒。
- 設定備份任務的細項參數
大部分參數都是一看就懂,其中有個參數要特別說明一下,這跟後面的段落也是有關係。「啟動異動區塊追蹤」(VMware Changed Block Tracking, CBT),顧名思義就是在進行備份時,只針對與上次備份差異的部分進行備份,不需要完整重新備份,所以備份傳輸的資料量就可以減少很多。也就是因為啟動了這個選項,所以在 ESXi 上需要進行特別的參數調整(在後面會說明)。
- 檢查虛擬機上的服務
接著會依據設定的參數預先檢查 ESXi 上每個 Guest OS 的參數是否符合備份任務的設定,以下圖為例,大部分的 Guest OS 因為未開啟 CBT (VMware Changed Block Tracking) 的設定 (預設為不開啟),所以當我們選擇「啟用異動區塊追蹤」時,在這個步驟就會顯示失敗(截圖中唯一顯示成功的 Ubuntu,是因為我先去調整 ESXi 上的 Ubuntu 的組態參數後才顯示成功,原本是全部都顯示為失敗),所以接著我們就要去調整 ESXi。
- 調整 ESXi 上的 Guest OS 組態參數設定
- 檢查 Guest OS 上硬碟所屬的控制器種類以及編號
以 Ubuntu-K8s-Master 這個 Guest OS 為例,打開 Guest OS Ubuntu-K8s-Master 的「編輯設定」,接著顯示硬碟的細部設定,把控制器位置的屬性紀錄下來,如下圖紅框處。 例如:SCSI (0:0),或是 SATA (1:0) 等等。記得每個硬碟的控制器屬性都要記錄下來。
- 調整 Guest OS 的進階組態參數設定,針對每個硬碟都需啟動 CBT 參數設定。
從「編輯設定」中進入 「虛擬機器選項」,再往下捲動到「進階」,點開進階的細部設定,可以看到有「組態參數」的項目,點選右邊的「編輯組態」來進行進階的 CBT 參數設定。以下步驟是參考群暉官方文章 How to enable CBT manually for a virtual machine 而進行設定。也可以參考 VMware 的官方知識庫文件 Changed Block Tracking (CBT) on virtual machines (1020128) ,兩篇內容說明幾乎相同。
可以先透過右上角的搜尋框,先敲入 ctkEnabled 來尋找是否已經有設定過相關參數。預設應該是沒有任何 ctkEnabled 的相關參數設定。所以我們就要來把有關 CBT 的組態參數加入。參考群暉官方文件可以了解 ctkEnabled 為全域的 CBT 組態參數啟動控制設定,若設定為 FALSE,即使後續任何硬碟控制器的 CBT 參數設定為 TRUE,也是不會啟動 CBT。
所以我們需要先新增一個參數名稱為 ctkEnabled,參數值為 TRUE。其次就是針對每一顆硬碟的控制器來設定啟用 CBT ,以這個 Guest OS 為例,只有一顆硬碟,而且使用 SCSI (0:0),所以就新增一個參數名稱為 scsi0:0.ctkEnabled,參數值也是 TRUE。以此類推,如果有多顆硬碟都想啟用 CBT,則每顆硬碟都應新增相關 ctkEnabled 的設定。或者是使用其他種類的硬碟控制器,例如使用 SATA (1:0),則參數名稱就應該設定為 sata1:0.ctkEnabled。
新增完畢後按下確認以及儲存後,然後透過 SSH 進入 ESXi 中去檢視 Guest OS 的 vmx 設定檔是否已確實增加 ctkEnabled 的相關設定。
透過 ESXi 管理介面,將 Ubuntu-K8s-Master 這個 Guest OS 重新啟動之後,應該就會發現多了一個 xxxxxxxxx-ctk.vmdk 的差異化的虛擬磁碟檔案。Active Backup for Business 就是透過這個檔案來進行差異比對。
- 回到 Active Backup for Business 的任務設定
重新檢查所有 Guest OS 的參數設定是否都已完備。按下「重試」按鈕重新驗證所有的設定。透過上述調整 Ubuntu-K8s-Master 的參數設定後,Active Backup 檢查就會改為顯示成功。
剩下就是每個 Guest OS 都去調整 ESXi 的 CBT 設定了。全部設定完成後,剩下的任務設定就不外乎是任務排程時間,以及保留備份的版本數量設定,設定很簡單,這邊就不再多做贅述了。
- Active Backup for Business 任務清單
任務設定完成後就會依據排程時間的設定開始進行備份,可以從「任務清單」中查看備份結果及狀況。