このページの本文へ

Windows Info 第365回

Windowsで作成した仮想ハードディスクを容量を拡大する

2023年02月05日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

 前回は、仮想ハードディスクファイル(VHDファイル)の作成について解説したが(「Windowsで仮想ハードディスクを作る&使う」)、今回はその「拡大」について解説する。ここでいう「拡大」とは、VHDファイルの「容量」を大きくすることを意味している。なお、本記事で使う用語などについては、前回記事の表などを参照してほしい。

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ツール」にある「ディスクの編集」で、VHDファイルの容量を拡大できる

 その後、「ディスクの管理」(「スタートメニュー」→「すべてのアプリ」→「Windowsツール)で、ボリュームサイズを変更する。

VHDファイルの容量を拡大したあと、「ディスクの管理」でボリューム/パーティションサイズを拡大する

 ウィンドウ下部のディスクのグラフィック表示で、右クリックメニューの「ボリュームの拡張」を選ぶ。「ボリュームの拡張ウィザード」が起動するので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

Windows PowerShellでは、Resize-VHDコマンドで容量を拡大できる。ただし、Hyper-Vが有効化されている必要があり、Homeエディションでは利用できない

 パーティションのサイズ変更では、マウントしてディスク番号(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の標準的なファイルシステムであり、パーティションサイズ変更のコマンドが同時にファイルシステムの調整をしてくれるからだ。

 さて次回は、容量可変の仮想ハードディスクファイルのファイルサイズの縮小を解説する。

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン