はじめに
Windows Serverを運用していると、ログやアプリケーションのデータなどが増えて、Cドライブの空き容量が少なくなることがあります。
VMware ESXi上で動作しているWindows仮想マシンであれば、仮想ディスク(VMDK)の容量を増やすことで対応できます。
ただし、ESXi側で仮想ディスクの容量を増やしただけでは、WindowsのCドライブ容量は増えません。
基本的には、
- ESXi(vSphere)側で仮想ディスクを拡張する
- Windows側で追加された領域を認識させる
- Cドライブのボリュームを拡張する
という流れで作業します。
また、Windowsのパーティション構成によっては、Cドライブと追加した未割り当て領域の間に回復パーティションが存在し、「ボリュームの拡張」ができないことがあります。
この記事では、ESXi上のWindows仮想マシンでCドライブを拡張する基本的な手順に加えて、回復パーティションが間にある場合の対処方法についても紹介します。
Cドライブ拡張の流れ
例として、100GBのCドライブへ50GBを追加し、150GBへ拡張するとします。
拡張前
仮想ディスク:100GB
┌─────────────────────┐
│ Cドライブ 100GB │
└─────────────────────┘
まずESXi側で仮想ディスクを100GBから150GBへ拡張します。
ESXi側でVMDKを拡張した直後
仮想ディスク:150GB
┌───────────────┬─────────────┐
│ Cドライブ 100GB │ 未割り当て 50GB │
└───────────────┴─────────────┘
この時点では仮想ディスク自体は150GBになっていますが、WindowsのCドライブはまだ100GBです。
Windows側で未割り当て領域をCドライブへ追加します。
拡張完了後
仮想ディスク:150GB
┌─────────────────────┐
│ Cドライブ 150GB │
└─────────────────────┘
作業前に確認しておくこと
ディスク容量の変更はサーバーのデータに関わる作業なので、実施前にいくつか確認しておきます。
バックアップを確認する
万が一に備えて、対象仮想マシンのバックアップが正常に取得できていることを確認します。
特に後述する回復パーティションの操作を行う場合はパーティションの削除を伴うため、バックアップや復旧方法を確認してから作業します。
業務環境の場合は、所属している組織の作業手順やバックアップ方針に従ってください。
対象の仮想ディスクを確認する
仮想マシンに複数の仮想ディスクが接続されている場合、
- ハードディスク1
- ハードディスク2
- ハードディスク3
など複数のディスクが表示されます。
Windows側のディスク容量とvSphere側の仮想ディスク容量を照合し、Cドライブが存在している仮想ディスクを確認しておきます。
データストアの空き容量を確認する
仮想ディスクを拡張する前に、VMDKが保存されているデータストアの空き容量も確認します。
仮想ディスクは容量を増やしたあとに簡単に元のサイズへ戻せるものではないため、追加する容量を間違えないよう注意します。
スナップショットを確認する
対象仮想マシンにスナップショットが存在すると、仮想ディスクの容量を変更できない場合があります。
「設定の編集」でディスク容量がグレーアウトして変更できない場合は、スナップショットの有無を確認します。
スナップショットが存在する場合は、環境の運用ルールに従って削除または統合してから作業します。
ESXi側で仮想ディスクを拡張する
まず、ESXi側で仮想ディスク(VMDK)の容量を増やします。
1.vSphere Clientへログインする
ブラウザからvSphere Clientへログインします。
ログインしたら、Cドライブを拡張するWindows仮想マシンを選択します。
2.「設定の編集」を開く
対象となる仮想マシンの「設定の編集」を開きます。
CPU、メモリ、ハードディスク、ネットワークアダプタなど、仮想マシンに設定されている仮想ハードウェアが表示されます。
3.対象の仮想ディスクを確認する
「仮想ハードウェア」から、Cドライブが存在しているハードディスクを確認します。
例えばCドライブが「ハードディスク1」に存在している場合は、ハードディスク1の容量を変更します。
複数の仮想ディスクが接続されている場合は、対象を間違えないよう十分確認します。
4.仮想ディスクの容量を変更する
対象となるハードディスクの容量を増やします。
今回の例では、
100GB → 150GB
へ変更します。
容量を入力したら設定を保存します。
これでESXi側の仮想ディスク拡張は完了です。
ただし、この時点ではWindowsのCドライブはまだ100GBのままです。
続いてWindows側でボリュームを拡張します。
Windows側でCドライブを拡張する
1.「ディスクの管理」を開く
対象のWindows仮想マシンへログインします。
スタートボタンを右クリックして「ディスクの管理」を開きます。
Windows Serverの場合は、
「コンピューターの管理」→「記憶域」→「ディスクの管理」
から開くこともできます。
2.追加された未割り当て領域を確認する
「ディスクの管理」を確認すると、ESXi側で追加した容量が「未割り当て」として表示されます。
┌───────────────┬─────────────┐
│ Cドライブ 100GB │ 未割り当て 50GB │
└───────────────┴─────────────┘
追加した領域が表示されない場合は、「ディスクの管理」の「操作」からディスクの再スキャンを実行します。
3.「ボリュームの拡張」を選択する
Cドライブを右クリックして、
「ボリュームの拡張」
を選択します。
「ボリュームの拡張ウィザード」が表示されたら「次へ」をクリックします。
4.追加する容量を指定する
追加した50GBをすべてCドライブへ割り当てる場合は、基本的に表示されている最大容量を指定します。
内容を確認して「次へ」をクリックし、最後に「完了」をクリックします。
5.Cドライブの容量を確認する
「ディスクの管理」またはエクスプローラーを開いて、Cドライブの容量を確認します。
100GB → 150GB
となっていれば作業完了です。
「ボリュームの拡張」がグレーアウトする場合
Cドライブを右クリックしても「ボリュームの拡張」がグレーアウトして選択できない場合があります。
よくある原因の一つが、Cドライブと未割り当て領域の間に回復パーティションが存在しているケースです。
┌──────────────┬─────────────┬─────────────┐
│ Cドライブ100GB │ 回復パーティション │ 未割り当て50GB │
└──────────────┴─────────────┴─────────────┘
↑
Cドライブと隣接していない
Windows標準の「ディスクの管理」で基本ボリュームを拡張するには、未割り当て領域が拡張対象のボリュームの直後にあり、同じディスク上に存在している必要があります。
そのため、回復パーティションが間に存在すると、そのままではCドライブを拡張できません。
この場合は、
Windows REを無効化
↓
回復パーティションを削除
↓
Cドライブを拡張
↓
回復パーティションを再作成
↓
Windows REを再度有効化
という方法で対応できます。
注意
ここからの作業ではパーティションを削除します。
誤ったパーティションを削除するとWindowsが正常に起動できなくなる可能性があります。
必ずバックアップや復旧方法を確認し、業務環境では組織の作業手順に従って実施してください。
回復パーティションがある場合の対処方法
1.Windows REの状態を確認する
管理者権限でコマンドプロンプトを起動して、次のコマンドを実行します。
reagentc /info
Windows Recovery Environment(Windows RE)の状態や場所が表示されます。
作業前の状態を記録しておきます。
2.Windows REを無効化する
Windows REを一時的に無効化します。
reagentc /disable
続いて、
reagentc /info
を実行して、Windows REが無効になっていることを確認します。
3.DiskPartで回復パーティションを確認する
DiskPartを起動します。
diskpart
ディスク一覧を表示します。
list disk
OSが存在するディスクを選択します。
例えばDisk 0の場合は、
select disk 0
と入力します。
続いて、
list partition
を実行します。
Cドライブと未割り当て領域の間に存在している回復パーティションを確認します。
重要
Disk 0やPartition 4といった番号は環境によって異なります。
EFIシステムパーティションやOSパーティションを誤って削除すると、Windowsが起動できなくなる可能性があります。
番号だけで判断せず、容量や種類、「ディスクの管理」の表示なども確認して対象を特定してください。
4.回復パーティションを削除する
例えば回復パーティションが「Partition 4」だった場合は、
select partition 4
と入力します。
続いて、
detail partition
を実行し、選択しているパーティションを再度確認します。
問題がなければ、
delete partition override
を実行します。
削除後は、
exit
でDiskPartを終了します。
これで、
┌───────────────┬──────────────────┐
│ Cドライブ 100GB │ 未割り当て領域 │
└───────────────┴──────────────────┘
となり、Cドライブと未割り当て領域が隣接します。
Cドライブを拡張する
「ディスクの管理」を開き、Cドライブを右クリックして「ボリュームの拡張」を実行します。
ただし、あとで回復パーティションを再作成するため、未割り当て領域のすべてをCドライブへ割り当てないよう注意します。
回復パーティションとして使用する容量をディスクの末尾に残してCドライブを拡張します。
┌────────────────────┬─────────────┐
│ Cドライブ(拡張済み) │ 未割り当て領域 │
└────────────────────┴─────────────┘
↑
回復領域として使用
回復パーティションを再作成する
残しておいた未割り当て領域へ回復パーティションを作成します。
再度DiskPartを起動します。
diskpart
OSディスクを確認して選択します。
list disk
select disk 0
list diskのGPT列に「*」が表示されている場合はGPTディスクです。
GPTの場合
未割り当て領域に新しいパーティションを作成します。
create partition primary
NTFSでフォーマットします。
format quick fs=ntfs label="Windows RE tools"
回復パーティション用のIDを設定します。
set id=de94bba4-06d1-4d40-a16a-bfd50179d6ac
続いてGPT属性を設定します。
gpt attributes=0x8000000000000001
MBRの場合
MBRディスクの場合は、次のようにパーティションを作成します。
create partition primary
format quick fs=ntfs label="Windows RE tools"
set id=27
Windowsのバージョンや環境によってパーティション構成が異なる可能性があるため、実際に作業する際はMicrosoftの公式情報も確認してください。
Windows REを再度有効化する
回復パーティションを作成したら、
exit
でDiskPartを終了します。
Windows REを有効化します。
reagentc /enable
最後に、
reagentc /info
を実行します。
Windows REの状態が「Enabled」になっていることを確認します。
最終的に、
┌────────────────────┬────────────────┐
│ Cドライブ(拡張済み) │ 回復パーティション │
└────────────────────┴────────────────┘
となれば完了です。
回復パーティションは削除したままにしない方が安心
Cドライブを拡張することだけを考えれば、回復パーティションを削除した状態でもWindows自体は動作する場合があります。
しかし、回復パーティションはWindows Recovery Environment(Windows RE)で使用され、Windowsが正常に起動しない場合などのトラブルシューティングに利用されます。
そのため、特に業務で利用するWindows Serverであれば、
回復パーティションを削除
↓
Cドライブを拡張
↓
回復パーティションを再作成
↓
Windows REの状態を確認
までを一連の作業として考えた方が安心です。
作業時の注意点
今回の作業では、特に次の点を確認しておきましょう。
- 対象の仮想マシンを間違えない
- Cドライブが存在する仮想ディスクを確認する
- データストアの空き容量を確認する
- スナップショットの有無を確認する
- バックアップと復旧方法を確認する
- Windows側のパーティション構成を確認する
- 回復パーティションの削除対象を十分確認する
- 必要以上にVMDKを拡張しない
- 作業後にCドライブ容量を確認する
reagentc /infoでWindows REの状態を確認する
仮想ディスクの拡張自体は難しい操作ではありませんが、回復パーティションの操作まで必要になる場合は特に慎重に作業しましょう。
まとめ
今回は、ESXi上で動作しているWindows仮想マシンのCドライブを拡張する方法を紹介しました。
通常のパーティション構成であれば、
ESXiでVMDKを拡張
↓
Windowsで未割り当て領域を確認
↓
Cドライブの「ボリュームの拡張」
という流れで比較的簡単に容量を増やせます。
一方で、
| Cドライブ | 回復パーティション | 未割り当て領域 |
という構成の場合は、そのままではCドライブを拡張できません。
その場合はWindows REを一時的に無効化して回復パーティションを削除し、Cドライブを拡張したあとに回復パーティションを再作成する方法があります。
特に覚えておきたいのは、ESXi側で仮想ディスクの容量を増やしただけでは、WindowsのCドライブ容量は増えないという点です。
ESXi側のVMDK拡張と、Windows側のボリューム拡張の両方を行う必要があります。
手順自体はそれほど複雑ではありませんが、ディスクやパーティションに関わる操作なので、バックアップや復旧方法を確認してから慎重に作業することが重要です。
参考資料
今回の作業については、Broadcom(VMware)とMicrosoftの公式情報も参考になります。
Broadcom(VMware)
Increasing the disk size on a Virtual Machine
ESXi / vSphere上で仮想マシンの仮想ディスク(VMDK)を拡張するための公式KBです。
ESXi 6.5以降では、vSphere ClientまたはESXi Host Clientから対象VMの「Edit Settings」を開き、対象のHard Disk容量を増やす方法が案内されています。
また、VMDKを拡張してもゲストOS内部のパーティション容量は自動的には増えないため、ゲストOS側でもパーティションを拡張する必要があります。
Broadcom公式:Increasing the disk size on a Virtual Machine
Microsoft Learn
Windows および Windows Serverで基本ボリュームまたは動的ボリュームを拡張する
Windowsの「ディスクの管理」やPowerShellを使用してボリュームを拡張する公式手順です。
未割り当て領域は拡張対象ボリュームの直後にあり、同じディスク上に存在する必要があることも説明されています。
Microsoft Learn:基本ボリュームまたは動的ボリュームを拡張する
Microsoft サポート
KB5028997:WinRE更新プログラムをインストールするためにパーティションのサイズを手動で変更する手順
Windows REを無効化し、回復パーティションを操作したあとにWindows REを再度有効化する際に参考になるMicrosoft公式情報です。
reagentcやDiskPartを使用した回復パーティションの操作方法、GPT・MBRそれぞれのパーティション設定について説明されています。
Microsoft公式:KB5028997 WinREパーティションを手動でサイズ変更する手順
実際の環境によってESXiやWindows Serverのバージョン、仮想ディスク、パーティション構成などが異なるため、作業時は使用している環境に対応した最新の公式情報も確認してください。

コメント