由於 ESX snapshot 的方便性,許多人習慣將它用於 VM 的備份用途,可以任意回到想要的時間點,但其實這並非正確的做法。ESX 快照的用途很廣泛,事實上 VMware 許多技術是以 snapshot 為基礎來達成的 (例如 VCB、VDR、Storage vMotion、Lab Manager),並且許多第三方的軟體也需要透過 VMware API 來呼叫 snapshot 的功能來達成任務。
當我們要針對 VM 作重大變更,擔心出問題時,當然可以藉由快照的幫助,讓自己後悔時可以回復當時狀況。但如果你是將 snapshot 當作每日,或是照三餐備份,三不五時就來快照一下的話,那麼就要小心了。你可能會遇到當要刪除快照時,出現錯誤訊息,沒辦法刪除,或者告訴你空間不夠。但是去檢視 Datastore,明明還有 10%,20%,30% 的空間呀? 為何還是無法刪除快照?
那是因為你不了解 ESX 刪除快照的原理及作法。在以前,ESX 要刪除某一快照採用的是先與前面的一份快照合併,回到上一動再刪除目前的 delta.vmdk,意思就是說,如果一個 VM 有多份快照,當你要刪掉所有的快照,表示 VM 確認是要保持現在狀態無誤,不需要有以前的狀態了。那麼,你的原始 VMDK 就必須將這些快照檔案,從後至前一個一個合併進來,才能刪除這些快照檔案,因為當我們在 snap 的時候,原始 VMDK 會保持當時的狀態,後續的讀寫動作,全部在快照檔案變動,原始檔案不會有任何異動。
所以要刪除一個快照,那麼就需要至少與現任快照的磁碟空間,才能將現任快照與前任去合併。當你一次想刪除所有快照,假設有 10 份 snapshot,那就意味著要經歷 9 次的倒推、累加整併,才能寫回原始的 VMDK。而你的 Datastore 空間,有沒有這 9 次整併所需的暫存空間呢? 要記得,此時快照檔案是還不能刪除,不能釋放出空間的。這就是在刪除快照時,常會發生空間不足的原因。
在 ESX 4.0 update 2 以後,VMware 改變了 snapshot 整併的方式,採用正向合併、立即移除的方式,總算不再需要大量的暫存空間,也增加了效能。詳情如下:
不過在此還是建議大家,別把 snapshot 當作 VM 日常備份來使用,儘量尋求正確的 VM 備份解決方案。
留言列表