廣告

2020 年 8 月
 12
3456789
10111213141516
17181920212223
24252627282930
31  

彙整

ESXi 下的VM硬碟壓縮釋放空間問題

ESXi 下的VM硬碟壓縮釋放空間問題

文章出處 : http://hector958.pixnet.net/blog/post/26399389

==================================================

20110217補充:

關於VMWARE的thin provisioning,繼某SERVER使用CONVERTER匯出方式解決,另外有這台SERVER配置30GB硬碟,系統中剩餘5GB,但是VMDK一直是佔滿30GB/30GB的異常狀態。

同樣的搞了很久無解,當使用以下方法標記非使用中的BLOCK為0後,SVMOTION無效、CLONE去另個STORAGE無效、只有匯出有效。所以確認一件事就是:

VM的CLONE是BLOCK TO BLOCK的搬動;匯出則是建立VMDK後FILE TO FILE的搬動,而BLOCK標記為0的部分沒有被SVMOTION與CLONE的動作影響。

研究之後發現是VMWARE的BUG,當在作SVMOTION的時候,來源與目標磁區的BLOCK SIZE相同的話,會導致BLOCK被標記為0處無法清除,所以必須SVMOTION去一個不同BLOCK SIZE的STORAGE才行。

例如把VDisk00_V1上的東西(BLOCK SIZE=8MB)搬去VDISK01_V4(BLOCK SIZE=8MB),thin provisioning無效。

但VDisk00_V1上的東西(BLOCK SIZE=8MB)搬去ESXi2_ihd(BLOCK SIZE=1MB) ,thin provisioning生效。

當我們使用虛擬機器時,虛擬硬碟的形式可以選thin provisioning,但是明明配置的空間中只用了一半,為何管理上看起來卻大小明顯超過?VMDK的大小也明顯超過?

像這樣 :WINDOS中明明只有用一半:

但是去觀察虛擬環境中去吃的滿滿的:

這明顯有問題,其實是因為WINDOWS的檔案殺了不是真殺,這大家應該都知道。

在WINDOWS之中原本硬碟塞了資料,而後來砍掉之後卻沒有把空間釋放,vmdk大小沒有縮回來,這一點VMWARE就沒有辦法幫我們處理了。

處理的辦法:

首先有空的話最好是WINDOWS硬碟先重組,然後要用SDELETE這個工具程式,去微軟下載這個47K的小程式:

http://www.microsoft.com/taiwan/technet/sysinternals/FileAndDisk/SDelete.mspx

上面連結似乎沒了,請下載微軟瑞士刀工具: http://technet.microsoft.com/en-us/sysinternals/bb842062.aspx

然後複製去虛擬機器的硬碟下,用命令列執行:

sdelete -c c:

這樣會把 c 槽的空白地方都標成0,等他跑完以後,用storage vmotion把這台vm的檔案搬去另一個storge空間,過程中選thin provisioning形式。

等搬完之後,硬碟所佔用空間的大小就縮回來了。