當客體機在 Proxmox VE 節點上運作且客體磁碟儲存於節點的本機儲存即區時,若想要讓客體機的磁碟資料在其它節點也保有一份而且能夠經常更新,以用來避免因為節點故障時,需要從備份檔還原時的較長時間,或者是因為備份間隔較長而遺失了中間的重要資料,Proxmox VE 可以做到嗎?
可以,在 Proxmox VE 當中提供了「複寫」機制,可以將客體機的磁碟排程複寫至其它節點之中存放,大幅提升因為使用本機儲存的資料即時異機保存能力。
要將客體機建立複寫排程,請選取客體機後,切換至 複寫
頁籤,按下 增加
按鈕。
準備增加複寫排程
進入增加複寫作業選項視窗後,在 目標
下拉清單可以選擇要複寫至那一個節點存放,排程
欄位裡可以選取要進行複寫的排程時間點,也可以直接輸入時間字串,它與 CRON 的排程定義格式相同,此處我選擇 每 2 小時
複寫一次。
這裡提供幾個自訂時間的 CRON 範例語法:
mon..fri 03:00
*/1
*/15
19:00
mon..fri 8..17,22:0/15
12,14,16,18,20,22:5
準備增加複寫排程:目標與排程
在 速率限制
欄位可以做複寫時的限制,以避免因為複寫作業佔去太多網路傳輸資源而影響其它服務的運作。當內容確定無誤後,請按下 建立
按鈕。
準備增加複寫排程:速率限制
建立完成後,可以在清單中看到有一筆新的排程複寫作業,由於目前還沒開始進行,所以它的 上次同步
、期間
欄位都還是空的。
增加複寫排程完成
技巧:
若該客體機很重要,想要讓它複寫到好幾個節點時,可以建立多個排程複寫指向不同節點即可。
提醒:
要使用複寫機制的必要條件:複寫來源與目的節點必須有同樣名稱的儲存集區,而且都是 ZFS。因為複寫機制是基於 ZFS 的快照與快照傳送功能所衍生而來。
當複寫排程時間到達後即會開始複寫作業,或是可以手動按下 立即執行排程
按鈕,它也會在 1 分鐘內啟動複寫作業,複寫中的作業會在狀態顯示轉動中的圖示。
正在進行排程複寫作業
提醒:
因為它是基於 CRON 排程進行複寫作業,所以按下
立即執行排程
時會在下個準點 1 分鐘觸發執行。
當排程複寫作業完成時,可以在作業記錄視窗裡看到 successfully imported
以及 end replication job
的字樣,清單中也會顯示 完成
、 上次同步時間
及 期間
內有顯示結果。
進行排程複寫作業完成 1
進行排程複寫作業完成 2
客體機是存在於 host-106
這個節點,我們可以選取 host-111
的儲存集區 vmdisk-2
,切換至 VM 磁碟
內檢查剛剛所設定要複寫的客體機磁碟,確實已經複寫一份在此。
確認複寫作業磁碟狀況
複寫機制因為是基於 ZFS 的快照機制與快照傳送而來,所以它的作業效率很高,只需要先以 ZFS 製作快照後,再把此份快照傳送制目的節點存放即可完成,幾乎沒有太多的運算、檢查、壓縮等等的耗損。
上一章我們整合 Proxmox BS 進行備份,納入增量備份後已經把時間由初次備份 5 分 26 秒,做到第二次備份時只耗費 30 秒;而採用複寫機制後,第二次備份時間僅須 9.6 秒。
現有網路傳輸是採用 1Gbps,若網路傳輸速度更快還可以縮短更多的時間。
第二次以後的複寫作業時間
如果只是將客體機磁碟複寫至其它節點,對我們直接應用的效果並不太大,但搭配上遷移機制後時間效率的提升就立刻感受明顯了。
先前我們對客體磁碟放在節點本機儲存集區的客體做遷移時,要完整的把整個客體磁碟搬移至另一個節點,所耗費的時間相當久,而現在預先啟用複寫機制後,在遷移時系統只需要製作一份最新的快照後傳送至另一個節點,所要傳輸的客體磁碟量就少去很多。
在下圖的遷移作業記錄中可以看到,遷移作業自動判斷這部客體機已經有一份複寫放在目標節點,所以它立即製作一份臨時快照傳送即可,而這次的容量只需要傳送 2.67MB
,而不需要傳送客體機的實際的磁碟容量 20GB
,速度自然是大大加快。
搭配複寫機制時遷移客體機的磁碟傳輸量
遷移完成後,客體機已經由來源節點遷移至目標節點繼續運作,同樣在過程中繼續服務。
複寫機制時遷移客體機完成
另外,先前我們為這個客體機設定的排程複寫作業是 host-106
傳輸往 host-111
存放,當客體機遷移至 host-111 後,它的排程複寫作業會自動反轉,改為由 host-111
排程複寫往 host-106
存放。
遷移客體機完成後排程複寫設定的異動