概要:
VBoxManage.exe modifyhd --resize
ディスクイメージの論理サイズ(ゲストOSから見たサイズ)を増やすことができます(減らすことはできません)。
VBoxManage.exe modifyhd inputfile.vdi --compact
物理ディスクのイメージサイズ(ホストOSから見たディスク上のイメージファイルのサイズ)を減らすことができます。ただし、これによって論理ディスクのサイズは変更されません。これは、最初にゲストOSの空き容量がゼロになった場合にのみ機能することに注意してください。
modifyhd
動的形式のバリアント(「動的に割り当てられたイメージ」)でのみ機能します。
modifyhd
VDIおよびVHDイメージ形式でのみ機能します。
- スナップショットを使用している場合は、「Snapshots」サブフォルダーから最新のスナップショットVDIを複製する必要があります。
詳細については、セクション8.23を参照してください。マニュアルのVBoxManage modifyhd。
VDIの論理ディスクサイズの縮小がまだ実装されていない理由は、発生する可能性のあるデータ破損を防ぎ、その結果として起動できないVMが発生することを防ぐためです。したがって、この--resize
オプションを使用する場合、新しいディスクサイズは現在のサイズより大きくする必要があります。現在のサイズ以下にすることはできません。言い換えると、40 GBのディスクは41 GB以上にしかサイズ変更できず、40 GB(単なるバカ)または39 GB以下にサイズ変更することはできません。
VirtualBoxの古いバージョンは、VDIファイルを「固定」形式のバリエーションとして作成しました。新しいデフォルト設定では、新しいVDI(仮想ディスクイメージ)ファイルが作成されたときに「動的」形式のバリアントが作成されるようになりました。(これは、導入されたバージョンに関係なく、動的形式バリアントの導入以来のケースだと推測しています。)
したがって、「この形式の操作はまだ実装されていません」というエラーメッセージは、VDIファイルが「固定」形式のバリアントを使用していることを意味します。この問題を回避するには、clonehd
コマンドを使用してVDIファイルのクローンを作成する必要があります。現在VDIファイルがどのフォーマットバリアントにあるかを表示するには、このshowhdinfo
コマンドを使用できます。
実施例
現在のディスクに関するVDI情報を表示します。
入力コマンド: vboxmanage.exe showhdinfo path\inputfile.vdi
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe showhdinfo "%userprofile%\virt
ualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab.vdi"
UUID: 132e9af1-0428-49f4-bc45-4d84680e17f5
Parent UUID: base
State: created
Type: normal (base)
Location: C:\Users\Name\VirtualBox VMs\sg2_win7_x64_lab\sg2_win7_x64_lab.
vdi
Storage format: VDI
Format variant: fixed default
Capacity: 40960 MBytes
Size on disk: 40962 MBytes
In use by VMs: sg2_win7_x64_lab (UUID: dcd106b3-7ed6-4f19-ad94-820ab4dc10d3)
C:\Program Files\Oracle\VirtualBox>
「固定デフォルト」と表示されている箇所を確認しますか?そのため、サイズを変更しようとすると上記のエラーが発生します。
古いVDIファイルを新しいVDIファイルに複製します。
入力コマンド: vboxmanage.exe clonehd path\inputfile.vdi path\outputfile.vdi
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe clonehd "%userprofile%\virtual
box vms\sg2_win7_x64_lab\sg2_win7_x64_lab.vdi" "%userprofile%\virtualbox vms\sg2
_win7_x64_lab\sg2_win7_x64_lab_clone.vdi"
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: 34dafa68-3093-4946-926a-8237ea263
e5c
C:\Program Files\Oracle\VirtualBox>
ほら!これで、古いファイルが新しいファイルに複製されました。VirtualBoxの新しいバージョンのデフォルト設定は「動的」フォーマットバリアントを使用するため、明示的に定義する必要はありません。ただし、古いバージョンのVirtualBoxを使用している場合は、VirtualBoxの将来のバージョンとの互換性や柔軟性を向上させるために、オプションを「動的」に設定することをお勧めします。
クローンディスクに関するVDI情報を表示します。
入力コマンド: vboxmanage.exe showhdinfo path\inputfile_clone.vdi
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe showhdinfo "%userprofile%\virt
ualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_clone.vdi"
UUID: 34dafa68-3093-4946-926a-8237ea263e5c
Parent UUID: base
State: created
Type: normal (base)
Location: C:\Users\Name\virtualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_
clone.vdi
Storage format: VDI
Format variant: dynamic default
Capacity: 40960 MBytes
Size on disk: 7806 MBytes
C:\Program Files\Oracle\VirtualBox>
「動的デフォルト」と表示されるようになりましたか?いいね!
(補足として、ここで物理サイズとして7806 MBと表示されている理由は--compact
、元のVDIファイルでオプションを使用して、動的な形式のバリアントへの変換を強制したためです。VirtualBoxフォーラムで読んだもの古いバージョンで動作するはずだったので、試してみようと思いました。動作しませんでした。)
クローンディスクのサイズを変更します。
入力コマンド: vboxmanage.exe modifyhd path\inputfile.vdi --resize 51200
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe modifyhd "%userprofile%\virtua
lbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_clone.vdi" --resize 51200
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
C:\Program Files\Oracle\VirtualBox>
成功!これ以上の強引なフォーマットはありません。元のディスクではなく、新しいクローンディスクのサイズを変更することを忘れないでください。サイズはMBで表されることに注意してください。(または「GB」など)51200
も使用できると思います50G
。--resizebyte
バイト単位でサイズを表現するために使用できるオプションもあります。
サイズ変更されたクローンディスクに関するVDI情報を表示します。
入力コマンド: vboxmanage.exe showhdinfo path\inputfile_clone.vdi
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe showhdinfo "%userprofile%\virt
ualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_clone.vdi"
UUID: 34dafa68-3093-4946-926a-8237ea263e5c
Parent UUID: base
State: created
Type: normal (base)
Location: C:\Users\Name\virtualbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab_
clone.vdi
Storage format: VDI
Format variant: dynamic default
Capacity: 51200 MBytes
Size on disk: 7806 MBytes
C:\Program Files\Oracle\VirtualBox>
それでおしまい!ここから、このクローンドライブをVMの新しいVDIとして追加する必要があります。VirtualBox内でそれを行います。私はそれに行きません。これまでにこれを読んで理解できていれば、おそらくこれ以上のガイドは必要ありません。古い「修正済み」ファイルを削除するか、バックアップとして残すことができます。元のソースファイルを削除する前に、必ず新しいVDIファイルをテストしてください。
注意!クローンディスクの新しいサイズはすぐには表示されません。それを使用してVMをブートする必要があります。次に、パーティション管理ツールを使用してパーティションを拡張し、仮想ディスクをいっぱいにする(またはさらにパーティションを作成する)必要があります。Windowsのdiskmgmt.msc
場合は、実行するだけでパーティションを拡張できます。
スクリーンショット
参照