FreeNas 在 9.3 版時新增加了一個功能,除了原先ZFS檔案系統有的 snapshot 功能外,也跟 VMWare ESXi 設備整合可以做 snapshot,這次增加的功能其實在手冊上沒有說得很清楚,是上網找資料才看到有人實作出來並測試成功,覺得可以來玩玩看,請參考: https://b3n.org/freenas-9-3-on-vmware-esxi-6-0-guide/
原先 ZFS 做 snapshot 時會把目前檔案的狀態記錄起來,但是如果把虛擬機放在 FreeNas 的 NFS/iSCSI 的分享上就會產生 VM Guest 上面記憶體的資料有遺失的風險,比如說資料應該於此時由記憶體存檔但存到一半或不存檔,這樣會導致資料不完整性,更嚴重有可能會導致虛擬主機損毀。
為解決這個問題 FreeNas 做了一隻程式會於做 snapshot 的時候主動去通知 VMWare 的 DataStore,要求這個 DataStore 上面的 VM guest 做一次暫存資料寫入 (dirty memory to disk),來確保此時的備份資料狀態已經更新到最新狀態 (快速地建立一個 snapshot,完成處理後就立即刪除),這邊的設定是需要連結到 ESXi Host 或 vCenter 上,選擇 FreeNas 端的 Volume,然後選擇相對應的 DataStore 即可。(以上是我的理解有誤請糾正)
在安裝上請參考以上文章,因為我是利用現有的環境來做,所以沒有完全依照其步驟,同時這篇文章引起很多共響,有空也可以去拜讀看看,所以設定的步驟請參照,我只說明我的設定及測試的結果。
首先我的環境是 vCenter 6 但是 ESXi 都是 5.5 的版本,雖我們買了新的授權但是都還沒有更新,FreeNas 是安裝最新的 9.10 Stable 版本,實測前並執行了一次 Update,檔案分享是在原有的 volume 在切割一段出來,選擇 NFS 的分享模式,直接在vCenter 把這個分享加到 cluster 上面去.
接下來找兩台 windows 7 的測試主機,把資料搬到以上的 NFS 分享區上面,複製的同時順便設定 VMWare-snapshot 及 Periodic Snapshot Tasks 的排程,因為備份不太需要太過於密集執行,所以選擇每4小時做一次 snapshot;Freenas 軟體是安裝在舊的 Dell 1U的主機上,4G RAM,兩顆硬碟做 mirror,兩個網卡也做 LoadBalance.
由於這台主機實在很舊,前一陣子因為 HDD 故障的關係被打下來,現在換了一個新的 HDD 後重新服務,但速度實在粉慢,平均速度不到 10M Byte/Sec,複製過程中花了很多時間。
要留意的是在設定 VMWare-snapshot 的時候除了連線資訊外,要記得選對 ZFS Filesystem 要選擇 Freenas 的 volume,Datastore 選擇在 VMWare 環境的相對應 Datastore 喔,選錯了就變得沒有作用了.
接下來是測試,正常的環境下 freenas 會依照所訂的時間自動作 snapshot,依照先前的設定這些 snapshot 會被保留 14 天 (2周),要回復可以做整個 volume 的 Rollback,意思是所有的 VMWare Guest 狀態會完全恢復,這種方式套用在正式環境可能不太適用,但是在測試環境倒還不錯,如果有需要重複性去測試,或者是一些特定的教育訓練環境。
全部回復模式只能回復最近的一次 snapshot,回復前要把 VMware Guest 關機,因為是複寫到原來的位置,開機中還原可能會導致一些無法預期的問題;還原時大概需要不到2秒的時間系統回報還原成功,此時就可以到 vCenter / Client 端去把關機的 VM Guest 啟動,此時就會恢復到 snapshot 的狀態,當然首次啟動 windows 7 會抱怨上次不是正常關機。
除了就少用到的整個 volume 回復,有另一種是把 snapshot clone 出來使用,只要點選後 Freenas 會自動在 volume Manager 多一個新的 volume 產生,如果名稱沒有改變,就會依照 snapshot 的名字來命名
此時就可以把 VM Guest 獨立複製出來使用。
如果再加上 Freenas 的 replication 的機制,甚至於可以把以上的備份 snapshot 傳輸到另一台在異地端的 Freenas,要做到異地備份是很輕鬆的事情,做到異地備援也可以把 Data lost 的時間再大幅縮短。
以上的方式還不建議放在正式環境或很重要性的服務,因為此機制雖驗證過是可以使用,但完整度及相容性還不一定,建議拿來做可有可無的服務,但其備份所花的空間及時間真的減少很多,各位要多多考慮未來的備份方式喔.