VDIファイルのサイズを変更する方法を見つけようとしています。私はVirtualBoxが初めてです、そして学ぶことがたくさんありました。しかし、私は私が基本のこつを手に入れたと思います。私は最初のゲストとして既にWindows 7をインストールしました。ホストもWindows 7です。どのくらいのディスク容量を割り当てるべきかわからないので、パフォーマンスを向上させるために40 GBのVDIサイズと固定サイズを選択しました。しかし、私は今、気が変わったので、さらに10 GB追加したいと思います。プログラムをクリックして[ヘルプ]メニューの内容を読んでいますが、役に立ちません。ディスクコントローラ、SAS、SATA、SCSI、やだ、やだについて説明していますが、探しているものではありません。
私は答えをワールドワイドウェブで調べた、VirtualBoxフォーラムはあなたが最も簡単な方法が欲しいならばGpartedを使うべきだと言っている(modはスティッキーを投稿した)。何人かのユーザはdd
コマンドの使用について議論しています。しかし、それがすべてLinuxのものです。また、SUにはVDIファイルのサイズの増減に関する質問がたくさんありますが、それらはすべて、ホストとしてのLinuxとゲストとしてのWindowsの使用に関するものです。
VBoxManageのmodifyhd
コマンドでそれを行う方法についてのこのNice ブログ の投稿を見つけました。この男はホストOSとしてLinuxでもやっています。私の場合と同じサイズ(50 GB)のVDIファイルも必要でした。これは偶然の一致です。だから私はとにかく試してみるか、それを作るか壊すかのどちらかをしようと思った。何が問題になる可能性がありますか?...え?まあこれは私が得た醜い驚きです。
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe modifyhd "%userprofile%\virtua
lbox vms\sg2_win7_x64_lab\sg2_win7_x64_lab.vdi" --resize 51200
0%...
Progress state: VBOX_E_NOT_SUPPORTED
VBoxManage.exe: error: Resize hard disk operation for this format is not impleme
nted yet!
C:\Program Files\Oracle\VirtualBox>
今何を言う?!... VDIフォーマットの仮想ハードディスクのサイズを変更することはできませんか?あなたは言わないのですか?あなた自身のフォーマットをサポートしていませんか?今それはどうですか...
VirtualBox内を数回クリックするだけで、VDIファイルのサイズを変更する簡単な方法は本当にありませんか。進行中の何か
概要:
VBoxManage.exe modifyhd --resize
は、ディスクイメージの論理サイズ(ゲストOSから見たサイズ)を増やすことはできますが、減らすことはできません。VBoxManage.exe modifyhd inputfile.vdi --compact
は、物理ディスクのイメージサイズ(ホストOSから見たディスク上のイメージファイルのサイズ)を減らすことができます。ただし、これによって論理ディスクサイズが変わることはありません。これは、最初にゲストOSの空き容量がゼロになった場合にのみ機能することに注意してください。modifyhd
は動的フォーマットバリアント( "動的に割り当てられた画像")でのみ機能します。modifyhd
はVDIとVHDの画像フォーマットでのみ動作します。詳しくは 8.23節をご覧ください。マニュアルのVBoxManage modifyhd 。
VDIの論理ディスクサイズを減らすことがまだ実装されていない理由は、起こり得るデータ破損を防ぐためであり、その結果として起動不可能なVMがあるでしょう。したがって、--resize
オプションを使用するときは、新しいディスクサイズを現在のサイズより大きくする必要があります。現在のサイズ以下にすることはできません。言い換えれば、40 GBのディスクは41 GB以上にしかサイズ変更できません。40GB(これは単なるダムです)または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との互換性や柔軟性を向上させるために、オプションを "dynamic"に設定することをお勧めします。
クローンディスクに関する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と表示されているのは、動的フォーマットへの変換を強制するために、元のVDIファイルで--compact
オプションを使用していたためです。 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で表されることに注意してください。私はあなたが使用できると思います。 51200
および50G
(または場合によっては「GB」)。サイズをバイト単位で表すために使用できるオプション--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
を実行するだけで、そこにあるパーティションを拡張できます。
ゲストOSとしてLinux(Ubuntu 14.04)を実行している私のMac(OS X 10.9.4)上でVirtualBox(v。4.3.16)固定サイズのディスクを60GBのダイナミックディスクにリサイズするために働いた非常に簡単なプロセスは次のとおりです。
Macのターミナルで、VDIファイルのあるディレクトリにCDを挿入し、次のように入力します。
VBoxManage showhdinfo mydisk.vdi
VBoxManage clonehd mydisk.vdi mydiskClone.vdi
VBoxManage modifyhd mydiskClone.vdi --resize 61440
VBoxManage showhdinfo mydiskClone.vdi
VirtualBoxアプリケーションストレージセクションで、2番目のHDとしてmydiskClone.vdiを追加してから、通常どおりVMを起動します。
ゲストOSのシェルで、次のように入力します。
Sudo fdisk /dev/sdb
- delete all partitions
- create new partition on full disk
ゲストを再起動します。それが戻ってきたら、もう一度シェルに行き、次のようにタイプしてください。
Sudo resize2fs /dev/sdb1
ゲストOSをシャットダウンします。
VirtualBoxアプリケーションのストレージセクションで、mydiskClone.vdiを起動ディスクに設定します。次に、ゲストOSを起動し、ファイルブラウザの[コンピュータ]のプロパティを使用して新しいディスクサイズを確認します。
クローニングは実際にはより良い解決策であり、それを行うためのより簡単な方法があります。
[ファイル]メニューから[Virtual Media Manager]を選択し、[コピー]をクリックします。ソースはあなたの元の固定サイズのvdiハードディスクで、あなたの行き先はあなたが選んだ何か新しいものになるでしょう(新しいのオプションを含みます)。
それで、私はクローンを作成せずにそれを実現させました。
Ubuntuが入った100GBのVDIファイル(固定フォーマット)を持っていました。正常に動作しています。 VMを縮小して、ホスト内のスペースをいくらか解放したいと思いました。
ステップ:
不要なファイルを削除しました。 45GBの空き容量。解放するには30GBしか必要ありません。
パーティションは1つしかないので、ゲストUbuntuからは何もできません。 Ubuntu LiveをVMにマウントし、そこから起動します。
gparted
を使用してパーティションを70GBに縮小しました。 ext4
の未使用スペースに新しいパーティションを作成しました。
新しいパーティションの空き容量(30GB).
このガイドに従ってください: zerofreeを使用してゲストおよびホストOSとしてUbuntu上の仮想ハードドライブを縮小してください
私の新しいパーティションは/dev/sda3
です。
$ Sudo apt-get install zerofree
$ Sudo init 1
...
# mkdir /tmp3
# mount -o ro -t ext4 /dev/sda3 /tmp3
# zerofree -v /dev/sda3
VDIをコンパクトにする
VBoxManage modifyhd "ubuntu.vdi"コンパクト
しばらく時間がかかりましたが、うまくいきました!
固定VDIイメージをリサイズ/拡大/拡大する方法は次のとおりです(縮小するプロセスは別の回答です)。
dd if=/dev/sda of=/dev/sdb status=progress bs=128M
そしてそれが完了するのを待ちます。これにより、元のディスクが新しいディスクにMBRなどのバイト単位でコピーされます(注:元のディスクのサイズ、ホスト上のディスクの速度などによっては、完了するまでに時間がかかる場合があります)。 (注:あなたのguest VMに> 1GB RAMが割り当てられている場合は、 'bs'パラメータを "bs = 256M"に変更すると、コピーが少し速くなります。 ).上記は私にとって何度も素晴らしい働きをしてきましたが、LVMを使用する場合にはさらにいくつかのステップが必要と思われます。 (注:LVMが使用されている場合は、希望するサイズの新しいディスクを追加してからそのディスクをボリュームグループに追加することができます。)LVMが使用されているCentOS 6.6では、LVM内のスペースも増やす必要がありました。それで、上で作成された新しいディスクを起動した後、私はこれらの行に沿って何かをしました(これの様々な部分はあなたの設定の名前に基づいて異なります):
LVMのセットアップに関する情報を入手してください。
# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 vg_rhel6bm1 lvm2 a-- 31.51g 0
# vgs
VG #PV #LV #SN Attr VSize VFree
vg_rhel6bm1 1 2 0 wz--n- 31.51g 0
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv_root vg_rhel6bm1 -wi-ao---- 28.31g
lv_swap vg_rhel6bm1 -wi-ao---- 3.20g
物理ボリューム(PV)を拡張します(ボリュームグループ(VG)は自動的に同じ増加を反映します)。
# pvresize /dev/sda2
Physical volume "/dev/sda2" changed
1 physical volume(s) resized / 0 physical volume(s) not resized
# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 vg_rhel6bm1 lvm2 a-- 39.51g 8.00g
# vgs
VG #PV #LV #SN Attr VSize VFree
vg_rhel6bm1 1 2 0 wz--n- 39.51g 8.00g
論理ボリューム(LV)を拡張します。
# lvextend /dev/vg_rhel6bm1/lv_root /dev/sda2
Size of logical volume vg_rhel6bm1/lv_root changed from 28.31 GiB (7247 extents) to 36.31 GiB (9295 extents).
Logical volume lv_root successfully resized
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv_root vg_rhel6bm1 -wi-ao---- 36.31g
lv_swap vg_rhel6bm1 -wi-ao---- 3.20g
ファイルシステムを拡張します。
前:
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_rhel6bm1-lv_root
28G 24G 3.1G 89% /
tmpfs 939M 232K 939M 1% /dev/shm
/dev/sda1 477M 85M 368M 19% /boot
コマンド:
# resize2fs /dev/mapper/vg_rhel6bm1-lv_root
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/vg_rhel6bm1-lv_root is mounted on /; on-line resizing required
old desc_blocks = 2, new_desc_blocks = 3
Performing an on-line resize of /dev/mapper/vg_rhel6bm1-lv_root to 9518080 (4k) blocks.
The filesystem on /dev/mapper/vg_rhel6bm1-lv_root is now 9518080 blocks long.
後:
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_rhel6bm1-lv_root
36G 24G 11G 69% /
tmpfs 939M 232K 939M 1% /dev/shm
/dev/sda1 477M 85M 368M 19% /boot
ここでパーティーに遅刻しますが、2セント追加します。まず最初に、これはたいていのカジュアルなユーザーが解決しようとしている複雑なプロセスであると言います。なぜOracleがVBox GUIにこれを含めなかったのかは謎です。
ステップ1:Windowsのコマンドライン(VBoxmanage)を使用してドライブサイズを増やします。ここでのヒントは、ファイルの場所を際限なく入力しようとしてエラーメッセージを表示するのではなく、vdiドライブのIDを使用することです。
ステップ2:次に、新しいスペースを利用するために1次区画を拡張する必要があります。 gparted isoをダウンロードし、それをIDEソースとして使用してVBoxで新しい仮想マシンを作成します。次に、既存のVDIドライブをSATAディスクとして使用します。このマシンには仮想ドライブを作成しないでください。新しいマシンを起動すると、gparted Guiが起動します。これはそれ自身を整理するために数回の再起動を要するかもしれません。
Gpartedが実行されると、サイズ変更したいvdiドライブのパーティションが表示されます。重要:プライマリパーティションのサイズを大きくするには、拡張パーティションを削除してファイルスペースをスワップする必要があるため、PP用に新しいスペースをすべて割り当てないでください。これを実行したら、新しい拡張パーティション用の残りのスペースを指定し、その中に新しいスワップファイルスペースを作成する必要があります。私はこれがはるかに簡単であることを発見し、それからコマンドラインを使いまわりました。
ちょっとしたケーキではありませんが、それは実行可能です...これを理解するのに私はウェブを調査するのに半日ほどかかりました。 VBoxでwin8.1/Ubuntuを実行する
ウィリー
固定VDIイメージをリサイズ/縮小/縮小する方法は次のとおりです(これを拡張するプロセスは、これと同じトピックのもう1つの回答です)。
最初に私がこれを必要とした理由についての簡単な背景(VDIを縮小するシナリオはいくつかありますが、このアプローチでは実行できない場合があります)。私がなぜこのサイズを選んだのか思い出せませんが、今日の時点ではそのゲストで100GBしか消費しておらず、残りのスペースの大部分を再利用したいのです。したがって、私の場合は、ゲスト内のすべてのデータを保存したいだけで、ゲスト内の未使用スペースを解放したいだけです。
(以下のステップは、過去2時間にこれを行ったという私の記憶からのものなので、ここで何かを見逃した場合はお詫び申し上げます。)
Guest VMを起動します(gpartedのライブ環境で起動するはずです)。 gparted環境の内側から:
あなたの "オリジナルの"ディスクが/ dev/sdaで "new"が/ dev/sdbであると仮定して(そうでなければ、以下のコマンドを適切に調整してください)、各パーティションを一つずつコピーします。上記の手順で書き留めたパーティションごとに、端末で次のコマンドを入力します。
# dd if=/dev/sda1 of=/dev/sdb1 status=progress bs=128M
そしてそれが完了するのを待ちます。これにより、パーティション1が元のディスクから新しいディスクのパーティション1に1バイトずつコピーされます。
残りの各パーティションに対してコマンドを繰り返します。
# dd if=/dev/sda2 of=/dev/sdb2 status=progress bs=128M
# dd if=/dev/sda3 of=/dev/sdb3 status=progress bs=128M
# ...
ノート:
私が私のWindowsゲストのためにしなければならなかった最後のステップは、MBRおよび/またはBCDを設定/修正することでした。 (まだ実行していないので、Linuxゲストにこれが必要かどうかはわかりません。)新しいVDIから起動しただけでは、Windows Boot Mgrエラー画面が表示されます。私は問題を解決する前にスクリーンショットをつかむt):
windows failed to start
status 0xc000000e
information A required device isn't connected or can't be accessed.
Windowsのインストールまたは修復のISO(理想的にはお使いのOSのバージョンと一致するもの)を取得し、そこから起動するようにguest VMを設定します(ここでもStorageの設定)。
Guest VMを起動し、CD/DVDから起動することを選択します。
コマンドプロンプトが表示されたら、次のコマンドを実行します( http://loverofcode.blogspot.com/2013/11/fixed-0xc000000e-boot-error.html に感謝します)。情報!):
> bootrec /fixmbr
> bootrec /fixboot
> bootrec /rebuildBcd
この最後のコマンドは、あなたのWindowsインストールを見つけ、それをBCDに追加するように促します。 'Y'と答えてください。
任意のホストオペレーティングシステムで実行されている任意のホストオペレーティングシステムに拡張された回答を提供します。この答えはあなたが(拡大するために)サイズを大きくしたいと仮定しています。
注:djule5 で指摘されているように(質問の直後のコメントを参照)、modifyhd
は現在 modifymedium
として知られています(ただし、下位互換性は保たれています)。ここではmodifymedium
を使います。
はい、この回答はVirtualBox VMで既に使用されているVDIファイルに対するものです。
コマンドラインVBoxManageは、VDIファイル名を使用してディスクイメージのサイズを変更したくありません。
$ ls -s1 *.vdi
10260316160 my_disk_image.vdi
$ vboxmanage modifymedium my_disk_image.vdi --resizebyte 16260316160 VBoxManage: error: Cannot register the hard disk '/home/user/vm/my_disk_image.vdi' {181540c7-b791-4b2f-8e01-5feaff04a6eb} because a hard disk '/home/user/vm/my_disk_image.vdi' with UUID {181540c7-b791-4b2f-8e01-5feaff04a6eb} already exists
VBoxManage: error: Details: code NS_ERROR_INVALID_ARG (0x80070057), component VirtualBoxWrap, interface IVirtualBox, callee nsISupports
VBoxManage: error: Context: "OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, enmAccessMode, fForceNewUuidOnOpen, pMedium.asOutParam())" at line 179 of file VBoxManageDisk.cpp
そのため、ディスクイメージのUUIDを識別してください。
$ ls -s1 *.vdi
10260316160 my_disk_image.vdi
$ vboxmanage list hdds
UUID: 181540c7-b791-4b2f-8e01-5feaff04a6eb
Parent UUID: base
State: created
Type: normal (base)
Location: /home/user/vm/my_disk_image.vdi
Storage format: VDI
Capacity: 10240 MBytes
Encryption: disabled
ディスクイメージサイズを拡張します。
$ vboxmanage modifymedium 181540c7-b791-4b2f-8e01-5feaff04a6eb --resizebyte 16260316160
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
ホステッドVMを実行します。それから パーティショニングツール を使ってください。
ホスト型GNU/Linux用のいくつかのツール:
ホストシステムがWindowsを使用している場合:
VMはまだ余分な容量を使用していないため、(ホストシステム上の)VDIファイルのサイズは変更されていない可能性があります。楽しむ。