生成AIによる自動生成記事に関する免責事項
本記事は Microsoft Learn などの公式ドキュメントおよび一般的な Windows 管理技術に基づき、生成AIによって構成された解説記事である。
DiskPart は破壊的操作を含むため、実行時は必ず公式ドキュメントを参照し、十分なバックアップを確保した上で行うこと。
1. 序論:GUIによるディスク管理の限界とCLIの必要性
Windows におけるストレージ管理は、通常「ディスクの管理」(diskmgmt.msc)を通じて行われる。しかし GUI ツールは誤操作防止の観点から保護機構が多く、システムパーティションや破損したファイルシステムに対する操作には制限がある。
特に OS が起動しない障害時や Windows Preinstallation Environment(WinPE)では GUI が利用できないため、CLI ベースの管理ツールが不可欠となる。
DiskPart(diskpart.exe) は Windows 2000 以来利用されているコマンドラインのディスク管理ユーティリティであり、管理者権限下でディスク・パーティション・ボリュームを直接操作できる。
歴史的には Virtual Disk Service(VDS)と連携して動作してきたが、Windows 8 / Windows Server 2012 以降では Storage Management API への移行が進んでおり、内部実装は OS 世代に依存する。
2. アーキテクチャと操作パラダイム
DiskPart は単発コマンドではなく、対話型インタプリタとして動作し、内部に「現在の選択状態(フォーカス)」を保持する。
2.1 オブジェクト階層モデル
DiskPart が扱うストレージ資源は、概ね以下の階層で抽象化される。
- Disk:物理ディスク(HDD / SSD / USB 等)
- Partition:ディスク上の論理区画(MBR / GPT エントリ)
- Volume:ファイルシステムを持つ論理ボリューム(ドライブ文字割当対象)
2.2 フォーカスベースの操作モデル
DiskPart の最大の特徴は 「選択してから操作する」 ステートフルな設計にある。
Select Context → Operation
DISKPART> select disk 0
DISKPART> select partition 1
DISKPART> delete partition
この設計はスクリプト記述の可読性を高める一方、 現在のフォーカスを誤認すると 即座に破壊的操作が実行される というリスクを伴う。
3. 主要コマンドの挙動と注意点
3.1 clean / clean all による初期化
clean パーティションテーブル(MBR または GPT)やボリューム情報など、 ディスク構成に関わるメタデータを削除する。 データ領域自体は上書きされないため、理論上は復旧可能性が残る。
clean all ディスク全セクタに対してゼロ書き込みを行う完全消去操作。 HDD では不良セクタ再割当を誘発する場合があり、SSD では書き込み寿命に影響を与える可能性がある。
GUI では削除できない回復パーティションや、異種 OS 由来の構成を一掃する際に用いられるが、不可逆性が極めて高い。
3.2 assign によるマウントポイント操作
EFI システムパーティション(ESP)や回復パーティションは、通常ドライブ文字が割り当てられていない。
DiskPart の assign コマンドを用いることで、これらのボリュームにも一時的にドライブ文字を割り当てられる。
assign letter=S
これにより BCD ストアやブートファイルに対するファイルレベル操作が可能となる。
3.3 attributes による属性操作
attributes disk clear readonly
このコマンドは DiskPart が管理するディスク属性(ソフトウェア的な Read-only フラグ)を解除する。
注意 物理スイッチやファームウェア、コントローラ由来の書き込み禁止状態には効果がない場合がある。
4. WinPE 環境における運用
WinPE 環境ではドライブ文字割当が通常と異なるため、DiskPart による確認が必須となる。
Shift + F10
diskpart
5. ケーススタディ:EFI パーティション削除後の復旧
5.1 状況
- GPT / UEFI 環境
- EFI システムパーティション(ESP)を誤って削除
- Windows データパーティションは無事
5.2 領域の確保(Shrink)
重要
shrinkコマンドは Partition ではなく Volume を選択して実行する。
DISKPART> list volume
DISKPART> select volume 0
DISKPART> shrink desired=200
移動不可能なシステムファイルが存在する場合、指定サイズまで縮小できないことがある。
5.3 EFI システムパーティションの再作成
前提
create partition efiは GPT ディスクかつ UEFI 環境 が前提である。
DISKPART> create partition efi size=100
DISKPART> format quick fs=fat32 label="System"
DISKPART> assign letter=S
5.4 ブートファイルの再構築
bcdboot D:\Windows /l ja-jp /s S: /f UEFI
6. 結論
DiskPart は、OS 非起動状態や回復環境において依然として重要な基盤ツールである。
一方、通常運用では PowerShell の Storage モジュールや新しい管理 API への移行が進んでおり、 DiskPart は 「最後の外科器具」 として位置付けるのが現代的である。
参考文献
- Microsoft Learn, “DiskPart commands”
- Microsoft Learn, “BCDBOOT Command-Line Options”
- Microsoft Support, “How to use DiskPart to clean a disk”
付録A:Disk / Partition / Volume の関係(論理構造図)
+---------------------------------------------------+
| Physical Disk |
| (Disk 0 / Disk 1) |
+------------------------+--------------------------+
| Partition 1 | Partition 2 |
| (EFI / MSR / etc.) | (Primary / Data) |
+------------------------+--------------------------+
| Volume | Volume |
| FAT32 / NTFS | NTFS / ReFS |
| (S:) | (C:, D:) |
+------------------------+--------------------------+
用語整理(重要)
| 概念 | 説明 |
|---|---|
| Disk | 物理デバイス単位(HDD / SSD / NVMe / USB) |
| Partition | ディスク上の論理区画(GPT / MBR エントリ) |
| Volume | ファイルシステムを持ち、OSからマウントされる単位 |
注意
Partition ≠ Volume
DiskPart では操作対象によって 使用可能コマンドが異なる
delete partition→ Partitionshrink→ Volume
この混同が DiskPart 誤操作の最大要因である。
付録B:MBR と UEFI(GPT)の比較
| 項目 | MBR(Legacy BIOS) | GPT(UEFI) |
|---|---|---|
| 最大ディスク容量 | 約2TB | 理論上9.4ZB |
| パーティション数 | 最大4(拡張含む) | 通常128 |
| ブート方式 | BIOS | UEFI |
| EFIシステムパーティション | 不要 | 必須(FAT32) |
| 冗長性 | なし | GPTヘッダが前後に存在 |
| 障害耐性 | 低 | 高 |
DiskPart での create partition efi | 不可 | 可 |
| 近代OSとの親和性 | 低 | 高 |
実務的結論
- Windows 10/11 + 新規環境 → GPT/UEFI 一択
- MBR は レガシー互換・旧機器用途のみ
付録C:DiskPart と PowerShell の役割分担
設計思想の違い
| 観点 | DiskPart | PowerShell Storage |
|---|---|---|
| 実行環境 | WinPE / 非起動 | 通常OS |
| 操作モデル | 状態遷移・即時実行 | オブジェクト指向 |
| 誤操作耐性 | 低 | 高 |
| スクリプト安全性 | 低 | 高 |
| ログ・検証 | 弱い | 強い |
原則
- 通常運用:PowerShell
- OS 非起動・最終手段:DiskPart
付録D:DiskPart ⇔ PowerShell 等価操作一覧
ディスク一覧
DiskPart
list disk
PowerShell
Get-Disk
ボリューム一覧
DiskPart
list volume
PowerShell
Get-Volume
パーティション作成(GPT)
DiskPart
create partition primary size=102400
PowerShell
New-Partition -DiskNumber 0 -Size 100GB
EFI システムパーティション作成
DiskPart
create partition efi size=100
format quick fs=fat32
PowerShell
New-Partition -DiskNumber 0 -Size 100MB -GptType "{C12A7328-F81F-11D2-BA4B-00A0C93EC93B}"
Format-Volume -FileSystem FAT32
ドライブ文字割り当て
DiskPart
assign letter=S
PowerShell
Set-Partition -DriveLetter S
ReadOnly 属性解除
DiskPart
attributes disk clear readonly
PowerShell
Set-Disk -Number 0 -IsReadOnly $false
パーティション削除(⚠危険)
DiskPart
delete partition override
PowerShell
Remove-Partition -DiskNumber 0 -PartitionNumber 1
補足E:PowerShellでは代替できない領域
以下は DiskPart が今も必要な理由:
- WinPE / OS 非起動状態
- BCD 再構築前の EFI 作成
- RAW ディスクの初期化
- GUI / PS がロード不能な障害時
DiskPart は 「安全ではないが、確実に切れるメス」 PowerShell は 「滅菌された手術室」
