Windowsの標準機能だけで、クローンしたSSDのCドライブ パーティションサイズを無料で拡張する方法

アプリケーション

手元にPCIe Gen4対応のEXCERIA PRO 1TB SSDが余っていたので、AIサーバーのSSDを交換することにしました。AIサーバーで使用していたのはSamsungのPCIe Gen3対応の960EVO 500GBですので、容量・速度とも速くなります。
クローン方法は裸族のどれで~もステーション&クローンを使用し、Windows 11がインストールされている500GB SSDを、1TB SSDへセクタ単位でクローンしました。

PC不要、ボタン1つでHDD&SSDからNVMe M.2 SSDへのクローンが可能な「裸族のどれで~もステーション&クローン」
仕事で使っているPCのCドライブには、WesternDigitalのSN850 1TBを使用していたのですが、容量が残りわずかという状態になったので、2TBのSSDに乗り換えることに。SSD自体はいろいろ迷ったものの、とりあえずSamsun…

クローン自体は問題なく完了し、1TB SSDからWindowsも正常に起動しました。ただ、これだけで作業は完了ではなく、SSDの容量が増えた分、パーティションサイズを変更する必要があります。
普通ならCドライブを右クリックして「ボリュームの拡張」を実行すれば終わりなのですが、今回はCドライブと未割り当て領域の間にWindowsの「回復パーティション」が存在していました。
そのため、Windows標準の「ディスクの管理」からはCドライブを拡張できません。

今回は有料パーティションソフトやUSBブート環境を使わず、Windows 11の標準コマンドだけで回復パーティションを再構成し、1TB SSDのほぼ全容量をCドライブとして利用できるようにしました。

今回の環境

今回使用したSSDは以下です。

  • OS:Windows 11
  • 移行元SSD:Samsung 960EVO 500GB
  • 移行先SSD:EXCERIA PRO 1TB
  • 移行方法:裸族のどれで~もステーション&クローンでクローン
  • パーティション形式:GPT
  • BitLocker:未使用

クローン直後の構成は次のようになっていました。

[ EFI 200MB ]
[ C: 約464.77GB ]
[ 回復パーティション 約796MB ]
[ 未割り当て 約465.75GB ]

問題なのは、Cドライブと未割り当ての間に、回復パーティションが存在することです。
Windowsの「ボリュームの拡張」は、対象パーティションの直後に未割り当て領域が存在する場合にしか使用できません。

つまり、

[C:][未割り当て]

なら拡張できますが、

[C:][回復パーティション][未割り当て]

では拡張できません。
そこで、今回は間にある回復パーティションパーティションを一度削除し、

  1. Cドライブを拡張
  2. Cドライブ末尾を少し縮小
  3. 回復パーティションを作り直す

という方法で解決しました。

回復パーティションは必要か?

回復パーティションを削除しても、Windowsは問題無く起動します。

回復パーティションを削除した場合のデメリットは、Windows RE(Windows Recovery Environment)が使えなくなることです。Windows REには「スタートアップ修復」「システムの復元」「更新プログラムのアンインストール」「コマンドプロンプト」「このPCを初期状態に戻す」などの回復機能が含まれています。

特に困るのは、Windowsが起動しなくなったとき。正常な構成なら起動失敗を検出してWinREが自動起動し、スタートアップ修復などを試せますが、WinREが存在しないとそのローカル回復環境に入れません。スタートアップ修復自体もWinRE上で動作します。
いざという時を考えると、回復パーティションは残しておくことを強くお勧めします。

作業前の注意

パーティションを削除・変更する作業なので、操作を誤るとWindowsが起動しなくなる可能性があります。特に、EFI System Partition、MSR、Cドライブを誤って削除しないよう注意が必要です。

今回は元の500GB SSDをセクタ単位でクローンした直後だったため、元SSDをそのままバックアップとして残した状態で作業しました。
可能であれば、移行元SSDは作業完了と正常起動を確認するまで消去しないことを強くおすすめします。

作業手順

【ご注意】
ここで提示している方法は、私の環境での操作となります。ドライブのパーティション状況によってコマンドが異なりますので、ご注意ください。実際に作業するには、ご自身のドライブの状況を、ディスクの管理ユーティリティのスクリーンショットやPowerShellのログをAIに入力し、指示を仰ぐのが良いかと思います。

まず現在のパーティション構成を確認する

管理者権限でPowerShellまたはWindows Terminalを起動します。
まずディスク0の情報を確認します。

PowerShell
Get-Disk 0 | Format-List Number,FriendlyName,PartitionStyle,Size

今回の環境では次のようになりました。

Number         : 0
FriendlyName   : KIOXIA-EXCERIA PRO SSD
PartitionStyle : GPT
Size           : 1000204886016

1TB SSDが「Disk 0」で、パーティション形式がGPTであることが分かります。

続いてパーティションを確認します。

PowerShell
Get-Partition -DiskNumber 0 |
    Format-Table PartitionNumber,DriveLetter,Type,Size,Offset -AutoSize

今回の結果です。

PartitionNumber DriveLetter Type             Size
--------------- ----------- ----             ----
1                           System        200MB
2                           Reserved       16MB
3               C           Basic       約465GB
4                           Recovery     約796MB

Windowsの「ディスクの管理」ではMSRパーティションが見えないため、GUI上ではパーティション番号が分かりにくい場合があります。
そのため、削除作業を行う前にPowerShellで実際のパーティション番号を確認することが重要です。

Windows REが使用しているパーティションを確認する

Recoveryパーティションだから不要だろう、と考えていきなり削除してはいけません。
まずWindows回復環境(Windows RE)がどのパーティションを使っているか確認します。

PowerShell
reagentc /info

今回の環境では、

Windows RE の状態: Enabled
Windows RE の場所:
\\?\GLOBALROOT\device\harddisk0\partition4\Recovery\WindowsRE

となっていました。
ここから、

harddisk0
partition4

つまり、Disk 0のPartition 4が現在Windows REで使用されているRecoveryパーティションだと確認できます。
今回のPowerShellで確認した構成とも一致します。

Partition 4
Type: Recovery
Size: 約796MB

これで削除対象を特定できました。

BitLockerの状態を確認する

念のためBitLockerの状態も確認します。

PowerShell
manage-bde -status C:

今回のPCでは、

BitLocker のバージョン: なし
変換状態: 暗号化は完全に解除されています
暗号化された割合: 0.0%
保護状態: 保護はオフです

となっており、BitLockerは使用されていませんでした。そのためBitLockerに関する追加作業は不要でした。BitLockerを使用しているPCの場合は、パーティション変更前に保護の一時停止などを検討した方がよいと思います。

Windows REを一時的に無効化する

現在RecoveryパーティションをWindows REが使用しているため、そのまま削除するのではなくWindows REを一時的に無効化します。

PowerShell
reagentc /disable

続いて、

PowerShell
reagentc /info

を実行し、

Windows RE の状態: Disabled

になっていることを確認します。
さらに念のため、WinREイメージがWindows側へ退避されていることを確認します。
PowerShellで、

PowerShell
Test-Path C:\Windows\System32\Recovery\Winre.wim

を実行します。

True

になっていることを確認してから次へ進みます。
Falseの場合はRecoveryパーティションを削除せず、原因を確認した方が安全です。

Recoveryパーティションを削除する

ここからDiskPartを使用します。以下のコマンドをPowerShellで実行し、DiskPartを起動します。

PowerShell
diskpart

まず対象ディスクを選択します。
※ここからはDiskPartでの操作となりますので注意してください。

DiskPart
select disk 0

Recoveryパーティションを選択します。
今回の環境ではPartition 4です。

DiskPart
select partition 4

念のため詳細を確認します。

DiskPart
detail partition

ここで、

  • Recoveryパーティションである
  • 約796MBである

ことを確認します。

問題なければ削除します。

DiskPart
delete partition override

Recoveryパーティションは保護属性が設定されているため、通常のdelete partitionでは削除できない場合があります。
そのため、overrideを付けて削除します。

この時点で構成は、

[ EFI 200MB ]
[ MSR 16MB ]
[ C: 約465GB ]
[ 未割り当て 約466GB ]

となります。

Cドライブの直後に未割り当て領域ができました。

Cドライブを最大まで拡張する

続けてCドライブのパーティションを選択します。
今回の環境ではPartition 3です。

DiskPart
select partition 3

そして、

DiskPart
extend

を実行します。
これで、後ろに存在する未割り当て領域がすべてCドライブへ追加されます。

[ EFI ]
[ MSR ]
[ C: 約931GB ]

という状態になります。

Recovery用にCドライブを1GB縮小する

このままではRecoveryパーティションを作る場所がないため、Cドライブ末尾を1GB縮小します。
DiskPartでPartition 3を選択した状態のまま、

DiskPart
shrink desired=1024 minimum=1024

を実行します。これで、

[ EFI ]
[ MSR ]
[ C: 約930GB ]
[ 未割り当て 約1GB ]

になります。
この1GBを新しいWindows RE用パーティションとして使用します。

新しいRecoveryパーティションを作成する

未割り当てになった1GB領域へ、新しいRecoveryパーティションを作成します。
GPT環境なので、Windows Recovery Environment用のGUIDを指定します。

DiskPart
create partition primary size=1024 id=de94bba4-06d1-4d40-a16a-bfd50179d6ac

続いてRecoveryパーティションとして必要なGPT属性を設定します。

DiskPart
gpt attributes=0x8000000000000001

NTFSでフォーマットします。

DiskPart
format quick fs=ntfs label="Windows RE tools"

これで新しいRecoveryパーティションが作成されました。
パーティションを確認します。

DiskPart
list partition

今回の最終構成は概ね次のようになりました。

Partition 1   System        200MB
Partition 2   Reserved       16MB
Partition 3   Primary      約930GB
Partition 4   Recovery      約1GB

無事回復パーティションを作成できたので、DiskPartを終了します。

DiskPart
exit

Windows REを再度有効化する

PowerShellまたはコマンドプロンプトへ戻り、

PowerShell
reagentc /enable

を実行します。続いて、

PowerShell
reagentc /info

で確認します。
今回の環境では、

Windows RE の状態: Enabled
Windows RE の場所:
\\?\GLOBALROOT\device\harddisk0\partition4\Recovery\WindowsRE

となりました。
つまり、新しく作成したPartition 4へWindows REが正常に登録されています。

最終的なパーティション構成を確認する

最後にPowerShellで確認します。

PowerShell
Get-Partition -DiskNumber 0 |
    Format-Table PartitionNumber,DriveLetter,Type,Size -AutoSize

今回の実際の結果は次の通りです。

PartitionNumber DriveLetter Type             Size
--------------- ----------- ----             ----
1                           System       209715200
2                           Reserved      16777216
3               C           Basic      998903586304
4                           Recovery     1072693248

当初は、

[EFI][MSR][C: 約465GB][Recovery 約796MB][未割り当て 約466GB]

だったものが、

[EFI][MSR][ C: 約930GB ][Recovery 約1GB]

となりました。
これで全ての作業が完了となります。

念のためファイルシステムもチェック

パーティション変更後、念のためCドライブをオンラインスキャンすると良いかと思います。

PowerShell
chkdsk C: /scan

/scanならWindowsを起動したままNTFSのチェックを行えます。
エラーがなければ、最後にPCを一度再起動します。
Windowsが正常に起動し、

PowerShell
reagentc /info

でもWindows REがEnabledになっていれば作業完了です。

今回使用したコマンドまとめ

事前確認:

PowerShell
Get-Disk 0 | Format-List Number,FriendlyName,PartitionStyle,Size

Get-Partition -DiskNumber 0 |
    Format-Table PartitionNumber,DriveLetter,Type,Size,Offset -AutoSize

Windows RE確認:

PowerShell
reagentc /info

BitLocker確認:

PowerShell
manage-bde -status C:

Windows RE無効化:

PowerShell
reagentc /disable

WinREイメージ確認:

PowerShell
Test-Path C:\Windows\System32\Recovery\Winre.wim

Recovery削除:

DiskPart
diskpart
select disk 0
select partition 4
detail partition
delete partition override

Cドライブ拡張:

DiskPart
select partition 3
extend

Recovery用領域確保:

DiskPart
shrink desired=1024 minimum=1024

Recoveryパーティション作成:

DiskPart
create partition primary size=1024 id=de94bba4-06d1-4d40-a16a-bfd50179d6ac
gpt attributes=0x8000000000000001
format quick fs=ntfs label="Windows RE tools"
list partition
exit

Windows RE再登録:

PowerShell
reagentc /enable
reagentc /info

最終確認:

PowerShell
Get-Partition -DiskNumber 0 |
    Format-Table PartitionNumber,DriveLetter,Type,Size -AutoSize

ファイルシステム確認:

PowerShell
chkdsk C: /scan

まとめ

500GB SSDを1TB SSDへセクタ単位でクローンした場合、パーティション構成までそのままコピーされるため、SSD自体は1TBになっていてもCドライブは500GB時代のままになります。
Cドライブの直後が未割り当て領域ならWindows標準の「ボリュームの拡張」だけで済みますが、今回のように、Cドライブと未割り当て領域の間に回復パーティションが存在すると、そのままではCドライブを拡張できません。

その場合、
Windows REを無効化 → Recovery削除 → Cドライブ拡張 → 末尾1GB縮小 → Recovery再作成 → Windows RE再有効化
という手順を実施しました。

結果、USBメモリからLinux系パーティションツールを起動することも、有料ソフトを購入することもなく、Windows 11標準機能だけで500GBから1TBへのSSD移行を完了できました。
特に重要なのは、Recoveryパーティションをパーティション番号だけで決めつけず、

PowerShell
reagentc /info

と、

PowerShell
Get-Partition

を使って、実際にWindows REが使用しているパーティションを確認してから削除することです。

コマンド操作なので多少敷居は高く見えますが、構成を一つずつ確認しながら進めれば、今回のような「クローン後に半分の容量が未割り当てになってしまった」という問題を、追加ソフトなしで解消できます。

ChatGPTなどにこのページのURLと「Windowsの標準機能だけでパーティションを拡張する方法を教えて」という質問をし、Windowsのディスクの管理アプリのスクリーンショットを貼り付けつつ相談すると、ステップごとの方法を教えてくれて便利です。

コメント

タイトルとURLをコピーしました