Windows で Hyper-V VM ディスクのサイズを変更する方法
VMのディスク容量が小さすぎたり大きすぎたりして、イライラしたことはありませんか?VMをシャットダウンせずに容量を増やしたい場合(そう、こうした作業の一部はオンラインで実行できます)、あるいは容量が足りなくなってしまい、すべてを再作成せずに縮小する必要がある場合などです。いずれにせよ、特にHyper-Vでは、仮想ディスクのサイズを調整することは可能ですが、いくつか注意点があります。このガイドでは、Hyper-V UIまたはPowerShellからVHDXファイルを直接拡張または縮小する実用的な方法をいくつか紹介し、注意すべき点についても説明します。Windowsでは、必要以上に複雑な操作をしてしまうことがよくあるからです。
Windows で Hyper-V 仮想ディスク (VHDX) のサイズを変更する方法
Hyper-V マネージャーを使用して VM のディスクを拡張する
ああ、古典的な方法です。コマンドをいちいち操作するよりもクリックする方が好きな人には、おそらくこれが一番分かりやすいでしょう。これは、仮想マシンをシャットダウンせずにハードドライブの容量を増やしたい時に役立ちます(SCSIコントローラに接続している場合)。IDEディスクを使用している場合は、まず仮想マシンをシャットダウンする必要がありますが、これでは本来の目的が達成されないこともあります。
- Hyper-V マネージャーに移動し、サイズを変更する VM を選択します。
- 右クリックして「設定」を選択します。次に「SCSIコントローラ」を探します。それを選択し、拡張したい仮想ディスクを選択します。
- 「編集」ボタンをクリックします。グレー表示になっている場合は、スナップショットまたはチェックポイントがある可能性があります。修正するには、以下の手順に従ってください。
- すべてのチェックポイント/スナップショットを削除します。チェックポイントセクションに移動し、必要に応じて古いものを削除します。
- 編集アクセスが停止している場合は、VM 設定でプロダクション チェックポイントを無効にします。
- ウィザードで「拡張」を選択し、新しいディスクサイズを指定します。例えば、127 GBから170 GBに増やします。
- 変更を適用したら、VMのOSに移動します。「ディスクの管理」(Windows + X> 「ディスクの管理」)を開くと、未割り当て領域が表示されます。
- 拡張したいパーティションを右クリックし、「ボリュームの拡張」を選択します。スライダーをドラッグするか、追加したいサイズを入力します。Windowsの動作が不安定だったり、パーティションが回復パーティションまたはシステム予約済みパーティションだったりする場合は、この手順が難しい場合があります。
これで、VMのディスク容量が大きくなり、より多くのデータに対応できるようになりました。ゲストOS内のボリュームも拡張することを忘れないでください。Linuxの場合は、partedやgpartedなどのツールをご利用ください。
仮想ディスク(VHDX)のサイズを縮小する
パーティションを縮小するのは少し難しいです。主な理由は、Hyper-V にディスクの末尾を切り捨てるように指示するだけでは、事前に準備することができないからです。重要なのは、まずゲスト OS 内のパーティションを縮小し、次に VHDX ファイルを縮小することです。
- VM を起動し、ディスクの管理を開いて、縮小するパーティションを選択します。
- 「ボリュームの縮小」をクリックします。縮小するには、そのパーティションに少なくともいくらかの空き容量があることを確認してください。縮小したいサイズ、例えば50GBなどを指定します。
- 完了したら、VMをシャットダウンします(勇気があるなら少なくとも切断してください)。Hyper-Vマネージャーに移動し、VMを選択してディスクの「編集」をクリックします。
- 「縮小」を選択し、VHDX の新しい小さいサイズを指定します。ただし、ディスクに実際に存在するサイズよりも小さいサイズを指定しないでください。そうした場合、Hyper-V から警告が表示されます。
- プロのヒント:Hyper-VのOptimize-VHDコマンドを実行して
Optimize-VHD -Path 'C:\VM\VHDHyper-V\fs01.vhdx'、まずディスクのデフラグと圧縮を実行しましょう。これで面倒な作業が省けるかもしれません。
PowerShell を使用して VHDX ファイルのサイズ変更を行う
PowerShell を使い慣れていますか?いいですね。定期的に実行する場合や自動化したい場合は、PowerShell の方が速いです。ここで重要なコマンドは ですResize-VHD。そして、VM をシャットダウンする必要がないのも嬉しいですね。
Get-VM -Name "YourVM" | Get-VMHardDiskDrive | Get-VHD
これにより、ディスクのフルパスと、現在のサイズと最大サイズに関する情報が表示されます。例えば200GBに増やしたい場合は、次のコマンドを実行してください。
Resize-VHD -Path 'C:\VM\YourVM\VHD\yourdisk.vhdx' -SizeBytes 200GB
指定したサイズがディスク上で既に使用されているサイズよりも小さい場合、エラーが発生します。これは忘れがちなので、サイズを変更する前にMinimumSizeを確認してください。
ディスクを小さくするには(たとえば、クリーンアップ後にスペースを再利用するには)、次のコマンドを実行します。
Resize-VHD -Path 'C:\VM\YourVM\VHD\yourdisk.vhdx' -ToMinimumSize
これにより、既存のデータに基づいてVHDXが可能な限り最小のサイズに縮小されます。データの損失を防ぐため、VM内でパーティションサイズを事前に縮小しておくようにしてください。
もう 1 つのトリック: PowerShell Remoting 経由で VM にリモート接続し、次のコマンドでパーティションのサイズを変更します。
Enter-PSSession -ComputerName YourVMName# Then, check max size and extend:$MaxSize = (Get-PartitionSupportedSize -DriveLetter C).SizeMaxResize-Partition -DriveLetter C -Size $MaxSize
設定によっては、ホストからすべてを実行するよりも、この方法の方が動作がスムーズになる場合があります。コマンドは少し繊細なので、Enterキーを押す前にパスとサイズを再確認してください。
まとめ
- Hyper-V マネージャーまたは PowerShell コマンドを使用して、VM をシャットダウンせずに VHDX ファイルのサイズを変更します。
- VHDX を縮小する前に、必ずゲスト OS 内のパーティションを縮小してください。
- ファイル サイズを縮小する前に、デフラグおよび圧縮コマンドを実行して最良の結果を得てください。
まとめ
正直なところ、Hyper-V でのディスクのサイズ変更はちょっとしたゲームです。スムーズに進むこともあれば、頭を悩ませることもあります。重要なのは、何をいつ行うべきかを理解することです。Hyper-V UI で拡張するか、ゲスト内で縮小するか、そして仮想ディスクファイルを操作する前に必ずパーティションサイズを再確認してください。万が一問題が発生した場合は、スナップショットまたはバックアップを復元してください。データを失うよりは安全です。これらの方法が、数時間の節約、あるいは少なくともよくある落とし穴を回避するのに役立つことを願っています。