3.

VHD / VHDX とは | Microsoft 仮想ハードディスク / Hyper-V

編集
この記事の要点
  • .vhd / .vhdxMicrosoft が策定した仮想ハードディスク形式。Hyper-V や Windows の標準仮想化スタックで使われる
  • VHD は 2003 年に Virtual PC / Virtual Server で導入され、最大 2 TB。VHDX は Windows 8 / Server 2012 で導入された後継で 最大 64 TB までサポート
  • 3 種類のサブ形式: 固定(Fixed)=最初から全容量確保、可変(Dynamic)=使った分だけ拡張、差分(Differencing)=親ディスクからの差分のみ記録
  • Windows 10 / 11 は .vhd / .vhdxOS 側で直接マウント できる(ディスクの管理 → 仮想ハードディスクの接続)
  • Windows Backup の標準保存形式、ハイパーバイザの仮想ディスク、VHDX ブート(OS を VHDX に入れて直接起動)など用途が広い
  • PowerShell の New-VHD / Mount-VHD / Convert-VHD、Hyper-V Manager、diskpart から操作可能
  • VHDX は 4 KB 物理セクタ対応ログによる電源断耐性動的サイズ変更など、VHD の弱点を解消した現代向けフォーマット

概要

VHD(Virtual Hard Disk、拡張子 .vhd)と VHDX(拡張子 .vhdx)は、Microsoft が策定した仮想ハードディスクのファイル形式 です。1 つの物理ファイルが、仮想マシンや Windows から見ると 1 台のハードディスクとして認識されます。仮想マシン(Hyper-V)の OS ディスクとしてはもちろん、ベアメタル Windows 上でも「ディスクの管理」から VHD/VHDX を仮想ドライブとしてマウントでき、エクスプローラから普通のドライブとして使えます。

VHD は 2003 年に Connectix / Microsoft Virtual PC で導入され、後に Hyper-V の標準形式となりました。仕様はオープン(Microsoft Open Specification Promise の対象)で、最大容量は 2 TB。シンプルな構造でツール対応が広い反面、近代的な要件には不足が出てきました。

VHDX は Windows 8 / Windows Server 2012 とともに 2012 年に登場した後継形式で、以下のような大幅な改良が加えられています。

  • 最大容量 2 TB → 64 TB に拡張
  • 4 KB 物理セクタ(4K ネイティブディスク) を正式サポート — 大容量 HDD・SSD と整合
  • ログ機構による電源断耐性 — メタデータ更新中のクラッシュでも整合性を維持
  • 動的なサイズ拡張・縮小(オンライン)
  • セクタサイズ・ブロックサイズの柔軟な設定
  • カスタムメタデータの埋め込み(ユーザー定義の名前付き情報)

現代の Hyper-V や Windows 仮想化スタックでは VHDX が標準 で、新規仮想マシンを作る際もデフォルトは VHDX です。VHD は古いツールとの互換性が必要な場合や、Azure の一部のシナリオ(後述)で使われ続けています。

3 つのサブ形式

形式挙動用途・特徴
固定(Fixed)作成時に最大容量分を確保。例: 100 GB を指定すると即座に 100 GB のファイルになる性能・連続性重視。本番サーバ・データベース VM。Azure VM の標準は VHD 固定
可変(Dynamic)使った分だけファイルが拡張。最初は数 MB、最大値まで自動成長ディスク節約。検証用 VM、開発環境。性能はやや劣る
差分(Differencing)「親ディスク」からの差分のみを保存。親は読み取り専用テンプレート展開、スナップショット代わり、トレーニングラボ

差分ディスクは VHDX のチェックポイント(スナップショット) の基礎技術でもあります。Hyper-V でチェックポイントを作るたびに、.avhdx(automatic VHDX)という差分ファイルが連鎖的に生成されます。

主な用途

  • Hyper-V 仮想マシンの仮想ディスク — Windows Server / Windows 11 Pro 以上の標準ハイパーバイザ
  • Windows Backup の保存先 — システムイメージバックアップは .vhdx で保存される
  • VHDX ブート(Boot to VHDX) — 物理 PC を VHDX 内の Windows で直接起動する。デュアルブート構成の代替として便利
  • WSL2 の仮想ディスク — Windows Subsystem for Linux 2 のディストリビューションは ext4.vhdx として保存される
  • Azure の VM ディスク — Azure の Managed Disks の内部は VHD ベース
  • ポータブル仮想環境 — VHD/VHDX を USB に入れて持ち運び、別 PC でマウントして使う
  • テストラボ・トレーニング — 差分ディスクで「親 = クリーンインストール」「子 = 学生ごとの作業領域」というラボ構成

関連形式との比較

形式主な使い手最大容量特徴
VHDHyper-V / Azure / Virtual PC2 TBシンプル、互換性高い、古い
VHDXHyper-V(推奨)64 TB4K セクタ、電源断耐性、現代向け
VMDKVMware / VirtualBox62 TB(条件付き)分割・スナップショット・記述子ファイル
QCOW2QEMU / KVM(8 EiB 理論)差分、暗号化、内部圧縮
raw / IMG共通(QEMU 等)無制限無構造、ツール非依存

VHD/VHDX は Windows 環境では事実上の標準。VMware を併用する環境では VMDK との相互変換が必要になることがあり、qemu-img convert や StarWind V2V Converter 等で変換します。

コマンド・ツール

PowerShell(要 Hyper-V モジュール):

# 100 GB の可変 VHDX を作成
New-VHD -Path C:\VMs\Disk.vhdx -SizeBytes 100GB -Dynamic

# 既存 VHDX をマウント(読み書き)
Mount-VHD -Path C:\VMs\Disk.vhdx

# アンマウント
Dismount-VHD -Path C:\VMs\Disk.vhdx

# VHD → VHDX に変換
Convert-VHD -Path C:\old.vhd -DestinationPath C:\new.vhdx -VHDType Dynamic

# サイズ拡張(200 GB に)
Resize-VHD -Path C:\VMs\Disk.vhdx -SizeBytes 200GB

diskpart(古典的):

diskpart
create vdisk file="C:\Disk.vhdx" maximum=51200 type=expandable
attach vdisk

Linux からの操作(qemu-img が VHD/VHDX をサポート):

# 情報表示
qemu-img info disk.vhdx

# VHDX → QCOW2 に変換
qemu-img convert -p -O qcow2 disk.vhdx disk.qcow2

注意点

  • Azure VM の標準は今でも VHD 固定形式。VHDX をアップロードしても自動変換されない場合があり、事前に Convert-VHD で VHD 固定に変換しておく必要がある
  • 差分ディスクは 親ディスクの変更で全て無効化される。親はマウントしても変更しない運用ルールが必須
  • 固定ディスクは作成時間が長い(100 GB なら数分〜)。本番性能を優先するなら固定、容量節約なら可変を選ぶ
  • VHDX のチェックポイント(.avhdx)は溜まると性能が劣化する。本番では適切にマージ・削除する
  • Windows 10 / 11 Home エディションは Hyper-V 非対応のため VHDX 作成・マウントは「ディスクの管理」経由のみとなる
  • BitLocker で暗号化したい場合は VHDX 内の OS を暗号化する。VHDX ファイル自体を BitLocker ボリュームに置く方法もある

関連リンク

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. ISO(.iso)
  2. IMG(.img)
  3. VHD / VHDX(.vhd / .vhdx)
  4. QCOW2(.qcow2)
  5. OVA / OVF(.ova / .ovf)
  6. PEM(.pem)
  7. CRT / CER / DER(.crt / .cer / .der)
  8. PFX / P12(.pfx / .p12)
  9. PCAP / PCAPNG(.pcap / .pcapng)
  10. DMP / コアダンプ(.dmp / .core)

最近更新/作成されたページ