VirutalBox の仮想ディスクファイルのサイズの圧縮2016年5月18日 | |
はじめにVirtualBox の仮想ディスクファイルの圧縮についてのメモ。 可変サイズの仮想ディスクファイルのサイズVirtualBox において、仮想ディスクのタイプを可変サイズにしておくと、たとえばディスク容量を 50GB にしたとしても、仮想ディスクファイルのサイズは 50GB にはならず、ディスクの使用量に合わせてファイルサイズが拡張される。ただし、仮想マシンでディスク内のデータを削除しても、仮想ディスクファイルのサイズは小さくならない。 これを小さくするにはどうしたらよいか? 仮想ディスクファイルの圧縮こちら によると、空いているところに 0 を書き込んで、vboxmanage で圧縮すればよいらしい。ゲスト OS (Linux) で以下のように実行。 cfd@cfd-VirtualBox:~$ dd if=/dev/zero of=zero bs=4k; \rm zero dd: `zero' の書き込みエラー: デバイスに空き領域がありません 10270910+0 レコード入力 10270909+0 レコード出力 42069643264 バイト (42 GB) コピーされました、 270.406 秒、 156 MB/秒 ホスト OS (Windows) でハードディスクの UUID を調査。 C:\Program Files\Oracle\VirtualBox>vboxmanage list hdds UUID: 78726925-ee8e-40c8-8d86-bf76b88d704b Parent UUID: base State: created Type: normal (base) Location: C:\Users\xxxx\VirtualBox VMs\Ubuntu 14.04 LTS\Ubuntu 14.04 LTS -disk1.vmdk Storage format: VMDK Capacity: 51200 MBytes 以下のように実行。 C:\Program Files\Oracle\VirtualBox>vboxmanage modifyhd 78726925-ee8e-40c8-8d86-b f76b88d704b --compact 0%... Progress state: VBOX_E_NOT_SUPPORTED VBoxManage.exe: error: Compact hard disk operation for this format is not implem ented yet! フォーマットが VMDK ではダメらしい。VDI でないといけないらしい。 フォーマットを変更して対応するこちら を参考に、フォーマットを VDI に変更して圧縮し、また VMDK に戻す手をとる。 VDI に変換 (クローン)。 C:\Program Files\Oracle\VirtualBox>vboxmanage clonehd "C:\Users\xxxx\VirtualBox VMs\Ubuntu 14.04 LTS\Ubuntu 14.04 LTS-disk1.vmdk" "C:\Users\xxxx\VirtualBox VMs\Ubuntu 14.04 LTS\Ubuntu 14.04 LTS-disk1.vdi" --format vdi 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Clone hard disk created in format 'vdi'. UUID: c453dfe3-832b-47be-9bab-ebff2f9dda85 圧縮。 C:\Program Files\Oracle\VirtualBox>vboxmanage modifyhd "C:\Users\xxxx\VirtualBox VMs\Ubuntu 14.04 LTS\Ubuntu 14.04 LTS-disk1.vdi" --compact 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% VMDK に変換。"Ubuntu 14.04 LTS-disk1.vmdk" に戻すために、オリジナルをリネームして実行。 C:\Program Files\Oracle\VirtualBox>vboxmanage clonehd "C:\Users\xxxx\VirtualBox VMs\Ubuntu 14.04 LTS\Ubuntu 14.04 LTS-disk1.vdi" "C:\Users\xxxx\VirtualBox VMs\Ubuntu 14.04 LTS\Ubuntu 14.04 LTS-disk1.vmdk" --format vmdk 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%... Progress state: E_INVALIDARG VBoxManage.exe: error: Failed to clone hard disk VBoxManage.exe: error: Cannot register the hard disk 'C:\Users\xxxx\VirtualBox VMs\Ubuntu 14.04 LTS\Ubuntu 14.04 LTS-disk1.vmdk' {8b949140-6a30-488c-827d-52af02aff0f9} because a hard disk 'C:\Users\xxxx\VirtualBox VMs\Ubuntu 14.04 LTS\Ubuntu 14.04 LTS-disk1.vmdk' with UUID {78726925-ee8e-40c8-8d86-bf76b88d704b} already exists VBoxManage.exe: error: Details: code E_INVALIDARG (0x80070057), component VirtualBox, interface IVirtualBox VBoxManage.exe: error: Context: "int __cdecl handleCloneHardDisk(struct HandlerArg *)" at line 743 of file VBoxManageDisk.cpp ダメだった。とりあえず "disk2" として変換。 C:\Program Files\Oracle\VirtualBox>vboxmanage clonehd "C:\Users\xxx\VirtualBox VMs\Ubuntu 14.04 LTS\Ubuntu 14.04 LTS-disk1.vdi" "C:\Users\xxxx\VirtualBox VMs\Ubuntu 14.04 LTS\Ubuntu 14.04 LTS-disk2.vmdk" --format vmdk 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Clone hard disk created in format 'vmdk'. UUID: 2862c86c-865c-421a-a22f-b505a2c0de1d 仮想マシンの設定で仮想ディスクを "disk2" に入れ替えて起動できることを確認。"disk2" を "disk1" にクローン (フォーマット変更なし) してみたが、ダメだった。 VirtualBox メニュー [ファイル]-[仮想メディアマネージャー] で仮想ディスクの登録を一旦すべて除去してからクローニング、仮想マシンに割り当てでうまくいった。 参考 | |
PENGUINITIS |