2012年1月16日 星期一

VirtualBox 改變 vdi 的大小

花了一整個晚上的血淚談。

注意事項

  • 目前 (4.x) 只支援在沒有 snapshots 的情況下改變 vdi 大小
  • 若目前有用 snapshot, VBoxManage 也不會阻止你改變大小, 只是改完就沒救了, 會無法刪掉最早的 snapshot, 推測是因為硬碟上的 vdi 檔案資訊和 snapshot 內的 vdi 不合。可以刪除中間的 snapshot, 因為那沒有涉及硬碟上的 vdi 檔

擴大 vdi

  • 關掉 guest OS
  • 砍掉所有 snapshot, 只剩 current state: 在命令列下使用 VBoxManage modifyhd --resize NUM_MB /path/to/vdi
  • 用 Ubuntu CD 開機 (現在已沒有 "live CD" 的名稱了, Ubuntu 安裝光碟本身就可當 "live CD"), 使用 gparted 調整硬碟大小
  • 重開 guest OS, 可用 df -h 確認實際大小確實有改變 (或用 sudo fdisk -l /dev/sda 看 partition 資訊)。

若不幸在砍 snapshot 前先用 VBoxManage 改了大小, 就無解了。目前只有看到一位仁兄用 Mac 的 Time Machine 還原到他做蠢事前的狀態, 解決這個砍不掉的問題 ... 。

我用另一台電腦的 VirtualBox 實驗以上步驟沒有問題, 確認問題出在我先改了 vdi 大小。

縮小 vdi

我沒試過這個, 順便筆記一下

  • VBoxManage --resize 只支援擴大, 要縮小的話要換指令
  • 先在 guest OS 針對要縮小的 partitoin, 用對應的工具重整 partition (zerofree on Linux)
  • 使用指令 VboxManage modifyhd --compact /path/to/vdi

參考資料

下次用這類 VM 的指令, 一定要熟讀手冊再下手啊 ...

2 則留言:

  1. 首先感謝您的分享!
    我也是沒砍snapshot玩掛了設定…後來亂try試出了可work的方法:
    1.先備份(檔案/匯出應用裝置)
    2.砍掉整組設定,但不刪檔
    3.手動砍掉snapshot及log
    4.新增一組設定,加入*.vdi,以fdisk -l確認size已擴大
    5.重啟以gparted確認看得到可使用的未配置空間
    接下來就可以用gparted調整磁碟空間配置了

    回覆刪除
  2. 真正血與淚 我也是經了一天一夜了啊 還沒搞定呢 為了瘦身 vdi 留下同情的足跡 南無阿彌陀佛

    回覆刪除

在 Fedora 下裝 id-utils

Fedora 似乎因為執行檔撞名,而沒有提供 id-utils 的套件 ,但這是使用 gj 的必要套件,只好自己編。從官網抓好 tarball ,解開來編譯 (./configure && make)就是了。 但編譯後會遇到錯誤: ./stdio.h:10...