完美解決虛擬機器佔用硬碟越來越大、刪除快照出現記憶體不足錯誤

huislee發表於2020-11-06

刪除快照出現記憶體不足錯誤解決方案

建立及刪除合併快照

在工作中防止因為虛擬機器導致工作任務延期;可以建立快照儲存當前狀態;刪除時再從後往前逐個刪除所做快照以合併到虛機硬碟中。同一個虛機建立快照越多虛機的執行效率就越慢,刪除合併快照可以顯著提高虛機執行效率。

問題

刪除合併快照時需要大於所刪快照大小的可用磁碟空間。如果空間不夠,在刪除時會報錯誤提示,等你準備好足夠空間後會發現快照管理器裡已經看不到那個快照,雖然此時虛機能正常執行,但無法繼續完成刪除合併快照操作了。

解決思路

目前沒有找到更好的方法,可用的變通方法有兩個:捕捉虛機和克隆虛機。這兩種方法都能達到新的虛機和原虛機一模一樣,且新的虛機會自動刪除合併快照到虛機硬碟中的效果。

方法1:克隆虛機

在這裡插入圖片描述

克隆完畢後,開啟克隆虛機所在目錄,可以看到快照已經被刪除併合併到虛機硬碟:
刪除合併快照時因磁碟空間不夠導致快照管理器看不到快照無法完成的解決方法
關閉被克隆的虛機,然後在VMware Workstation開啟選擇新虛機就能像原先的虛機一樣正常工作了。
clone完虛擬機器後,可以驗證克隆後的虛擬機器是否能夠開啟,終端是否正常,環境是否OK,檔案是否都在。

方法2:捕捉虛機

這個方法屬於殺手鐗,在其他方法效果不大的時候使用,比較適用虛擬機器空間極度需要清理的情況。
優點是可以釋放大量空間,缺點是隻能保留VMware虛擬機器當前的狀態和檔案,丟失其他快照(可以按需先轉到某個快照再匯出OVF,這樣就可以保留快照時的狀態了。同樣,會丟失其他狀態)。

步驟如下: 1、點選要清理的虛擬機器,然後左上角點選檔案,匯出為OVF(只存了虛擬機器當前的狀態,大概有十幾個G),存到其他空閒的磁碟下。
2、將上述步驟匯出的ovf再部署出來,看看虛擬機器是否正常。 如果正常可用,就可以把虛擬機器原來佔用的磁碟清空了,快速釋放大量空間。
如果虛擬機器不正常,試試重新匯出OVF。

VMware虛擬機器佔用的空間進行瘦身

原因描述

隨著繼續安裝新的軟體仍然在增大中,即使在ubuntu裡面刪除了檔案仍然在windows主機中佔用那麼大的空間。但是在ubuntu下通過命令df
-h檢視,獲取到的硬碟佔用空間並沒有那麼大,非常的奇怪。

網上的說法是:“虛擬機器上的Linux等系統認為.vmdk是一個硬碟,將檔案刪除後其可用空間可以恢復,重新利用;而對windos系統來說.vmdk是一個檔案其變大後是不可能自動變小的。
針對以上原理,已變大的.vmdk檔案是無法減肥的,即使你將所有資料刪除,此檔案依佔用windows的硬碟空間仍然不會改變。”

網上方式1:壓縮磁碟。使用命令vmware-toolbox-cmd disk shrinkonly壓縮磁碟,如下圖所示。感覺效果不明顯。

sudo vmware-toolbox-cmd disk shrinkonly

在這裡插入圖片描述

網上方式2:壓縮.vmdk方法
在虛擬機器Ubuntu中,執行以下命令:

cat /dev/zero > zero.fill
rm -f zero.fill

在主機上操作
退出虛擬機器,使用vmware-vdiskmanager.exe來shrink檔案*.vmdk。

如我的VMware安裝在F盤,在windows的命令列中:
$ F:\>cd VMware
$ F:\VMware>vmware-vdiskmanager.exe -k "F:\UbuntuVMware\Ubuntu1804\Ubuntu 64-bit.vmdk"

檢視*.vmdk檔案,已經縮小了。

其他實用方式
方法一:VMware自帶的清理磁碟

這個方法是VMware自帶,具有普適性,對快照等檔案不造成影響。 步驟如下:
1、將要清理的虛擬機器關機。
2、右鍵該虛擬機器——>管理——>清理磁碟,VMware會自動提示可清理的磁碟大小,點選確定等待清理完畢即可。

方法二:VMware自帶的碎片整理和壓縮

這個方法也是VMware自帶,具有普適性,對快照等檔案不造成影響。碎片整理花費時間可能比較長,有個心理準備。 步驟如下:
右鍵該虛擬機器——>設定——>硬體——>硬碟——>碎片整理,整理完成後,點選壓縮。

方法三:在虛擬機器處於關機狀態時存快照

**

關機狀態的虛擬機器存的快照所佔空間非常小,而正常開機狀態虛擬機器直接存快照的話,動輒十幾個G。
這個方法需要平時存快照的時候就注意。如果不想刪除快照,又受困於空間不夠,可以試試這個辦法。

關機和開機狀態存快照的區別是:
關機快照佔用空間小,恢復快照時虛擬機器處於關機狀態,需要重新開啟才能使用,這個開機過程和我們普通的物理機器開機是一樣的。
開機快照佔用空間大,存快照時會將所有當前的系統資訊都存下來,包括正在使用的軟體,開啟的視窗,瀏覽器的內容等等。恢復快照時,虛擬機器就會回到存快照那一瞬間一模一樣的使用狀態中。
如果你只想做一個系統備份以防哪天出現故障無法正常使用,那麼關機快照就可以滿足要求。
如果你是一個測試人員,發現了某個問題,那就選擇開機存快照,會保留所有問題環境的現場細節,方便後續復現和定位。

相關文章