2014-02-13 22:54:55 +0000 2014-02-13 22:54:55 +0000
72
72

Windowsでmodifyhdコマンドで固定サイズのVDIを変更する方法は?

VDIファイルのサイズを変更する方法を考えています。私はVirtualBoxの初心者で、学ぶことがたくさんあります。しかし、基本のコツはつかめたと思います。私は最初のゲストとして、すでにWindows 7をインストールしています。ホストもWindows7です。ディスク容量をどのくらい割り当てるか迷っていたので、VDIのサイズを40GBにして、パフォーマンスを上げるために固定サイズにしました。しかし、今になって気が変わったので、あと10GB追加したいと思っています。プログラムをクリックしたり、ヘルプメニューの内容を読んだりしていますが、何の役にも立ちません。ディスクコントローラ、SAS、SATA、SCSI、やだ、やだ、やだ、と説明されているが、私が探しているものではない。

ワールドワイドウェブで検索してみたが、VirtualBoxのフォーラムでは、一番簡単な方法を望むならGpartedを使えと書いてある(どこかのMODが付箋を投稿していた)。中にはddコマンドを使っているユーザーもいます。しかし、それは全てLinuxのものです。また、ここSUではVDIファイルサイズの増減を扱う質問がたくさんありますが、それらはすべてLinuxをホストとして、Windowsをゲストとして使うことについての質問です。

VBoxManage の modifyhd コマンドを使った方法についての ブログ の投稿を見つけました。この人はLinuxをホストOSとしてもやっています。彼は私のVDIファイルと同じサイズ(50GB)の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>

0x1&

何だって?言わないの?独自のフォーマットに対応していない?さて、それはどうでしょうか…。

VDIファイルのサイズを変更する簡単な方法は本当にないのでしょうか、できればVirtualBox内で数回クリックするだけで?何か進行中のものはありますか?

回答 (9)

126
126
126
2014-02-15 22:56:20 +0000

要約:

  • VBoxManage.exe modifyhd --resize は、ディスクイメージの論理サイズ(ゲスト OS から見たサイズ)を増加させることができる(減少させることはできない)。

  • VBoxManage.exe modifyhd inputfile.vdi --compact は物理ディスクイメージのサイズ(ホスト OS から見たディスク上のイメージファイルのサイズ)を減少させることができる。ただし、これは論理ディスクのサイズを変更するものではありません。これは、ゲスト OS で最初に空き領域がゼロになっている場合にのみ機能することに注意してください。

  • modifyhd は、ダイナミックフォーマットのバリアント(「動的に割り当てられたイメージ」)でのみ動作します。

  • modifyhd は VDI および VHD イメージフォーマットでのみ動作します。

  • スナップショットを使用している場合は、"Snapshots “サブフォルダから最新のスナップショットVDIをクローンする必要があります。

詳細はマニュアルの 8.23. VBoxManage modifyhd を参照してください。


VDIの論理ディスクサイズを減らすことがまだ実装されていないのは、データの破損を防ぐためです。したがって、--resize オプションを使用する場合、新しいディスクサイズは現在のサイズよりも大きくなければなりません。現在のサイズ以下にすることはできません。言い換えれば、40GBのディスクは41GB以上にしかリサイズできず、40GBにリサイズすることはできません(馬鹿げている)し、39GB以下にリサイズすることもできません。

旧バージョンの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(または “GB "の可能性もあります)と同様に、例えば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 を実行するだけで、パーティションを拡張することができます。

スクリーンショット

リファレンス

11
11
11
2014-09-26 15:48:23 +0000

ここでは、ゲスト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 を起動し、ファイルブラウザの「Computer」のプロパティで新しいディスクサイズを確認します。

5
5
5
2014-11-11 19:34:53 +0000

クローニングは実はもっと良い解決策で、もっと簡単な方法があります。

[ファイル]メニューから[仮想メディアマネージャ]を選択し、[コピー]をクリックします。ソースはあなたの元の固定サイズのVDIハードディスクになり、宛先はあなたが選択した新しいものになります(新しいもののオプションも含まれます)。

4
4
4
2014-09-30 17:50:33 +0000

OK、ということで***クローンせずに実現してみました。

100GBのVDIファイル(固定フォーマット)にUbuntuを入れていました。正常に動作しています。VMを縮小してホストのスペースを空けたいと思っていました。

手順。

1.クリーンアップ

不要なファイルを削除。45GB空きました。解放されるのは30GBだけ。

1.ゲストOSの修正

パーティションが1つしかないので、ゲストUbuntu内部からは何もできない。VMにUbuntu Liveをマウントしてそこから起動。

gpartedを使ってパーティションを70GBに縮小。ext4の未使用スペースに新しいパーティションを作成。

1.空き領域を消去する

新しいパーティションの空き領域(30GB)。

このガイドに従ってみました : zerofreeを使ってUbuntuでゲストとホストOSとして仮想ハードドライブを縮小する

私の新しいパーティションは/dev/sda3でした。

$ sudo apt-get install zerofree
$ sudo init 1

...

# mkdir /tmp3
# mount -o ro -t ext4 /dev/sda3 /tmp3
# zerofree -v /dev/sda3

1.VDIを圧縮する

時間がかかりましたが、うまくいきました。

2
2
2
2016-10-11 12:51:47 +0000

固定のVDIイメージをリサイズ/拡大/拡張した方法は以下の通りです(縮小する方法は別の回答にあります)。

1.VirtualBoxを使用して希望のサイズの新しいディスクを作成します(サイズは少なくとも元のものと同じでなければなりません)。これを行うには、ゲストVMのVirtualBox Settingsを開き、Storageに移動し、HDD Controller(例: “SATA”)をクリックして、ハードディスクを追加するために “+"をクリックします。その後、必要に応じて新しいディスクを設定します。 2. gpartedのライブISOをダウンロードし、ゲストVMがそれから起動するように設定します(ここでもStorageの設定)。 3. ゲストVMの現在のストレージをバックアップします。 4. ゲストVMを起動します(gparted live環境で起動するはずです)。gparted環境内から。 1. gparted アプリケーションを使って、既存のディスクが「/dev/sda」であることと、新しい(より大きな)ディスクが「/dev/sdb」であることを確認します(右上のドロップダウン)。 2. gpartedアプリケーションを閉じます。 3. root 権限のあるターミナルを開く(デスクトップ上で右クリックして -> Terminals -> terminal with root privileges)。 4. 以下のコマンドを入力します。dd if=/dev/sda of=/dev/sdb status=progress bs=128M と入力して完了を待つ。これにより、元のディスクが新しいディスクに MBR などを含めてバイト単位でコピーされます(注: 元のディスクのサイズやホスト上のディスクの速度などによっては、完了までに時間がかかる場合があります)。(注: ゲストVMに1GBのRAMが割り当てられている場合は、'bs'パラメータを "bs=256M "に変更すると、コピーが少し速くなるかもしれません)。 5. gpartedアプリケーションを再起動する 6. 右上のドロップダウンから新しい(より大きな)ドライブ(/dev/sdb)を選択する。 7. 必要に応じてパーティションを展開する。最後にないパーティションを展開するには、展開したいパーティションの後にあるパーティションを移動する必要があるかもしれません。パーティション分割の仕様によっては、最後のパーティションを最後まで成長させてから、最後にすべてを移動させて縮小するなど、複数のステップでこれを行う必要があるかもしれません。私の場合、最後のパーティションは linux-swap なので、単純に削除して、プライマリパーティションを展開し、最後に swap パーティションを再作成しました (元のパーティション分割スキームを複製するように注意してください)。 8. 変更を適用。 9. この時点で、オリジナルのコンテンツをすべて含んだ新しい固定サイズのディスクができ、オリジナルよりも多くのスペースが確保されているはずです。この新しいディスクを gparted live env にマウントして確認してください。 10. ゲストVM(gparted live)をシャットダウンし、VMドライブからISOを削除します。 5. ゲスト VM の VBox Settings に移動し、Storage に移動し、リストから元のディスクを削除します (右クリックして "Remove Attachment” を選択します)。これで、VM用に新しく作成されたディスクが残ります。注: このステップは、単にゲストVMの構成からディスクを削除しただけです。 6. VM を起動してお楽しみください。 7. (すべてが期待通りに動作していることが確認できたら、元の VM ディスクを削除することができます)

上記は私にとっては何度も素晴らしい働きをしてくれましたが、LVMを使用している場合はさらにいくつかのステップが必要なようです。(注意: LVMを使用している場合は、希望するサイズの新しいディスクを追加して、そのディスクをボリュームグループに追加するだけです) LVMを使用しているCentOS 6.6では、LVM内のスペースも増やさなければなりませんでした。そこで、上記で作成した新しいディスクを起動した後、以下のようなことを行いました(これの様々な部分は、セットアップの名前に基づいて異なります):

1.LVMセットアップに関する情報を取得。

  1. 物理ボリューム(PV)を拡張(ボリュームグループ(VG)にも自動的に同じ増加分が反映されます)。

  2. 論理ボリューム(LV)の拡張:

  3. ファイルシステムの拡張。

2
2
2
2015-06-01 00:22:30 +0000

遅ればせながら、私の2セントを追加します。最初に言っておきますが、これは複雑なプロセスであり、ほとんどのカジュアルなユーザーが理解しようとすると気が狂いそうになります。オラクルがなぜVBox GUIにこれを含まなかったのかは謎です。

ステップ1: Windowsコマンドライン(VBoxmanage)を使用してドライブサイズを増やします。ここでのヒントは、ファイルの場所を延々と入力しようとしてエラーメッセージが表示されるのではなく、VDI ドライブの ID を使用することです。

ステップ2: 次に、新しいスペースを利用するためにプライマリパーティションを拡張する必要があります。gparted isoをダウンロードし、それをIDEソースとしてVBoxで新しい仮想マシンを作成します。そして、既存のVDIドライブをsataディスクとして使用します。このマシン用の仮想ドライブは作成しないでください。新しいマシンを起動すると、gparted Guiが起動します。これは、それ自体が解決されるまでに数回の再起動が必要になるかもしれません。

gparted が実行されると、サイズを変更したい vdi ドライブのパーティションが表示されます。重要: プライマリパーティションのサイズを大きくするためには、拡張パーティションを削除し、ファイルスペースをスワップする必要があります。これを行ったら、残りのスペースを新しい拡張パーティションに指定し、その中に新しいスワップファイルスペースを作成する必要があります。これは、コマンドラインをいじくり回すよりもはるかに簡単です。

簡単ではありませんが、これは可能です…これを理解するためにウェブで調べて半日ほどかかりました。win8.1 / UbuntuをVBox上で実行中

Willie

1
1
1
2017-03-18 23:21:15 +0000

固定VDIイメージのサイズ変更/縮小/縮小を行った方法は以下の通りです(拡大するための私のプロセスは、この同じトピックの別の回答にあります)。数年前、私はWindows Serverゲスト用の固定VDIを作成し、600GBのサイズにしました。なぜこのサイズを選択したのか覚えていませんが、今日の時点ではそのゲストで100GBしか消費していないので、残りのスペースのほとんどを再利用したいと思っています。つまり、私の場合は、ゲスト内のデータをすべて保存したいので、単純にゲスト内の未使用のスペースを解放したいのです。

(以下の手順は、ほとんどこの2時間の間にこれを行った記憶に基づくものです。)

1.新しいサイズの大きさを決定します。当然のことながら、ゲストが現在消費している以上のスペースを残しておきたいと思うでしょう。サイズは、少なくともソース/オリジナルディスク内のデータと同じでなければなりません。 2. VirtualBox を使用して、前の手順で決定したサイズの新しい固定サイズのディスクを作成します。これを行うには、ゲストVMのVirtualBox Settingsを開き、Storageに移動し、HDD Controller(例:SATA)をクリックし、「+」をクリックしてハードディスクを追加します。その後、必要に応じて新しいディスクを設定します。 3. gparted live ISO](http://gparted.org)をダウンロードし、ゲストVMがそれから起動するように設定します(ここでもStorageの設定)。 4. ゲストVMの現在のストレージをバックアップします。 5. ゲストVMを起動します(gparted live環境で起動するはずです)。gparted環境内から。

  1. ゲスト VM の VBox Settings に移動し、Storage に移動し、リストから元のディスクを削除します (右クリックして “Remove Attachment” を選択)。これで、VM用に新しく作成されたディスクが残ります。注: このステップは、単にゲストVMの構成からディスクを削除しただけです。
  2. Windows ゲストのためにしなければならなかった最後のステップは、MBR および/または BCD を設定/修正することでした。(まだやっていないので、これが Linux ゲストに必要かどうかはわかりません)。新しい VDI から単純に起動すると、以下の内容の Windows Boot Mgr のエラー画面が表示されました (残念ながら、問題を修正する前にスクリーンショットを取得していません):

  3. Windows のインストールまたは修復の ISO を入手し(理想的には OS のバージョンと一致するもの)、そこからゲスト VM を起動するように設定します(ここでもストレージの設定)。

  4. ゲストVMを起動し、CD/DVDからの起動を選択します。

  5. ゲスト VM の VBox 設定に移動し、ストレージに移動し、CD/DVD ドライブから Windows インストール/修復 ISO を削除します。

  6. VM を起動してお楽しみください。

  7. (すべてが期待通りに動作することが確認できたら、元の VM ディスクを削除します)

0
0
0
2016-11-18 16:26:44 +0000

私は、任意のホストオペレーティングシステム上で実行されている任意のホストオペレーティングシステムに拡張された答えを提供します。この答えは、あなたがサイズを増加させたい(拡張する)ことを前提としています。

注: djule5 さんが指摘されているように(質問の直後のコメント参照)、modifyhdは現在では modifymedium として知られています(ただし、下位互換性は残っています)。ここではmodifymediumを使っています。

1.

1. Quit your running VM

はい、この答えはVirtualBox VMで既に使用されているVDIファイルのためのものです。

2. 2. ホスト上でターミナルを開いてディスク イメージのサイズを変更する

コマンドラインの 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%

3. パーティショニングツールを使用して論理パーティションを拡張する

ホストされた VM を実行します。その後、 パーティショニングツール を使用します。

ホストされた GNU/Linux 用のツール :

ホストされているシステムが Windows を使用している場合。

4. パーティションの空き容量を確認する

VMがまだ余分な容量を使用していないため、(ホストシステム上の)VDIファイルのサイズが変更されていない可能性があります。楽しんでください。

-1
-1
-1
2015-08-11 10:26:21 +0000

これは私のために動作し、ハードディスクの容量の合計量を指定する必要があります。増やす必要があるのは容量ではなくて・・・。

C:Illustrator.exe modifyhd “D:Illustrator.exe” “D:Illustrator.exe” –resize 15360