Proxmox VE 已經內建 ZFS 檔案系統,同時也具備 KVM 虛擬機、LXC 容器的快照功能,但好像還少了什麼東西?
若您有使用 PVE 的經驗,應該就能夠體會「怎麼少了排程快照功能?」這句話。
註:Proxmox 6.0 起,請改用 cv4pve-autosnap。
功能需求
先參考一下隔壁棚的功能狀況,來自 FreeBSD 體系的 FreeNAS 套件。
FreeNAS Snapshot Task
FreeNAS 是一款功能完整又提供容易操作 WebUI 的儲存伺服器套件,底層的 ZFS 檔案系統的最大特色之一就是快照機制,同時也在 WebUI 介面上提供了方便的設定,滑鼠簡單的點選設定後,即可完成排程自動快照的功能。
隨著現在 Proxmox VE + Local ZFS 越用越多的情況下,有沒有好方法可以達到類似效果呢?
功能介紹
就在不久前,2018 年 12 月的 PVE 進階研討會我也介紹過這個小工具。
eve4pve-autosnap
這個 eve4pve-autosnap 套件,主要基於 Proxmox VE 提供的 ZFS 達成自動排程快照功能。
主要功能項目
- 支援 PVE 叢集 Cluster 與獨立節點 Separate Node
- 整合 PVE Syslog 記錄
- 支援 KVM 與 LXC
- 提供系統排程機制
- 支援快照保留份數上限與自動清理
- 可以設定例外條件
安裝方式
請到專案網站下載最新版 deb 安裝檔,先查看最新版本資訊如下:
查看 eve4pve-autosnap 最新版本
確認版本號以後,就可以進入到 PVE 主機的命令列下進行操作。
下載最新版本並安裝
wget https://github.com/EnterpriseVE/eve4pve-autosnap/releases/download/0.1.8/eve4pve-autosnap_0.1.8_all.deb dpkg -i eve4pve-autosnap_0.1.8_all.deb
安裝成功後執行畫面
使用指令
相關指令已經在程式本身的 help 中有詳細說明。
指令格式
eve4pve-autosnap <指令> [參數] [選項]
可以使用的 <指令> 如下
- version:查看程式版本
- create:建立排程快照作業
- destroy:刪除排程快照作業
- enable:啟用排程快照作業
- disable:取消排程快照作業
- status:查看所有快照的狀態
- clean:清除所有已經做過的排程快照 (非 autosnap 所做的快照不受影響)
- snap:立即進行快照作業
可以使用的 [選項] 如下
- --vmid=字串:VM/CT ID (如 100, 101)
- --exclude-vmid=字串:要排除的 VM/CT ID (如 100, 101)
- --vmstate:以包含記憶體狀態的模式做快照
- --label=字串:可自行定義產生的快照名稱標籤 (通常為 hourly、daily 等)
- --keep=數字:要保留的快照份數上限,預設保留最近1份
- --syslog:將執行結果寫入 Syslog 記錄
舉個例子,若需要立即做一份快照,目標是 ID 為 104 的虛擬機,並保留最近10份,可使用以下指令:
立即製作快照與清理
eve4pve-autosnap snap --vmid=104 --label='daily' --keep=10
立即製作快照與清理執行結果
同時,eve4pve-autosnap 所製作的快照是整合 PVE 原生的快照機制,所以我們可以在 WebUI 上看到正確的資訊。
PVE WebUI 呈現正確快照資訊
雖然 ZFS 製作快照的速度非常快,但如果快照份數太多(視該主機的硬體規格與效能而有所不同)反而會拖慢整體效能,藉由 eve4pve-autosnap 的自動清理機制,可以幫我們保存所須的份數,同時又可以避免過多的快照影響 ZFS 能力。
其它指令參考:
建立快照排程作業
eve4pve-autosnap create --vmid=104 --label='daily' --keep=10
刪除快照排程作業
eve4pve-autosnap destory --vmid=104 --label='daily' --keep=10
取消快照排程作業
eve4pve-autosnap disable --vmid=104 --label='daily' --keep=10
啟用快照排程作業
eve4pve-autosnap enable --vmid=104 --label='daily' --keep=10
查看快照排程狀態
eve4pve-autosnap status
排程調整
如果對於 eve4pve-autosnap 產生的排程指令有興趣,或者想要進行修改,可以開啟這個檔案 /etc/pve/eve/autosnap/eve4pve-autosnap.cron 。
特別說明,eve4pve-autosnap 會利用 PVE 的叢集機制,自動把設定複寫到所有節點,因此只要在一台節點上操作即可適用整個叢集(僅用於排程的建立、修改與刪除,立即製作快照仍需在該節點進行),非常方便。
參考
- eve4pve-autosnap
https://github.com/EnterpriseVE/eve4pve-autosnap
- [議程簡報]Proxmox VE 叢集、高可用性與其它進階技巧
http://blog.jason.tools/2019/01/proxmox-ve-cluster-ha-others.html
- 企業應用經驗:開源儲存系統「FreeNAS」
http://blog.jason.tools/2016/12/freenas-nas4free-nexenta.html