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


70

VDIファイルのサイズを変更する方法を見つけようとしています。私はVirtualBoxが初めてなので、学ぶべきことがたくさんありました。しかし、私は基本のこつを得たと思います。最初のゲストとしてWindows 7を既にインストールしています。ホストもWindows 7です。どのくらいのディスクスペースを割り当てるかわからなかったので、パフォーマンスを向上させるために40 GBのVDIサイズと固定サイズを使用しました。しかし、今は気が変わったので、さらに10 GBを追加します。プログラムをクリックしてヘルプメニューの内容を読んでいますが、助けにはなりません。ディスクコントローラ、SAS、SATA、SCSI、やだ、やだについて説明していますが、私が探しているものではありません。

答えを探すためにWorld Wide Webを検索しましたが、VirtualBoxフォーラムでは、最も簡単な方法が必要な場合はGpartedを使用することになっています(一部のmodはスティッキーを投稿しました)。一部のユーザーは、ddコマンドの使用について議論します。しかし、それはすべてLinuxのものです。また、SUにはVDIファイルサイズの増減に対処する質問がたくさんありますが、それらはすべてホストとしてLinuxを、ゲストとしてWindowsを使用することに関するものです。

VBoxManage のコマンドを使用して実行する方法に関するこの素敵なブログ記事を見つけましたmodifyhd。この男はLinux上でホストOSとしてもやっています。彼は私のVDIファイルと同じサイズ(50 GB)でさえ、私のものと同じようにしたかったのです。それで、とにかく試してみるか、作るか壊すかを考えました。何が間違っている可能性がありますか?...え?まあこれは私が得たい驚きです。

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>

a

今何を言う?!... VDI形式の仮想ハードディスクのサイズを変更できませんか?言わない?独自の形式をサポートしていませんか?それではどうでしょう...

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


4
VirtualBoxの品質に関する暴言を削除しましたが、これは質問に役立つものを追加しません。
sleske

1
将来の参照のために、modifyhd現在modifymediumは下位互換性があるとして知られていますが、virtualbox.org
manual / ch08.html#vboxmanage

回答:


121

概要:

  • 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場合は、実行するだけでパーティションを拡張できます。

スクリーンショット

a b c d e f g

参照



良い目!modifyhdパラメーターを修正しました。これをご報告いただきありがとうございます。
サミール14

2
本当によく書かれた答え!私見これは多くの票を得るはずです。
ヨハンカールソン14年

+1:StackExchangeエコシステムをすばらしいリソースにするのは、あなたのような人々と、あなたが自由に共有する知識です!
ホムンクルスレティキュリ

1
スナップショットを使用しているために問題がある場合は、virtualbox.org / ticket / 9103をご覧ください。基本的に、スナップショットファイル自体にmodifymedium/ modifyhd操作を適用する必要があります。
djule5

11

Linux(Ubuntu 14.04)をゲストOSとして実行している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アプリケーションのストレージセクションで、mydiskClone.vdiを2番目のHDとして追加し、VMを通常どおり起動します。

ゲストOSのシェルで、次のように入力します。

sudo fdisk /dev/sdb
- delete all partitions
- create new partition on full disk

ゲストを再起動します。戻ってきたら、もう一度シェルに移動して次のように入力します。

sudo resize2fs /dev/sdb1

ゲストOSをシャットダウンします。

VirtualBoxアプリケーションのストレージセクションで、mydiskClone.vdiをブートディスクに設定します。次に、ゲストOSを起動し、ファイルブラウザーの「コンピューター」のプロパティを使用して新しいディスクサイズを確認します。


この答えは意味がありません。最初に/ dev / sdbに1つの大きなパーティションを作成してからサイズを変更しますが、最初にその上にファイルシステムを作成しません。元のパーティションをコピーする手順を忘れていませんか?
sleske

5

クローニングは実際にはより優れたソリューションであり、それを行う簡単な方法があります。

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


これは、sammygからの回答の一部です。
エフレン

4

OK、それで私はクローンなしでそれを実現しました。

Ubuntuを含む100GB VDIファイル(固定形式)がありました。正常に動作しています。VMを縮小することで、ホスト内のスペースを解放したかったのです。

手順:

  1. 掃除

不要なファイルを削除しました。45GB無料。解放するのに必要なのは30GBだけです。

  1. ゲストOSを修正する

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

gpartedパーティションを70GBに縮小するために使用されます。の未使用スペースに新しいパーティションを作成しましたext4

  1. 空き領域を拭きます

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

このガイドに従ってください:ゲストおよびホストOSとしてUbuntu上の仮想ハードドライブをzerofreeを使用して縮小する

私の新しいパーティションはでした/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を圧縮する

    VBoxManage modifyhd "ubuntu.vdi"コンパクト

しばらくかかりましたが、うまくいきました!


1
これが機能していると確信していますか?VirtualBoxマニュアルによると、--compact動的に割り当てられた画像に対してのみ機能し、固定サイズの画像に対しては機能しません。
-sleske

1
@ ATOzTOA:ディスクイメージファイルが大きくなった場合、それは「固定形式」のイメージではなく、「動的に割り当てられた」イメージであり、これは回答で書いたものです。
sleske

3
いいえ、それは動的に割り当てられた画像です。マニュアルを引用するには:「固定サイズのイメージを作成する場合、仮想ディスクの容量とほぼ同じサイズのイメージファイルがホストシステムに作成されます。」virtualbox.org/manual/ch05.html#vdidetails
sleske

1
「固定サイズの画像は、指定されたサイズを超えて拡大できないことを意味します。」番号。「固定サイズ」は、サイズが固定されているため、常に同じであることを意味します。ドキュメントを読んでください。
sleske

1
誰かがこれを読んでいて、誰が正しいかわからない場合。@sleskeは正しいです。固定サイズの画像は、まさにそのとおりです。画像の作成時に指定されたサイズに固定されました。ベンチマークでは、これは動的に割り当てられた画像よりもはるかに優れたパフォーマンスを提供するため、HDを集中的に使用するタスクにVBoxを使用する場合は、制限にもかかわらずこの形式を検討する必要があります。
ジャック

2

ここでのパーティーはちょっと遅れましたが、2セントを追加します。まず、これは複雑なプロセスであり、ほとんどのカジュアルなユーザーが理解しようとすることを後押しします。OracleがこれをVBox GUIに含めなかった理由は謎です。

手順1:Windowsのコマンドライン(VBoxmanage)を使用して、ドライブサイズを増やします。ここでのヒントは、ファイルの場所を無限に入力してエラーメッセージを取得する代わりに、VDIドライブのIDを使用することです。

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

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

簡単なことではありませんが、それは実行可能です...これを理解するためにウェブを調査するのに約半日かかりました。V8.1でwin8.1 / Ubuntuを実行する

ウィリー


2

固定VDIイメージのサイズ変更/拡大/拡大の方法を次に示します(縮小するプロセスは別の答えにあります)。

  1. VirtualBoxを使用して、目的のサイズの新しいディスクを作成します(サイズ少なくとも元の同じで)。これを行うには、ゲストVMのVirtualBox設定を開き、ストレージに移動して、HDDコントローラー(例:「SATA」)をクリックし、「+」をクリックしてハードディスクを追加します。次に、必要に応じて新しいディスクを構成します。
  2. gpartedライブISOをダウンロードし、ゲストVMがそこから起動するように構成します(再度、ストレージ設定)。
  3. ゲストVMの現在のストレージをバックアップします。
  4. ゲストVMを起動します(gpartedライブ環境で起動する必要があります)。gparted環境内から:
    1. gpartedアプリケーションを使用して、既存のディスクが「/ dev / sda」であること、および新しい(大きい)ディスクが「/ dev / sdb」であることを確認します(右上のドロップダウン)。
    2. gpartedアプリケーションを閉じます。
    3. ルート権限でターミナルを開きます(デスクトップを右クリック->ターミナル->ルート権限のあるターミナル)。
    4. 次のコマンドを入力します:dd if=/dev/sda of=/dev/sdb status=progress bs=128Mそして、完了するのを待ちます。これにより、元のディスクがMBRなどを含むバイト単位で新しいディスクにコピーされます(注:元のディスクのサイズ、ホスト上のディスクの速度などによっては、完了するまでに時間がかかる場合があります)。(注:ゲストVMに1 GBを超えるRAMが割り当てられている場合、「bs」パラメーターを「bs = 256M」に変更して、コピーを少し高速化できます)。
    5. gpartedアプリケーションを再度開きます
    6. 右上のドロップダウンから新しい(より大きな)ドライブ(/ dev / sdb)を選択します。
    7. 必要に応じてパーティションを展開します。最後にないパーティションを拡張するには、拡張したいパーティションの後にあるパーティションを移動する必要がある場合があります。パーティションスキームの仕様に応じて、最後のパーティションを最後まで拡大し、最後にすべてを移動して縮小するなど、複数の手順でこれを行う必要があります。私の場合、最終パーティションはlinux-swapであったため、単に削除し、必要に応じてプライマリパーティションを拡張し、最後にスワップパーティションを再作成しました(元のパーティションスキームを複製するように注意してください)。
    8. 変更を適用します。
    9. この時点で、すべての元のコンテンツと、元のコンテンツよりも多くのスペースがある新しい固定サイズのディスクが必要です。gparted live envに新しいディスクをマウントして確認できます。
    10. ゲストVMをシャットダウン(gparted live)し、VMドライブからISOを削除します。
  5. ゲストVMの[VBox設定]に移動し、[ストレージ]に移動して、リストから元のディスクを削除します(右クリックして[添付ファイルの削除]を選択します)。これにより、VM用に新しく作成されたディスクが残ります。注:この手順は、ゲストVMの構成からディスクを削除するだけです。元のゲストVMディスク(小さいディスク)は、ホストマシンで引き続き使用できます。
  6. VMを起動してお楽しみください!
  7. (すべてが正常に機能することが確認されたら、元のVMディスクを削除できます。)

上記は何度もうまく機能しましたが、LVMを使用する場合はさらにいくつかの手順が必要と思われます。(注:LVMを使用する場合は、目的のサイズの新しいディスクを追加して、そのディスクをボリュームグループに追加するだけです。)LVMを使用するCentOS 6.6では、LVM内のスペースも増やす必要がありました。そのため、上記で作成した新しいディスクを起動した後、これらの行に沿って何かを行いました(これのさまざまな部分は、セットアップの名前によって異なります)。

  1. 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
    
  2. 物理ボリューム(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
    
  3. 論理ボリューム(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
    
  4. ファイルシステムの拡張:

    前:

    # 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
    

素敵な答え!サイトへようこそ!
djsmiley2k-CoW

1

固定VDIイメージのサイズを変更する/縮小する/縮小する方法を次に示します(この同じトピックの別の回答には、拡大するためのプロセスがあります)。

まず、私がこれを必要とした理由についての短い背景(VDIを縮小する多くのシナリオがあり、そのうちのいくつかはこのアプローチでは実現できないかもしれません):何年も前に、Windows Serverゲスト用に固定VDIを作成し、600GBにサイズ設定しました。なぜこのサイズを選んだのかは思い出せませんが、今日の時点ではそのゲストで100GBしか消費しておらず、残りのスペースのほとんどを回収したいと思っています。そのため、私の場合、ゲスト内のすべてのデータを保持し、ゲスト内の未使用スペースを解放するだけです。

(次の手順は、主に過去2時間にこれを行った記憶からのものであるため、ここで何かを見逃した場合は謝罪します。)

  1. 新しいサイズの大きさを決定します。当然のことながら、おそらく現在使用しているスペースを超えたスペースをゲストに残したいと思うでしょう。サイズは少なくともソース/元のディスクのデータと同じで、最も近いGBに丸められている必要があります。
  2. VirtualBoxを使用して、前の手順で決定したサイズの新しい固定サイズのディスクを作成します。これを行うには、ゲストVMのVirtualBox設定を開き、ストレージに移動して、HDDコントローラー(例:「SATA」)をクリックし、「+」をクリックしてハードディスクを追加します。次に、必要に応じて新しいディスクを構成します。
  3. gpartedライブISOをダウンロードするを、ゲストVMがそこから起動するように構成します(再度、ストレージ設定)。
  4. ゲストVMの現在のストレージをバックアップします。
  5. ゲストVMを起動します(gpartedライブ環境で起動する必要があります)。gparted環境内から:

    1. gpartedアプリケーションを使用して、「オリジナル」ディスクと「新規」ディスクを判別します。元のパーティションには少なくとも1つのパーティションがあり、新しいパーティションには完全に空白が含まれます。(通常、「オリジナル」は/ dev / sdaが割り当てられた最初のディスクであり、「新しい」ディスクは/ dev / sdbが割り当てられた2番目のディスクです。)
    2. gpartedアプリケーションを使用して、元のパーティションまたはソースパーティションを目的のサイズに縮小します。 覚えているすべての操作を計画したら、必ず[適用]ボタンをクリックして。(これは、パーティションのサイズとディスク速度によっては完了するのに少し時間がかかる場合があります。)
    3. gpartedアプリケーションを使用して、新しいディスクにパーティションテーブルを作成します(デバイス->パーティションテーブルの作成...、タイプはMSDOSのままにします)。
    4. gpartedアプリケーションを使用して、新しいディスクに同一のパーティションを作成します。(同じであることを確認するために、(パーティション)->(情報...)メニューオプションを使用して元のディスクの各パーティションの詳細情報を取得し、同じパーティションを作成したときに使用するスクリーンショットを保存しました( s)新規/宛先ディスク上。)以下を確認してください。
      • (新しく調整された)オリジナルと同じサイズの各宛先パーティションを作成します。
      • パーティションに一致するフラグを設定します(パーティションの作成後に行う必要がある場合があります)。
      • パーティション上のラベルを一致するように設定します。
      • (注:データがコピーされると、UUIDが自動的に設定されます。)
    5. [適用]ボタンをクリックして、すべての変更をコミットします。
    6. どのディスクが「オリジナル」で「どのディスク」が新しいかを書き留め、対応するパーティションの番号を書き留めます(例:/ dev / sda1-> / dev / sdb1、/ dev / sda2-> / dev / sdb2 ...)
    7. gpartedアプリケーションを閉じます。
    8. ルート権限でターミナルを開きます(デスクトップを右クリック->ターミナル->ルート権限のあるターミナル)。
    9. 「元の」ディスクが/ dev / sdaで、「新規」が/ dev / sdbである場合(そうでない場合は、次のコマンドを適切に調整します)、各パーティションを1つずつコピーします。上記の手順で書き留めたパーティションごとに、ターミナルで次のコマンドを入力します。

      # dd if=/dev/sda1 of=/dev/sdb1 status=progress bs=128M
      

      それが完了するのを待ちます。これにより、元のディスクからパーティション1がバイト単位で新しいディスクのパーティション1にコピーされます。
      残りのパーティションごとにコマンドを繰り返します。

      # dd if=/dev/sda2 of=/dev/sdb2 status=progress bs=128M
      # dd if=/dev/sda3 of=/dev/sdb3 status=progress bs=128M
      # ...
      

      ノート:

      • これは、パーティションのサイズ、ホスト上のディスクの速度などによっては完了するまでに時間がかかる場合があります。
      • ゲストVMに1 GBを超えるRAMが割り当てられている場合、「bs」パラメーターを「bs = 256M」に変更して、コピーを少し高速化できます。
    10. この時点で、元のコンテンツがすべて含まれた新しい固定サイズのディスクと、元のコンテンツよりも小さいVDIファイルが必要です。gparted live envに新しいディスクをマウントし、データがすべて揃っていることを確認できます。
    11. ゲストVMをシャットダウンし(gparted live)、VMドライブからgparted ISOを削除します。
  6. ゲストVMの[VBox設定]に移動し、[ストレージ]に移動して、リストから元のディスクを削除します(右クリックして[添付ファイルの削除]を選択します)。これにより、VM用に新しく作成したディスクが残ります。注:この手順は、ゲストVMの構成からディスクを削除するだけです。元のゲストVMディスク(つまり、大きなVDI)は、ホストマシンで引き続き使用可能です。
  7. 私のWindowsゲストのために私がしなければならなかった最後のステップは、MBRやBCDを設定/修正することでした。(まだ行っていないので、Linuxゲストにこれが必要かどうかはわかりません。)新しいVDIから単純に起動した場合、このコンテンツを含むWindowsブートマネージャーエラー画面が表示されます(残念ながらできませんでした)問題を修正する前にスクリーンショットを取得してください):

    windows failed to start
    status 0xc000000e
    information A required device isn't connected or can't be accessed.
    
  8. Windowsのインストールまたは修復のISO(理想的にはOSのバージョンに一致するもの)を取得し、ゲストVMがそこから起動するように構成します(再び、ストレージ設定)。

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

    1. Windowsのインストール/修復の各バージョンは異なるため、ここで全員に正確な手順を説明することはできません。しかし、アイデアは「修復」オプションを選択し、コマンドプロンプトへの道を見つけることです。私のWindows Server 2012の場合、次のことをしなければなりませんでした。(a)言語/ロケールを選択します。(b)左下隅の「コンピューターの修復」を選択します。(c)[トラブルシューティング]を選択します。(d)[コマンドプロンプト]を選択します。
    2. コマンドプロンプトが表示されたら、次のコマンドを実行します(情報についてはhttp://loverofcode.blogspot.com/2013/11/fixed-0xc000000e-boot-error.htmlに感謝します!):

      > bootrec /fixmbr
      > bootrec /fixboot
      > bootrec /rebuildBcd
      

      この最後のコマンドは、Windowsインストールを見つけて、それをBCDに追加するようプロンプトを出します。「Y」と答えます。

    3. コマンドプロンプトを終了し、ゲストVMをオフにします。
  10. ゲストVMのVBox設定に移動し、ストレージに移動して、CD / DVDドライブからWindows Install / Repair ISOを削除します。
  11. VMを起動してお楽しみください!
  12. (すべてが正常に機能することが確認されたら、元のVMディスクを削除できます。)

0

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

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

1.実行中のVMを終了します

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

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

これは私にとってはうまくいくでしょうし、ハードディスク容量の総量を指定する必要があります。スペースを増やす必要はありません...

C:\ Program Files \ Oracle \ VirtualBox> VBoxManage.exe modifyhd "D:\ Virtual Machine \ VirtualBox VMs \ Windows 7(FileZilla Server)\ Windows 7(FileZilla Server).vdi" --resize 15360

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.