Windowsで仮想ハードディスクを作る&使う
ASCII.jp / 2023年1月29日 10時0分
Windowsの仮想マシン環境、Hyper-Vで使われている技術に「仮想ハードディスク」(Virtual Hard Disk、VHD)がある。仮想マシン環境以外でも、WSL2のローカルストレージなどにも利用されており、そのほか、ハードディスクにしか配置できないファイルをリムーバルディスクに置いたり、ハードディスクのバックアップ用などに使うことがある。今回は、このVHDの作り方と使い方を解説する。
その前にWindowsのハードディスク関連の用語を整理しておこう。
![](https://ascii.jp/img/2023/01/28/3484790/x/504b6600be7c34ed.png)
ここでわかりにくい用語の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つだけを作ることができる。形式を選択し、ファイルパスと容量を指定すれば、仮想ディスクファイルを作ることができる。
![](https://ascii.jp/img/2023/01/28/3484788/x/7c7ca843f648420f.png)
作成した仮想ハードディスクファイルは、自動的に「接続」(マウント)されるが、ディスクの管理の「操作」メニューにある「VHDの接続」でファイルを指定してマウントできる。このとき「読みとり専用」を指定可能だ。
切断するには、ウィンドウ中央下に表示される仮想ハードディスクに対応するディスクの上で右クリックメニューから「VHDの切断」を選択する。
![](https://ascii.jp/img/2023/01/28/3484789/x/6761442fc2da7cfe.png)
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ファイルの容量変更、ファイルサイズ変更などについて解説する予定だ。
この記事に関連するニュース
-
SSDの初期化に最適!「EaseUS Partition Master」レビュー
ITライフハック / 2024年7月3日 18時0分
-
Windowsが今更(?)開発者に優しくなろうとしている!? 「Dev Home」は開発者にとって使い物になる?
ASCII.jp / 2024年6月23日 10時0分
-
窓辺の小石 第170回 ネットの総和
マイナビニュース / 2024年6月14日 10時13分
-
Windows Server 2025、AIワークロードを向上させるGPU機能発表
マイナビニュース / 2024年6月11日 11時25分
-
Windows Subsystem for Linuxガイド 第36回 WSL2でDockerを使う その2「Dockerエンジン編」
マイナビニュース / 2024年6月10日 17時57分
ランキング
-
1迷惑メール転送すると送信元が行政処分される? Xでアドレス拡散、宛先の「迷惑メール相談センター」が明かす実情
J-CASTニュース / 2024年7月2日 11時0分
-
2新紙幣「一万円札と千円札の1の字が違う」SNSに違和感覚えるという声も…… 「1」のデザインが違う理由は?
ねとらぼ / 2024年7月3日 18時15分
-
3藤本美貴&庄司智春、真っ昼間に変装ゼロで“腕絡め”デート 大勢の注目浴びるも“モザイク9割”の結果で「笑った」
ねとらぼ / 2024年7月2日 15時1分
-
4老後の趣味で気軽に“塗り絵”を始めて1年後…… めきめき上達した70代女性の美麗な水彩画に「本当にすごい…」「感動です」
ねとらぼ / 2024年6月29日 22時0分
-
5中小企業の社内Wi-Fi接続、約半数が「つながりにくさ」を実感‐対処法は?
マイナビニュース / 2024年7月3日 11時50分
記事ミッション中・・・
記事にリアクションする
![](/pc/img/mission/mission_close_icon.png)
記事ミッション中・・・
記事にリアクションする
![](/pc/img/mission/point-loading.png)
エラーが発生しました
ページを再読み込みして
ください
![](/pc/img/mission/mission_close_icon.png)