2022年11月22日 星期二

VMWare vSphere 7 - 儲存空間爆滿,管理與刪除快照

如果遇到 ESXi 儲存空間不夠的狀況,可能出現虛擬機無法正常啟動的狀況,這時候有兩種處理方式,一是先刪除無用的快取紀錄,二是再買個硬碟去擴充儲存空間,本文介紹 ESXi 虛擬機的快照刪除的注意事項。


示範 ESXi 版本:7.0.3

遭遇狀況:

運作過程中,突然虛擬機無法進行任何操作,紀錄顯示 [ 失敗- 目前無法允許該作業,因為該虛擬機器有一個未解決的問題:「msg.hbacommon.outofspace: There is no more space for virtual disk 'xxxx-000001.vmdk'. You might be able to continue this session by freeing disk space on the relevant volume, and clicking Retry. Click Cancel to terminate the session.」


這問題的起因是使用者進行了快照,快照的需求空間將目前剩餘的儲存空間占滿了,導致虛擬機無法運行。

ESXi 的快照是 Copy-on-Write 的運作方式,進行快照時,系統會建立備稱為 delta.vmdk 的新檔案(實際的檔案名稱通常是 xxxxxx-00001.vmdk),隨後任何的新增或異動的寫入 I/O 都會被導入到新建立的 delta.vmdk 檔案,不再寫入原始 vmdk 檔案,原始 vmdk 檔被鎖住變成唯讀狀態。

每進行一次快照,就會建立一個新的 delta.vmdk 檔案,並將前一次快照的 delta.vmdk 檔案鎖住變為唯讀狀態,然後依靠新的 delta.vmdk 檔來接受虛擬伺服器的新增或變動的寫入資料。

既然知道目前是新增的快照無法寫入,導致虛擬機無法開機,那我們想要釋放出快照的佔用空間,就要進行刪除快照的作業,由於 Copy-On-Write 類型的快照之間形成連鎖關係、彼此相依,因此不能任意刪除快照,否則就有導致其他快照不可用的問題。

以 ESXi 來說,進行快照後,隨後新增或異動的資料,都寫入在新增的快照檔案中,如果不做任何處理而直接刪除快照檔案,那也就會失去這些新增與異動資料,也就是說 ESXi 雖然進行了刪除快照作業,實際上被刪除的是「還原點」,而不是真的刪除那份快照檔案內所包含的資料。

執行刪除快照動作後,只是少了那個快照還原點而已,但那份快照所包含的資料,會先被合併(Consolidate)到前一份快照中。

因此在執行刪除快照功能時,實際上進行的是「先合併、再刪除」的作業,以確保虛擬伺服器資料的完整性與可用性。


假設先後為虛擬機建立了 A、B、C 三份快照,如果選擇刪除快照 B,系統會先把 B 的資料合併到 A 之中,然後再刪除 B。如果選擇刪除虛擬機的所有快照,ESXi 主機就會依序將快照合併到前一份快照中,從最早的一份快照開始合併,每份的快照合併之後便會立即刪除。


在建立快照後,如果很長一段時間都不刪除,隨著新增與寫入資料的增加,快照檔案將會變得越來越大,刪除快照時所執行的合併動作將會耗去非常多的時間,有時需要幾個小時才能完成刪除與合併作業。

刪除快照時,如果原本虛擬機所建立的是 "完整佈建消極式歸零" 或 "完整佈建積極式歸零",則原始的 vmdk 檔案大小不變;如果原本虛擬機所建立的是 "精簡佈建",則原有的 vmdk 檔案大小將會變大,也就是加入快照所產生的大小加入其原始的 vmdk 檔案中。


官方刪除快照常見問題:

https://kb.vmware.com/s/article/1023657?lang=zh_CN



沒有留言:

張貼留言