建立 Proxmox VE 叢集以後,若沒有做共用儲存 (Share Storage) 而是採用超融合 (Hyper Converged) 模式,虛擬機器的磁碟也會存在 Node 節點裡,則會面臨節點故障時無法有虛擬機器磁碟備份的存在,更無法做備援,甚至無法使用高可用性 (High Availability) 的能力。
在這種情況下,Proxmox VE 有什麼應對方案?
複寫要求
在 Proxmox VE 平台,提供了虛擬機器與容器都可以使用的複寫 (Replication) 方案,它可以設定排程,定時將虛擬機器與容器抄寫一份最新狀態到另一個節點,若原節點故障時,在另一個節點就會有一份副本可以使用。
想要使用 PVE 所提供的複寫功能,需要滿足以下條件:
- 來源與目的節點都要位在同一個叢集
- 虛擬機器或容器的磁碟必須放在 ZFS 儲存
- 來源與目的節點要有同樣名稱的 ZFS 儲存
- 目的節點需要有足夠容量的儲存空間
複寫設定
要開始設定複寫功能,請到 [Node 節點] > [VM 虛擬機器 / CT 容器] > [Replication 複寫] > [Add 增加],即可進入設定畫面。
進入複寫設定功能
開啟複寫設定畫面以後,設定項相當簡單,欄位說明如下:
- 目標
請選擇要複寫過去的目標節點,需注意剩餘空間是否足夠。
- 排程
點選下拉清單以後,有內建多個項目可以選擇,例如每30分鐘、每2小時、每天02:30與22:30...等,若不有符合需求者也可以自行輸入。
- 速率限制
若擔心複寫的時候佔據太多頻寬影響到其它運作中服務的效能,可以在這裡設定頻寬上限。
- 備註
可以輸入方便日後回頭看這個設定的說明文字。
- 啟用
打勾表示讓排程工作生效。
設定完成以後,就會出現剛才所建立的這一筆複寫工作。若不想等到排程觸發時間,可以按下 [Schedule now 立即執行排程],系統會在1分鐘內執行這項工作。
複寫工作設定完成與立即執行排程
複寫說明
在複寫過程中會有記錄顯示,但有個需要特別注意的地方:進行複寫這件事的工作 (Task) 並不會所顯示在系統主畫面下方的記錄視窗,要點進來節點或虛擬機器的複寫頁籤才能看見。
要查看正在進行的複寫工作內容狀況,或是上一次複寫工作的結果,可以選取該筆工作後,再按下 [Log 記錄] 按鈕。
查看複寫工作記錄內容
在這個視窗裡,我們可以清楚的知道複寫的各種過程資訊,以及傳輸容量與速度,對於日後掌握問題排除時提供很重要的細節。
複寫完成以後,也可以到目的節點的儲存區做再次確認。
目的節點儲存查看是否複寫成功
如上圖紅框處所示,可以確認在目的節點已經有這台虛擬機器的複寫磁碟存在。
另外,如果來源的虛擬機有做過快照,在複寫時也會一併抄寫過來。上圖中的 vm-129 這台虛擬機器,就是把來源端的名為「to_ssdpool1」的快照給抄寫過來,抄寫過來的快照名稱會是 state 而非 disk。
進階說明
在使用複寫功能時,除了會基本的新增、執行以及查看記錄,還有兩件重點相當關鍵。
自訂排程
在排程定義的格式中,可以使用以下方式進行表示。
- mon..fri 03:00
每週一 (mon) 到週五 (fri) 的凌晨三點做一次,中間的 .. 表示為連續,也可以輸入為 mon,tue,wed,thu,fri 03:00。
- mon..fri
每週一 (mon) 到週五 (fri) 的凌晨0點做一次。
- */2:00
每天的每兩個小時做一次。
- */1
每天的每一分鐘做一次。
- 19:00
每天的下午七點做一次。
- mon..fri 8..17,22:0/15
每週一到週五,早上八點至下午六點之間以及晚上十點至十一點之間,每 15 分鐘做一次。
- 12,14,16,18,20,22:5
在 12:05、14:05、16:05、18:05、20:05、20:05 時間點做一次。
複寫原理
PVE 所提供的複寫功能,是基於 ZFS 快照複寫 (Snapshot Replication) 予以實現的,只要會使用 ZFS 指令者,就可以看出他是怎麼進行。
以 ZFS 指令查看複寫相關資訊
所以,我們可以得知一個非常重要的優點,因為基於 ZFS 快照複寫,所以做完第一次的完整複寫以後,往後的每次排程複寫都只有傳輸異動的部份,也就是說抄寫過去的容量少,速度快。
同時也因為 ZFS 是寫入時複製 (Copy on Write) 的檔案系統,所以在準備那一份要用來傳輸的快照將會非常快。
結論
PVE 提供了許多越來越方便的介面,讓我們得以輕鬆的簡單點選即可完成過往非常複雜的機制,實在是系統管理員保存資料的好幫手。
在完成複寫機制設定以後,若再搭配 PVE 的高可用性 (High Availability) 功能,即可進一步做到自動容錯移轉 (Auto Failover) 的能力,降低需要人為介入處理的時間,也讓系統管理的工作負擔越來越輕。
參考資料
- Storage Replication
https://pve.proxmox.com/pve-docs/chapter-pvesr.html
- 19.8. ZFS 特色與術語
https://www.freebsd.org/doc/zh_TW/books/handbook/zfs-term.html
- zfs(8): configures ZFS file systems - Linux man page https://linux.die.net/man/8/zfs