2019年1月21日 星期一

[工具推薦]Proxmox VE 排程自動快照工具



Proxmox VE 已經內建 ZFS 檔案系統,同時也具備 KVM 虛擬機、LXC 容器的快照功能,但好像還少了什麼東西?

若您有使用 PVE 的經驗,應該就能夠體會「怎麼少了排程快照功能?」這句話。







功能需求

先參考一下隔壁棚的功能狀況,來自 FreeBSD 體系的 FreeNAS 套件。


FreeNAS Snapshot Task


FreeNAS 是一款功能完整又提供容易操作 WebUI 的儲存伺服器套件,底層的 ZFS 檔案系統的最大特色之一就是快照機制,同時也在 WebUI 介面上提供了方便的設定,滑鼠簡單的點選設定後,即可完成排程自動快照的功能。

隨著現在 Proxmox VE + Local ZFS 越用越多的情況下,有沒有好方法可以達到類似效果呢?






功能介紹

就在不久前,2018 年 12 月的 PVE 進階研討會我也介紹過這個小工具。

eve4pve-autosnap



這個 eve4pve-autosnap 套件,主要基於 Proxmox VE 提供的 ZFS 達成自動排程快照功能。



主要功能項目




eve4pve-autosnap 功能完整,最重要的是整合 PVE 原生快照機制。

  • 支援 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


在下圖可以看到,執行快照製作完成以後,由於限定了只保留最新的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 的叢集機制,自動把設定複寫到所有節點,因此只要在一台節點上操作即可適用整個叢集(僅用於排程的建立、修改與刪除,立即製作快照仍需在該節點進行),非常方便。




參考