VirtualBox vdi 虛擬磁碟檔案瘦身

virtualbox_vdi

VirtualBox的好處是開源的軟體,對GuestOS的整合程度並不輸VMware.
所以目前同事間幾乎都從VM改成VB,不過虛擬的磁碟就算是選動態分配,
一但佔用過的空間就算後來檔案在GuestOS裡面移除,也是回不來了.

也就是說用了一段時間,就算實際容量在20G上下,但虛擬磁碟經刪刪改改
在Host OS也可能長到50G之譜.

而VirtualBox本身是可以釋放這些空間的,只要用內建指令

VBoxManage.exe modifyhd XXX.vdi -compact

不過實際去Run這個步驟可會發現不是沒有作用就是只有壓縮一點點空間.
翻查了網路,發現要把不用到的空間標誌成全零的區域才會被節省下來.
因為實際刪除檔案只不過是把head link給抹去,並把當下磁區標視為可寫.
實在上的資料實體還是存在這個磁區中.

如果是Guest OS是Windows系列可用SDelete tools: “sdelete -c”來清除,
但工作機通常都是Host OS配Windows,而Guest OS用Linux,所以得找Llinux下的方法.

SDelete v1.61 下載

Linux下的解決方案是zerofree,而ubuntu 10.04可以透過apt直接安裝.
不過實際上最好還是用LiveCD來執行,試過single mode的確一直跟我煩,哈滴Busy.
進LiveCD後先掛載成ro,然後就可以直接開zerofree來抹啦!

# sudo mount -n -o ro -t ext4 /dev/sda1 /mnt/disk
# sudo /mnt/disk/usr/sbin/zerofree -v /dev/sda1
Ubuntu 10

原本擔心zerofree會讓vdi檔膨脹到當初設定的磁碟機(分區)大小,還好整個跑完並沒有虛胖.
而我自己是把compact指令寫個script,這樣只要去點他就可直接跑壓縮了.

@echo off
"c:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyhd "D:\VirtualMachine\Ubuntu 10.04\Ubuntu 10.04.vdi" -compact
;pause

Refers:
縮小 VirtualBox VDI 格式占用硬碟的空間
VDI大瘦身
YOSEF:磁碟影像 .vdi 縮小檔案

Microsoft:SDelete v1.61

Facebook Comments
Scottj Written by:

史考特 喜歡3C 愛拍照