2019年1月21日 星期一

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



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 達成自動排程快照功能。



主要功能項目




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




參考