題 縮小虛擬框中ova文件的大小


我有一個Ubuntu 64位虛擬機,我從一個~1GB的ova文件中獲取,我在VMware vSphere下使用它來安裝更多的軟件,並使用該系統對幾個佔用2-3GB空間的數據集,但現在我刪除了這些大文件,我期待它新生成的ova文件也需要大約1.1GB的空間,而是需要大約3GB。如果我查看virtualbox中的.vmdk文件的詳細信息,我會看到以下內容:

Hart Disk: SATA Port 0
Type (Format): Normal (VMDK)
Virtual Size: 8.00 GB
Actual Size:  7.90 GB
Details: Dynamically allocated storage
Location: /somewhere/myVM-disk1.vmdk
Attached To: myVM.virtualbox

導出本機時ova的大小約為3GB。

我有什麼想法可以縮小它嗎?


4
2017-11-08 15:56


起源




答案:


當OS首次寫入特定扇區時,將分配.vmdk中的空格。一旦寫完,它就會被永久分配。

因此,您需要向虛擬機添加第二個動態大小的虛擬HDD,然後從LiveCD啟動VM,使用fdisk創建分區並複制所有文件(cp -R)。然後關閉VM,交換虛擬HDD,再次啟動並驗證一切正常,然後從VM分離原始虛擬HDD並將其作為主機系統磁盤上的文件刪除。

在VM中使用dd直接複製將無法正常工作,因為它會將每個扇區寫入目標.vmdk文件,因此它將擴展到其完整大小而不是縮小。


4
2017-12-03 10:16





看文章 如何縮小動態擴展的guest虛擬機映像

它描述瞭如何通過以下方式收縮磁盤:

  1. 使用可以將可用空間清零 zerofree 對於Ubuntu
  2. 使用縮小VM
    VBoxManage modifyhd my.vdi –compact

8
2017-12-03 15:34



我按照文章中的說明嘗試了它,從3.5GB下降到3.0GB。我無法複製最後一個命令,因為我從導出中得到一個* .ova文件: VBoxManage modifyhd my.ova -compact 抱怨 Could not get the storage format of the medium - 719016
此方法沒有導出,也沒有.ova文件:您只需運行zerofree 在VM內部,關閉它,然後緊湊。 - harrymc
得到它了。我只有 *.vmdk 文件,所以我先用vdi轉換為vdi VBoxManage clonehd --format VDI my-disk1.vmdk my-disk1.vdi 然後應用了compact命令,但vdi大小根本沒有改變。 - 719016
某些文件必須留在文件末尾。刪除最大可能的文件,然後按照 本教程。也 本文 以及 這個帖子 可能有幫助。 - harrymc
錯字:“文件結束”=>“磁盤結束”。 - harrymc