Windowsのパーティーション拡張まとめ

ディスク容量不足が発生して、ファイルの削除もできない状況の場合、Windows2000以降の場合、条件が整っていればOSが起動している状態でパーティションを拡張できます。

条件

・Windows2000以降のNT系OSであること。

・拡張したい領域がNTFSでフォーマットされていること。

・拡張したい領域がシステム・ブート領域でないこと。
また、ページファイルが該当領域にあっても以下のようなエラーとなる場合があります。

DiskPart はボリュームを拡張できませんでした。
拡張するのに有効なボリュームかどうか確認してください。

 

実際の拡張は以下のとおりです。

・ダイナミックディスク上のシンプルボリュームの場合、
システム上の任意のダイナミックディスクに空き領域があること

この場合、コンピュータの管理->ディスクの管理のGUI上でボリュームの拡張ができます。

Diskext-Dynamic1

拡張するための空きボリュームを指定します。

Diskext-Dynamic2

拡張されていることを確認

Diskext-Dynamic3

(ただし、Windows2000/XPではベーシックディスク上で最初に作成されたボリュームを後でダイナミックディスクに変換した場合は、拡張できないようです。Windows2003以降ではその制限はないようです)
Diskext1

 

・ベーシックボリュームの拡張の場合、
拡張したい領域(パーティーション)の直後に空き領域があり、
Windows2003以前ではDiskPartコマンドが使用できることが必要となります。

(Windows2000は別途インストールが必要)
(Windows 2003/XP以降は標準インストール)
(Windows2008/Vista以降はダイナミックディスクと同様にGUIで拡張可能)

Diskpart.exeでの拡張の流れは、以下のとおりです。

ベーシックディスクで、拡張したいボリューム(F:)の後ろに空き領域があることを確認。

Diskext-Basic1

list volume            ボリューム名の確認
select volume 3    拡張するボリューム名を指定
extend                    拡張

Diskext-Basic2

拡張されていることを確認します。

Diskext-Basic3

なお、もしこの作業でパーティションが拡張されていても、ファイルシステムとしては拡張されず、容量が不一致となる場合があるようです。

この場合は、先ほどと同様にSelectでボリュームを指定後に、extend filesystemと入力するとずれが治るようです。

list volume                                ボリューム名の確認
select volume 3                       拡張するボリューム名を指定
extend filesystem                   拡張

 

 

OS別ベーシックディスクでの拡張方法(補足)

Windows 2000

標準ではDiskPart.exeコマンドがインストールされていません。

以下のWindows200用リソースキットのダウンロードページからであれば、まだWindows2000用のDiskpart.exeをダウンロードできます。
https://support.microsoft.com/ja-jp/kb/927229

インストール後はOS再起動は必要ありませんが、
インストール先は、C:\Program Files\Resource Kit\となりますので、パスを通すか、
直接実行しましょう。

Windows2003/XP

標準でDiskpart.exeコマンドがインストールされています。
コマンドラインで拡張が可能です。

Windows2008/Vista以降

標準でDiskpart.exeコマンドでのコマンドラインでの拡張もできますが、
ベーシックボリュームでもディスクの管理からボリュームの拡張を行うことがGUI上で可能です。

上記以外のOS

パーティション変更のためのCD-BOOTタイプのソフトである、「gparted」が使えます。
データを保存したままでパーティーションサイズの変更に便利なソフトウェアとなります。

ISOが以下のサイトからダウンロードできるので、そこからブートします(ESXi上の仮想マシンでもそのまま使用可能です)。
http://sourceforge.jp/projects/gparted/releases/

 

ESXiやHyper-Vでの仮想環境上では、Diskの容量拡張が簡単にできるので、ボリュームごとに仮想ディスクを分けておくと、ベーシックボリュームの容量拡張が簡単になるのでお勧めです。

 

また、補足として、ESXiの仮想環境でCBT(Change Block Tracking)を利用して差分バックアップをしている場合、ボリューム拡張時に128GB境界および128GBの2の累乗境界(256GB,512GB,1024GB等)を越えて拡張する場合には、CBTでの変更ブロック取得に問題が発生するそうです。(例:vDiskの125GB->130GBへの拡張等)
このため、上記のような拡張を行った場合は、CBTを完全に初期化する必要がありますので、注意してください。

CBTの完全初期化は以下のようなPowerShellスクリプト(Power-CLI)からも実行できます。

CBT-Reset.ps1

コレについては、すでにESXiへのパッチが出ているので、気になる方はパッチを当てましょう(ESXi 4.xについては、パッチは出ていません。)

  • ESXi 5.0, Patch Release ESXi500-201412001
  • ESXi 5.1 Update 3
  • ESXi 5.5, Patch Release ESXi550-201501001

 

参考URL:

Windows Server 2003、Windows XP、および Windows 2000 で Diskpart.exe を使用してデータ ボリュームを拡張する方法

QueryChangedDiskAreas API returns incorrect sectors after extending virtual machine VMDK file with Changed Block Tracking (CBT) enabled (2090639)