このページの本文へ

Windows Info 第364回

Windowsで仮想ハードディスクを作る&使う

2023年01月29日 10時00分更新

文● 塩田紳二 編集● ASCII

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

「コンピュータの管理」の中にある「ディスクの管理」では、「操作」メニューからVHDの作成と接続ができる

 Windowsの仮想マシン環境、Hyper-Vで使われている技術に「仮想ハードディスク」(Virtual Hard Disk、VHD)がある。仮想マシン環境以外でも、WSL2のローカルストレージなどにも利用されており、そのほか、ハードディスクにしか配置できないファイルをリムーバルディスクに置いたり、ハードディスクのバックアップ用などに使うことがある。今回は、このVHDの作り方と使い方を解説する。

 その前にWindowsのハードディスク関連の用語を整理しておこう。

 ここでわかりにくい用語の1つが「ディスク」と「ドライブ」だ。ディスクは、Windowsでは単一の記憶装置、主にハードディスクを指す。これに対してドライブは、物理的な外部記憶機器、たとえばHDD、FDD、CD-ROMドライブなどを指す場合もあるが、論理的な記憶デバイスに対応するものとして「ドライブ文字」のように使われることがある。

 この場合、ドライブ文字が割り当てられるのは、ハードディスク内のパーティションにNTFSなどのファイルシステムを作った「ボリューム」が対応する。もともとドライブ文字は、MS-DOS時代に物理的な外部記憶装置としてFDDやパーティションを持たないHDDなどに対応するものとして作られた用語だが、HDDが大容量化し、パーティションに分割して複数「ドライブ」として扱えるようになってから、「論理的な記憶装置」という意味を持つようになった。こうした曖昧な部分があるために、本記事では「ドライブ」を用語としては使わないようにする。

 Windowsでは、ディスク(Disk)を分割して複数の領域として利用するものをパーティション(Partition)、パーティション上にNTFSなどのファイルシステムを作ったものをボリューム(Volume)と呼ぶ。この用語は、後述する仮想ハードディスクファイルを作成するdiskpart.exeなどでは、厳密に使われているので注意されたい。

仮想ハードディスクの種類

 仮想ハードディスクとは、NTFS上などの「ファイル」を使って、仮想的なハードディスクを作るものだ。仮想マシンなどからは、ハードディスクのように見えるが、その読み書きはファイルに対して行なわれる。このファイルを「仮想ハードディスク」ファイルという。

 その形式には、VHD v1.0とv2.0があり、v1.0では「.vhd」という拡張子が、v2.0では「.vhdx」が使われている。現在の主流はv2.0で、これを「VHDXファイル」などと呼ぶ。後述するWindowsの機能では「.vhd」形式のファイルを作ることもできるが、互換性のために残されている機能であり、特に必要性がなければ、「.vhdx」形式を使うことをお勧めする。

 VHDXファイルには、大きく「容量固定」(Fixed size)、「可変容量」(Dynamically expanding)、「差分」(Differencing)の3つの種類がある。推奨は「容量可変」だ。「容量固定」は作成した仮想ハードディスクの容量とほぼ同じ大きさのファイルを作る。これに対して、「容量可変」は最小容量からスタートし、容量の利用に応じてファイルサイズが拡大していく。

 読み書きの性能は「容量固定」の方が高いが、ファイルとしての扱いやすさは「可変容量」が優れる。また、「容量固定」と「可変容量」のパフォーマンスの違いは、VHDXファイルを拡大していくためのオーバーヘッドで、すでに書き込まれた領域の読み書き速度はほとんど差がない。

 「差分」は、ベースとなるVHDXに対して、書き込みのみを別のVHDXファイルにする。これはHyper-Vの「スナップショット」として利用されている。書き込みを別のVHDXファイルにするため、これを破棄することで、VHDXを初期状態に戻せる。ただし、ベースとなるVHDXを絶対パス指定する必要があること、差分ファイルが存在する間はベースとなるVHDXファイルが変更できないなど利用に制約がある。

実際に仮想ハードディスクファイルを作る

 Windowsでは、仮想ハードディスクを作成し、これを「接続」(一般的な用語でいうマウント)すれば、ディスクが見えるようになり、あとは、標準ツールでこれを「初期化」「パーティション作成」「論理フォーマット」することで、記憶領域として利用できるようになる。

 Windowsでは、こうした作業のためのツールが3つある。1つは「ディスクの管理」、もう1つはdiskpart.exeコマンド、そしてWindows PowerShellのVHD関連コマンドだ。このうち、PowerShellのVHD関連コマンドは、Hyper-Vの一部になっているため、Homeエディションでは利用できないが、残りの2つはどのエディションでも可能だ。

 「ディスクの管理」(記事冒頭画面)は、標準ではコントロールパネルやスタートメニューの「すべてのアプリ」の「Windowsツール」(Windows 11の場合)、あるいは「管理ツール」(Windows 10)にある「コンピュータの管理」の中にある。

 「操作」メニューの「VHDの作成」でVHDファイルを作る。「ディスクの管理」では、「.vhd」「.vhdx」のどちらも作成可能で、「.vhdx」ファイルでは、「容量固定」「可変容量」(可変容量が推奨)の2つだけを作ることができる。形式を選択し、ファイルパスと容量を指定すれば、仮想ディスクファイルを作ることができる。

「VHDの作成」では、「仮想ハードディスクの作成と接続」ダイアログが開く。フォーマットや種類を指定し、ファイルパスとサイズを指定すれば仮想ハードディスクファイルが作成され自動的にマウントされる

 作成した仮想ハードディスクファイルは、自動的に「接続」(マウント)されるが、ディスクの管理の「操作」メニューにある「VHDの接続」でファイルを指定してマウントできる。このとき「読みとり専用」を指定可能だ。

 切断するには、ウィンドウ中央下に表示される仮想ハードディスクに対応するディスクの上で右クリックメニューから「VHDの切断」を選択する。

ウィンドウ中央下の領域で仮想ハードディスクファイルの左端の領域で右クリックすると「ディスクの初期化」や「VHDの切断」がメニューに表示される。論理フォーマットをする場合には、右側のパーティション表示で右クリックする

 diskpart.exeコマンドは、対話型のコマンドラインツールだ。起動すると多数のサブコマンドを受け付ける。詳細はhelpサブコマンドで表示できる。.vhdxファイルを作成するには、以下のコマンドを使う。

diskpart.exe
create vdisk file="c:\temp\dptest.vhdx" maximum=1000 type=expandable

 create vdiskサブコマンドでは、fileパラメーターのファイルパス拡張子でv1.0(.vhd)とv2.0(.vhdx)を区別している。また、容量はMB単位で指定する。たとえば、10000とすると10GBになる。タイプ(type)は、「expandable」「fixed」の2種類。「差分」形式は、typeと容量(maximum)を指定せず、「patent=」で親仮想ハードディスクファイルのパスを指定する。

 作成した仮想ハードディスクファイルを接続するには、selectコマンドで対象を選択し、attachコマンドで接続する。解除は、同様にselectコマンドで対象を選択したあと、「detach vdisk」コマンドを使う。

 Windows PowerShellでは、

New-VHD -path c:\temp\wpstest.vhdx -SizeBytes 1GB -Dynamic

で仮想ハードディスクファイルを作成できる。容量の指定では、「GB」「MB」「TB」といった単位が指定可能。「-Dynamic」オプションを付けることで可変容量、「-Fixed」で容量固定、「-Differencing」で差分となる。このコマンドを使うためにはコントロールパネルの「プログラムと機能」で「Windowsの機能の有効化または無効化」を使いHyper-Vを有効にしておく必要がある。

 仮想ハードディスクを接続(マウント)するには「mount-vhd」コマンドを、切断するには「dismount-vhd」コマンドを使う。

仮想ハードディスクファイルの初期化など

 以後は、物理ハードウェアのハードディスクの初期化とまったく同じである。具体的には「初期化(パーティションテーブルの作成)」「パーティションの作成」「パーティションの論理フォーマット(ボリュームの作成)」が必要になる。GUI操作となる「ディスクの管理」を使う方法は、広く知れ渡っているのでここでは解説しない。

 diskpart.exeでは、マウントから論理フォーマットまでは、以下のサブコマンドでする。最後のexitサブコマンドでdiskpart.exeが終了する。

select vdisk file="c:\temp\dptest.vhdx"
attach vdisk
convert gpt
create partition primary
format label="DPvhd" quick
exit

 Windows PowerShellでは、VHDファイルを作成したあと、パイプで接続してマウント処理から論理フォーマットまでを一気にできる(New-VHDからでも可能)。なお、管理者権限が必要である。

Mount-VHD c:\temp\wpstest.vhdx -Passthru | Initialize-Disk -PartitionStyle GPT -PassThru | New-Partition -UseMaximumSize | Format-Volume -FileSystem NTFS -NewFileSystemLabel "WPSvhd"

 コマンドによっては、実行後にオブジェクトを出力しないため「-Passthru」オプションを付ける必要がある。

 「ディスクの管理」、diskpart.exe、Windows PowerShellコマンドは、いずれも同じ処理なので、VHDXファイルの作成をWindows PowerShellでしたのち、diskpart.exeで初期化とパーティション作成を、「ディスクの管理」で論理フォーマットをするといったことも可能。次回は作成した可変容量のVHDXファイルの容量変更、ファイルサイズ変更などについて解説する予定だ。

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

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

ピックアップ

ASCII.jp RSS2.0 配信中

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