前回は、仮想ハードディスクファイル(VHDファイル)の作成について解説したが(「Windowsで仮想ハードディスクを作る&使う」)、今回はその「拡大」について解説する。ここでいう「拡大」とは、VHDファイルの「容量」を大きくすることを意味している。なお、本記事で使う用語などについては、前回記事の表などを参照してほしい。
VHDファイルの容量を拡大する
VHDファイルはソフトウェアで実現されているため、容量を簡単に拡大できる。しかし、VHDファイルの中には、「パーティション」があり、その中に「ファイルシステム」が作られている。
そのためパーティションサイズの拡大の処理が必要になる。ただし、パーティションは、直後に空き領域がある場合しか拡大できない。VHD内に複数のパーティションがあるとき、拡大できるパーティションは最後のパーティションだけだ。
そのあとで、ファイルシステムをパーティションサイズに合わせて調整する必要がある。ファイルシステムは一般的に、ファイルの内容を記録する「ファイル領域」と、ファイル名とファイルの内容が記録位置などを対応させるための「ディレクトリ領域」がある。パーティションサイズが変更になると、「ディレクトリ領域」を新しいパーティションサイズに調整する必要がある。これをしないと、ファイルシステムは元のパーティションサイズを総容量としたままになる。
Windowsでは、NTFSのボリューム(NTFSでフォーマットされたパーティション)のサイズを拡大/縮小できる。このとき、ファイルシステムであるNTFSは自動的にサイズ調整される。しかし、NTFS以外のボリューム、たとえばWSLのext4パーティションなどは、Windowsのコマンドではサイズ変更ができない。この場合、Windows側でVHDファイルの容量を拡大したあと、WSL側のコマンドを使って調整する必要がある(「WSL2で用いるルートファイルシステムの容量を拡大する方法は?」)。
仮想ハードディスクを拡大する
前回解説したようにVHDの操作は、GUI、diskpart.exe、Windows PowerShellの3つの方法がある。まず、GUIツールだが、VHDファイルの容量拡大は、Hyper-Vマネージャーの「ディスクの編集」(「スタートメニュー」→「すべてのアプリ」→「Windowsツール」)を使う。
「ディスクの編集」は、ウィザード形式でVHDファイルの容量を拡大する。最小増加単位は1GBだが、それで困るケースはほとんどないだろう。また、VHDファイルは「切断」状態にしておくことで制限がなくなるが、VHDファイルの容量拡大は接続状態でも実行できる。
その後、「ディスクの管理」(「スタートメニュー」→「すべてのアプリ」→「Windowsツール)で、ボリュームサイズを変更する。
ウィンドウ下部のディスクのグラフィック表示で、右クリックメニューの「ボリュームの拡張」を選ぶ。「ボリュームの拡張ウィザード」が起動するので2ページ目まで進み、「ディスク領域(MB)を選択」で追加容量を指定する。初期状態では、拡張可能な最大値が設定されているので、そのまま「次へ」ボタンで進むことができる。NTFSであれば、これで処理は終了である。
diskpart.exeを使う場合には、以下のサブコマンドを使う。VHDファイルは、「C:\temp\dptest.vhdx」で、容量は1500MBとする。
select vdisk file="C:\temp\dptest.vhdx"
expand vdisk maximum=1500

diskpart.exeでは、select vdiskでVHDファイルを選択したのち、expand vdiskサブコマンドで容量を拡大する。そのあと、仮想ハードディスクをattachサブコマンドでマウント、パーティション番号を調べて、extendサブコマンドでパーティション/ボリュームのサイズを変更する
selectした仮想ハードディスクに関する情報は「detail vdisk」で得られ、「list disk」で空き容量(パーティションに割り当てられていない容量)を確認できる。
次に、ボリューム(パーティション)サイズを変更する。それにはextendサブコマンドを使う。そのためにはattachして、パーティションを選択する必要がある。attachしたあとならば、「list partition」サブコマンドで選択中のVHDファイルのパーティションを一覧できる。
extendサブコマンドは、選択中のパーティションに追加する容量を「size=MB単位」で指定する。指定する値は、パーティションの総容量でない点に注意。サイズ指定を省略するとパーティションを最大サイズにできる。
attach vdisk
list part
select partition 1
extend size=500
NTFSの場合には、やはりこれで作業は終了である。最後にdetach vdiskを実行して、VHDファイルを切断してdiskpart.exeを抜ける。
detach vdisk
exit
Windows PowerShellでは、前回解説したようにHyper-Vが有効化されていることが前提となる。VHDファイルの容量拡大には以下のコマンドを使う。VHDファイルは「C:\temp\wpstest.vhdx」とする。
Resize-VHD c:\temp\wpstest.vhdx -SizeBytes 1500MB
パーティションのサイズ変更では、マウントしてディスク番号(DiskNumber)を「Get-Disk」コマンドで、パーティション番号(PartitionNumber)を「Get-Partition」で調べる。それには以下のコマンドを使う。なお、それぞれコマンドやオプションにはタブによる補完が利く。
Mount-VHD C:\temp\wpstest.vhdx
Get-Disk | sort Number
Get-Partition -DiskNumber 2
これで拡大するパーティションのディスク番号(ここでは2とする)、パーティション番号(同じく2)が得られた。

パーティション/ボリュームサイズは、Resize-Partitionコマンドで変更するが、そのためには、ディスク番号とパーティション番号をGet-Disk、Get-Partitionコマンドで調べておく必要がある
これを使い、「Resize-Partition」コマンドを使う。なお、「-Size」オプションは省略できないが、現在の容量より小さい値を指定して縮小することができる。
Resize-Partition -DiskNumber 2 -PartitionNumber 2 -Size 1400MB
PowerShellでは、コマンドで簡単に実行できるが、通常のディスク関連のコマンド(Resize-Partition)を使うためには、VHDファイルをマウントしておく必要がある。
VHDファイルの容量拡大は、比較的よくする作業だ。逆に言うと容量拡大は簡単にできるため、仮想マシンの作成時に最低容量で作ることが多い。ただし、この作業が簡単なのは、NTFSがWindowsの標準的なファイルシステムであり、パーティションサイズ変更のコマンドが同時にファイルシステムの調整をしてくれるからだ。
さて次回は、容量可変の仮想ハードディスクファイルのファイルサイズの縮小を解説する。

この連載の記事
-
第470回
PC
Windows用のパッケージマネージャー「Winget」 プレビュー版で機能が充実してきた -
第469回
PC
Windows Updateの27年 悪役だった頃から改良が進んで、徐々に目立たない存在に -
第468回
PC
2025年のWindowsどうなる!? Windows Insider Programの状況をあらためて見る -
第467回
PC
Copilot+ PCのNPUでカメラを処理する「Windows Studio Effects」 その内容や効果は? -
第466回
PC
PowerToysの最近の新機能には、複数アプリを指定位置に起動する「ワークスペース」や新規作成のカスタマイズがある -
第465回
PC
WindowsのPowerShellからBluetoothデバイスを調べる -
第464回
PC
Windows 10のサポート切れまで1年を切った さてWindows 10マシンをどうする? -
第463回
PC
Windows Terminal Preview版でSixelグラフィックスを実際に表示させてみる -
第462回
PC
Windows Terminal Preview版でSixelグラフィックスを扱う -
第461回
PC
Copilot+ PCを買ってみたが、「今焦って買う必要はない」のかもしれない -
第460回
PC
Windowsでsftpを使う - この連載の一覧へ