Windowsには、仮想ハードディスク(VHD。Virtual Hard Disk)という機能がある。
これは、ファイルを使って、仮想的なハードディスクドライブ(デバイス)を実現するもの。仮想ハードディスクファイル(VHDファイル)をマウントすれば、以後、増設ハードディスクドライブのように扱える。

このVHDという技術は、仮想マシンに対して外部記憶装置を提供するために作られたが、仮想マシン技術自体とは独立した技術であり、どちらかというと仮想CDドライブ(ISOファイルのマウント)などに近い。

技術自体を「VHD」と表記し、記憶する実体のファイルを「VHDファイル」と呼ぶ。このVHDファイルには、最初のバージョンである「.vhd形式」と、後継バージョンである「.vhdx形式」の2つがある。現時点では、.vhdx形式を利用し、互換性のため.vhd形式を利用するのが普通である。

VHDファイルを作成するには、いくつかの方法がある。Hyper-V管理ツールから仮想マシン作成時に行う方法を除くと、以下の3つの方法がある。

ディスクの管理(コンピュータの管理 ⇒ 記憶域)
diskpart.exe
PowerShellのVHDコマンド

「ディスクの管理」はGUIツール、「diskpart.exe」はコマンドラインツールだ。「ディスクの管理は理解しやすい反面、VHDファイル1つごとに作業を繰り返す必要がある。テスト的にVHDファイルを作ってみるといった場合にはメリットがあるが、同じ、あるいは異なる設定のVHDファイルを複数作成するのには向いていない。

「diskpart.exe」は、コマンドラインから起動するが、適用するdiskpartコマンドを記述したテキストファイルを使ったスクリプト実行が可能になっている。
このため、同じ設定のVHDファイルを複数作成することも難しくない。ただし、diskpartスクリプトには、条件判断を入れられないため、単純なVHDファイル作成作業しか行えない。

PowerShellのコマンドを使う方法は、ワンライナーやスクリプト化が可能で、条件判断などを使った動的なスクリプトも作成が可能だ。ただし、PowerShellからVHDファイル関連の機能を使うには、Windowsで、Hyper-Vが有効になっている必要がある。これには、「コントロールパネル ⇒ プログラムと機能 ⇒ Windowsの機能の有効化または無効化」を使い、「Hyper-V」にチェックマークをつけて、「Hyper-V管理ツール ⇒ Windows PowerShell用Hyper-Vモジュール」有効化する必要がある(要再起動)。

VHDファイル関連のコマンドは、「Get-Command -Noun "VHD*"」で表示できる。使い方は表示されたコマンド名をインターネット検索するか、helpコマンドで調べる。ただし、Windows PowerShellでVHD関連のコマンドのヘルプを表示させるには、管理者権限でupdate-helpコマンドを実行する必要がある。PowerShell 7.xの場合には、もともと簡易なヘルプのみなので、コマンド名でインターネット検索を行い、Microsoftの該当ページを探す。

基本的には、New-VHDコマンドで、作成するVHDファイルの拡張子を.vhdxとしてVHDファイルを作成する。その後、Mount-VHDで作成した.vhdxファイルをマウントする。以後は、物理ハードディスクの初期化と同じ。
Initialize-Diskで、パーティションテーブルを作成(基本はGPT形式)、New-Partitionでパーティションを作成、Format-Volumeでフォーマットを行う。前記のディスクの管理やdiskpart.exeを使うこともできる。

今回のタイトルネタは、谷甲州の「仮想巡洋艦バシリスク」(早川書房 航空宇宙軍史・完全版四、2017年)である。作中「仮想巡洋艦」とは、輸送船など民間の宇宙船を改良して兵装などを行ったもの。同作は、航空宇宙軍史の一応の結末となる「終わりなき索敵」(早川書房 航空宇宙軍史・完全版五、2017年)につながる作品。
編集部おすすめ