ディスク容量不足が発生して、ファイルの削除もできない状況の場合、Windows2000以降の場合、条件が整っていればOSが起動している状態でパーティションを拡張できます。
条件
・Windows2000以降のNT系OSであること。
・拡張したい領域がNTFSでフォーマットされていること。
・拡張したい領域がシステム・ブート領域でないこと。
また、ページファイルが該当領域にあっても以下のようなエラーとなる場合があります。
DiskPart はボリュームを拡張できませんでした。
拡張するのに有効なボリュームかどうか確認してください。
実際の拡張は以下のとおりです。
・ダイナミックディスク上のシンプルボリュームの場合、
システム上の任意のダイナミックディスクに空き領域があること
この場合、コンピュータの管理->ディスクの管理のGUI上でボリュームの拡張ができます。
拡張するための空きボリュームを指定します。
拡張されていることを確認
(ただし、Windows2000/XPではベーシックディスク上で最初に作成されたボリュームを後でダイナミックディスクに変換した場合は、拡張できないようです。Windows2003以降ではその制限はないようです)
・ベーシックボリュームの拡張の場合、
拡張したい領域(パーティーション)の直後に空き領域があり、
Windows2003以前ではDiskPartコマンドが使用できることが必要となります。
(Windows2000は別途インストールが必要)
(Windows 2003/XP以降は標準インストール)
(Windows2008/Vista以降はダイナミックディスクと同様にGUIで拡張可能)
Diskpart.exeでの拡張の流れは、以下のとおりです。
ベーシックディスクで、拡張したいボリューム(F:)の後ろに空き領域があることを確認。
list volume ボリューム名の確認
select volume 3 拡張するボリューム名を指定
extend 拡張
拡張されていることを確認します。
なお、もしこの作業でパーティションが拡張されていても、ファイルシステムとしては拡張されず、容量が不一致となる場合があるようです。
この場合は、先ほどと同様に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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
#PowerCLIスナップイン組み込み Add-PSSnapin VMware.VimAutomation.Core $VC_HOST = "192.168.0.10" $VC_USER = "loginUser" $VC_PASSWORD = "loginPassword" $vm = "CBT-Resetting-VM-NAME" Connect-VIServer -User $VC_USER -Password $VC_PASSWORD -Server $VC_HOST $vmtest = Get-vm $vm| get-view $vmConfigSpec = New-Object VMware.Vim.VirtualMachineConfigSpec #disable ctk $vmConfigSpec.changeTrackingEnabled = $false $vmtest.reconfigVM($vmConfigSpec) $snap=New-Snapshot $vm -Name "Disable CBT" $snap | Remove-Snapshot -confirm:$false # enable ctk $vmConfigSpec.changeTrackingEnabled = $true $vmtest.reconfigVM($vmConfigSpec) $snap=New-Snapshot $vm -Name "Enable CBT" $snap | Remove-Snapshot -confirm:$false Disconnect-VIServer -Server $VC_HOST -Confirm:$False |
コレについては、すでに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)