VirtualBox虛擬磁碟增加的原因
如果使用VirtualBox 動態虛擬磁碟,那麼一定會發現經過一段時間的使用之後。虛擬磁碟檔案的大小遠遠超過虛擬機器內顯示的已用空間的大小。這種情況發生的原因就是當虛擬機器內作業系統在需要更多空間寫入檔案時,Virtualbox 會通過增大虛擬磁碟檔案的大小來給虛擬機器提供空間。而當虛擬機器內釋放空間時,Virtualbox不會將已經釋放的空間返還給宿主作業系統。這樣就造成了虛擬磁碟大小不斷上漲,直到到達動態虛擬磁碟大小上限時停止增長。
壓縮步驟
於是 Virtualbox 提供了一種可以將虛擬磁碟中置零的空間釋放出來的功能。這樣只要把虛擬機器中所有未使用的空間置零就可以通過這個功能將空間釋放出來。
1.將未使用空間置零
如果虛擬機器中啟動並執行是Linux
#dd if=/dev/zero of=fullfill
#rm fullfill
如果虛擬機器中啟動並執行是Windows
SDelete 工具寫”零”,下載地址 http://technet.microsoft.com/en-us/sysinternals/bb897443.aspx,在命令列下執行 ”sdelete -c”… 關機…
可以下載Sysinternals Suite
https://technet.microsoft.com/en-us/sysinternals/bb842062/
然後運行
sdelete ?z
2.關閉虛擬機器
3.使用VBoxManage壓縮虛擬磁碟
$VBoxManage modifyhd /path/to/your.vdi --compact
/path/to/your.vdi 為虛擬磁碟的路徑
然後等待它慢慢壓縮完成即可,消耗時間與虛擬磁碟的大小相關。
如何減小VirtualBox虛擬硬碟檔案的大小
虛擬機器使用久了就會發現虛擬硬碟越來越大,但是進入虛擬機器裡的系統用命令看了下,實際佔用的空間遠沒有虛擬硬碟大小那麼大,這個讓人很不爽,而且在分享虛擬機器鏡像的時候也很不方便。VirtualBox似乎沒有提供圖形介面的方式可以讓我們來壓縮虛擬硬碟大小,但是可以通過命令列來實現。經過實際測試,我的一個30多G的虛擬硬碟可以壓縮到13G大小,可見效果還是非常顯著的,這個可以壓縮的空間取決於你虛擬機器內真實的空間佔用大小。
VirtualBox同時支援自己的虛擬硬碟格式VDI和Vmware的VMDK格式,兩種格式的壓縮減有不同。
1. 磁碟重組
第一步要做的是磁碟重組,開啟虛擬機器,執行下面的命令:
Linux系統:
sudo dd if=/dev/zero of=/EMPTY bs=1M
sudo rm -f /EMPTY
Windows系統需要下載Sysinternals Suite並執行:
sdelete ?z
2. 壓縮磁碟
關閉虛擬機器,現在可以開始壓縮虛擬硬碟了
如果你的虛擬硬碟是VirtualBox自己的VDI格式,找到你的虛擬硬碟檔案,執行命令:
VBoxManage modifyhd mydisk.vdi --compact
如果你的虛擬硬碟是Vmware的VMDK格式,那就要麻煩點,因為VirtualBox不支援直接壓縮VMDK格式,但是可以變通下:先轉換成VDI並壓縮,再轉回VMDK。執行命令:
VBoxManage clonehd "source.vmdk" "cloned.vdi" --format vdi
VBoxManage modifyhd cloned.vdi --compact
VBoxManage clonehd "cloned.vdi" "compressed.vmdk" --format vmdk
事實上,執行命令的過程中可以發現:在從VMDK轉換到VDI的過程中似乎已經做了壓縮,檔案大小已經減少了很多,第二條命令反而沒見到檔案大小有什麼變化,所以這裡第二條命令應該可以省略了。
增大VirtualBox虛擬硬碟容量
VirtualBox在建立虛擬磁碟時可以選擇動態擴充和固定大小兩種方式,然後設定磁碟空間大小。
動態擴充類型: 最初只需佔用非常小的物理硬碟空間。然後不斷增加(最大到當前指定的大小),具體大小根據虛擬電腦的實際需求動態分配。
固定大小類型: 一旦建立就需分配指定大小的物理磁碟空間給該虛擬硬碟使用,效能上有一定優勢。建立這種類型的虛擬硬碟需花費較多的時間.
當動態擴充方式達到上限時,怎麼辦呢?目前VirtualBox沒有提供修改動態擴充磁碟大小的方式。 可以按照以下方法, 在以下操作之前請先備份你的VirtualBox虛擬機器中的資料。
在VitrualBox中擴大虛擬磁碟
要增加VirtualBox虛擬磁碟的空間,你必需使用用VBoxManage命令列的形式。
首先,完全關閉需要操作的虛擬機器以Window7為例。
其次,從開始——程式——附件 中開啟命令提示字元視窗,並切換到Virtualbox程式所在位置,可運行命令:
cd “C:\Program Files\Oracle\VirtualBox”
重新調整大小磁碟大小為80G:
VBoxManage modifyhd “C:\Users\Chris\VirtualBox VMs\Windows 7\Windows 7.vdi” ?-resize 81920
注意在resize之前要使用雙破折號!操作時把上面的磁碟路徑替換成自己的VirtualBox磁碟路徑,大小是以MB為單位的。
要說明的是以上過程只是VirtaulBox磁碟的空間大小,並沒有擴大對應分區的大小,下面就教你怎麼擴大分區。
擴大虛擬機器分區
現在你有更大的虛擬磁碟了,然而對應的作業系統裡分區的大小還是原來那樣,並沒有增加。因此不能訪問任何剛剛增加的空間。以下擴大分區大小的方法同樣適用於VMware虛擬機器。
擴充客戶機作業系統的分區就像擴充一個實體電腦的真實分區。必須在虛擬機器裡的系統未運行狀態下進行,正像你不能在系統還在運行時來擴大C盤的大小。
這時, 有2個選擇:
1. 如果你想增加一個新的分區,而不需要增大C盤的空間. 則可以直接Format該55G未分配的空間. 產生一個新的分區.
2. 如果你想增大C盤空間, 則需要使用GParted工具, 採取下面的方法:
我們可以使用GParted調整虛擬機器的分區。GParted簡單的可以說是一個”PE系統”,運行在Linux環境下。什麼是"PE系統", refer to: http://pchome.baike.com/article-100264.html
首先,下載 gparted。下載地址為: http://gparted.sourceforge.net/download.php. 我下載的版本是: gparted-live-0.14.1-6-i486.iso.
進入windows7虛擬機器設定選項,在IDE控制器下的CD/DVD磁碟機選項裡選擇剛剛下載的GParted ISO檔案。
然後啟動虛擬機器,系統將從該ISO鏡像啟動,GParted會提示若干問題,可以一路”Enter”。
在GParted啟動完成後,右鍵你想要增加的分區。
指定新一個新的大小,可以拖動捲軸來調整分區容量到合適的大小甚至到最大值。單擊“resize/Move”確認。
最後,單擊“Apply”按鈕。
完成調整後,關閉虛擬機器並移除GParted ISO檔案,再啟動虛擬機器,在虛擬機器裡windows會檢查磁碟檔案系統,中間不能中斷這個檢查過程。