前回は、仮想ハードディスクファイル(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
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」コマンドを使う。なお、「-Size」オプションは省略できないが、現在の容量より小さい値を指定して縮小することができる。
Resize-Partition -DiskNumber 2 -PartitionNumber 2 -Size 1400MB
PowerShellでは、コマンドで簡単に実行できるが、通常のディスク関連のコマンド(Resize-Partition)を使うためには、VHDファイルをマウントしておく必要がある。
VHDファイルの容量拡大は、比較的よくする作業だ。逆に言うと容量拡大は簡単にできるため、仮想マシンの作成時に最低容量で作ることが多い。ただし、この作業が簡単なのは、NTFSがWindowsの標準的なファイルシステムであり、パーティションサイズ変更のコマンドが同時にファイルシステムの調整をしてくれるからだ。
さて次回は、容量可変の仮想ハードディスクファイルのファイルサイズの縮小を解説する。
この連載の記事
-
第459回
PC
WSL 2.4.4ではtar形式でのディストリビューションが配布でき、企業での利用が容易になってきた -
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ -
第455回
PC
Windowsで現在どのネットワークアダプタがインターネット接続に使われているかを調べる方法 -
第454回
PC
Windows 11 24H2では「デバイスの暗号化」の条件が変わり、より多くのPCでドライブが暗号化される -
第453回
PC
Windows 11 24H2の配布開始後もすぐにはやってこない Windows UpdateとSafeguard Holds -
第452回
PC
Windows 11 Ver.24H2が登場 Copilot+ PCとそうでないPCで実質Windowsが2つに分かれる -
第451回
PC
新しいWindowsサンドボックスではコマンドラインからの制御が可能に -
第450回
PC
ユニコードで文字数を数える方法 -
第449回
PC
WSLはプレビュー版でGUIでの設定が加わった! リリース2.3.xの新機能を見る - この連載の一覧へ