使用存儲(chǔ)精簡(jiǎn)配置回收未使用的VMDK空間
存儲(chǔ)精簡(jiǎn)配置可以節(jié)省VMware虛擬機(jī)磁盤文件(VMDK)上的空間 ,但回收這個(gè)空間需要使用下文介紹到的工具。
從vSphere 4.0系列測(cè)試版開始,我已經(jīng)嘗試使用虛擬機(jī)磁盤格式(VMDK)精簡(jiǎn)配置,因?yàn)槲覜]有太多的存儲(chǔ)空間備用。
在我們進(jìn)入我發(fā)現(xiàn)的細(xì)節(jié)以前,這里有一些精簡(jiǎn)配置的背景情況。通常,當(dāng)一個(gè)50GB的VMDK被創(chuàng)建,它會(huì)立即在虛擬機(jī)文件系統(tǒng)(VMFS)卷上占用掉50GB的磁盤空間。由于應(yīng)用管理員往往需要比他們真正需要的空間更多的空間,這里有很多昂貴的存儲(chǔ)區(qū)域網(wǎng)絡(luò)(SAN)磁盤容量被用于這些將永遠(yuǎn)不會(huì)被使用的應(yīng)用。當(dāng)你簡(jiǎn)單創(chuàng)建一個(gè)VMDK磁盤時(shí) ,存儲(chǔ)不分配給VMDK空間,除非它是真的會(huì)被使用到的。50GB磁盤空間中只有僅僅10GB的空間被使用,那么只要有10GB的空間就可以了。
只有當(dāng)磁盤被寫入了數(shù)據(jù),50GB的空間才可以說(shuō)被使用了,這是非常合乎邏輯的。但是在存儲(chǔ)上回收那些已經(jīng)被刪除的數(shù)據(jù)的空間是不可能的。一旦精簡(jiǎn)配置磁盤增長(zhǎng),它就絕不會(huì)收縮。這不是因?yàn)樵趦?chǔ)存上或者vSphere級(jí)別的限制,而是因?yàn)閮?chǔ)存和vSphere沒有收到這些區(qū)塊是空的信息。當(dāng)你刪除它時(shí),Windows不會(huì)刪除文件,它只是更新了主文件表和登記這些區(qū)塊從X變更為Y,即這些區(qū)塊現(xiàn)在可以被再次寫入,但空間并不是空的。這就是vSphere和存儲(chǔ)塊都不知道區(qū)塊是可以被回收的原因。
但是,一些存儲(chǔ)廠商,已經(jīng)使用過(guò)特殊的驅(qū)動(dòng)程序,這可以與客戶的操作系統(tǒng)相互通信,并告訴存儲(chǔ),當(dāng)客戶刪除文件時(shí),它可以收回這些區(qū)塊。
使用Storage VMotion收回空間
當(dāng)我***次聽說(shuō)精簡(jiǎn)配置是在2009年戛納的VMworld上,我立即想到,在沒有停機(jī)時(shí)間前提下,我將如何獲得我客戶現(xiàn)有的基礎(chǔ)架構(gòu)。幸運(yùn)的是,在vCenter遷移向?qū)е?,有一個(gè)問(wèn)題,改變數(shù)據(jù)存儲(chǔ),為一個(gè)VMDK或一個(gè)虛擬機(jī)(VM)上所有的VMDK,并立即更改磁盤類型從厚到薄的配置。你可以使用Storage VMotion功能在VMDK上并用這樣的方式收回未使用的空間,但請(qǐng)記住,只有以前未曾被客戶操作系統(tǒng)寫入的空閑空間才可以回收。
作為測(cè)試,我進(jìn)行了如下的操作:
增加10GB的精簡(jiǎn)配置VMDK到一臺(tái)Windows 2003的虛擬機(jī)。
用數(shù)據(jù)填補(bǔ)了VMDK,稍后刪除該數(shù)據(jù)。
在vCenter里,看到磁盤現(xiàn)在使用的空間是10GB 。正如預(yù)期的那樣,通過(guò)在Windows中刪去它,沒有在存儲(chǔ)級(jí)別將數(shù)據(jù)所占空間釋放。
使用Storage VMotion遷移這個(gè)VMDK到不同的數(shù)據(jù)存儲(chǔ)上。但是,這個(gè)過(guò)程沒有釋放掉存儲(chǔ)上的空間。如果在向?qū)е形疫x擇保持磁盤格式或“更改為薄配置磁盤”,結(jié)果是沒有差別的。
這證明,刪除文件并不能收回未使用的區(qū)塊。這仍然是相當(dāng)?shù)睦速M(fèi),這些區(qū)塊不能再次被回收了,所以我考慮其他方式收回這個(gè)空間。
使用sdelete命令收回空間
我下面要使用的工具是來(lái)自Sysinternals的sdelete 。雖然Sysinternals現(xiàn)在是微軟的一部分,并應(yīng)該在Microsoft TechNet網(wǎng)站上面,但是我一直無(wú)法找到它。這個(gè)鏈接是我可以找到的唯一的Sysinternals版本,但它可能是這個(gè)工具的舊版本。如果你找到了這個(gè)工具更新版本的下載位置,請(qǐng)讓我知道。
要收回在Windows VMDK上的空間,就要下載sdelete到本地硬盤。在我的例子中,我使用sdelete清除虛擬機(jī)驅(qū)動(dòng)器中的E盤。運(yùn)行sdelete將清除所有空閑空間,可以使用以下命令: “ sdelete – c E: ” 。由于這是一個(gè)相當(dāng)頻繁的I/O操作,如在生產(chǎn)環(huán)境中你應(yīng)該非常仔細(xì)地計(jì)劃這一行動(dòng)。還要注意到清除以后,該區(qū)塊將真正是空的。如果一個(gè)文件被意外刪除,幾乎是不可能在磁盤上使用數(shù)據(jù)恢復(fù)工具來(lái)恢復(fù)。因此,在用這一工具進(jìn)行試驗(yàn)以前,具有很好的備份是必要的。
在sdelete清除你的硬盤以后,vCenter仍然會(huì)表現(xiàn)出***的磁盤使用情況,因此回收空間的***一步是使用Storage VMotion。由于磁盤已經(jīng)是精簡(jiǎn)配置的格式,在選擇向?qū)?,你可以“保留磁盤格式”或“變更為薄配置磁盤”選項(xiàng)。這兩種方法都將真正空余出未使用的空間。當(dāng)Storage VMotion已經(jīng)完成之后,你可以按下“更新存儲(chǔ)使用”以使vCenter重新計(jì)算存儲(chǔ)空間的使用情況,在此之后,VM將使用遠(yuǎn)遠(yuǎn)少于以前的存儲(chǔ)空間。
使用VMtools收縮選項(xiàng)
在VMware Tools工具運(yùn)行著的Windows虛擬機(jī)里,你可以右鍵單擊該圖標(biāo)并選擇打開VMware VMtools工具。其中一個(gè)標(biāo)簽顯示的將是“收縮”。通常,這個(gè)選項(xiàng)將清除所有未使用的磁盤空間,但是,奇怪的是,這對(duì)精簡(jiǎn)配置磁盤并不起作用。因此,不幸的是,當(dāng)你想收回未使用的磁盤空間時(shí),這種選擇是沒有幫助的。
【編輯推薦】