Windows 標準ツールでのディスク移行(前編)

Windows の標準ツールだけでディスク移行した際に遭遇したトラブルとその対処を記録しておきます。

背景

オフィスのPCを第3世代Core i7から第3世代Ryzen 9 (3950X)に移行した際に、 どうせならということで内蔵ディスクをSATA 6G接続のSSDからM.2 PCIe4.0 x2に換装しました。 その際のデータ移行とGPTへの変換をWindows標準ツールだけで行ったのですが、 いくつかのトラブルに見舞われたもののなんとか復旧できたので その時に得た知見を記録しておきます。

TL;DR

  • 復旧ドライブは必ず作ろう
  • システムイメージによるバックアップは機能する
    • ディスク移行ツールとして利用すると失敗することがある。そこからの復旧も気合があればできる
  • MBR2GPTでGPTへの変換が拒否されることがある。そこからの復旧も気合があればできる
  • 同じIDのディスクを複数台繋ぐとWindowsは起動できなくなる
  • 速い外付けディスクは正義
    • USB 3.0 = USB 3.1 Gen1 = USB 3.2 Gen1
  • Windowsのブートプロセスについてのメモ

随記

移行にあたり回復ドライブ用に32GBのUSBメモリを、システムイメージの保存用にUSB接続の最大1050MB/s読み書きできる外付けSSD 1TBを用意した。 回復ドライブは16GBあれば良いとのことだったが価格も安いし大きい分には間違いもないだろう32GBとした。 システムイメージ用のSSDは別目的のために用意していたものを転用したというほうが正しいが、 もともとexFATフォーマットだったものをシステムイメージを保存するにはNTFSが必須ということで再フォーマットした。

回復ドライブの作成はスタートメニューで「回復ドライブ」と入力すれば、あとはポチポチと画面の指示に従えば作成できる。 回復ドライブにはシステムごとのドライバなどがコピーされるらしいので1台に1つ作っとくと安心できる。 いや回復ドライブが必要な状況はすでに安心とは縁遠いとは思うのだが。 回復ドライブはWindows REという簡易版のWindowsで、 特に今回は「システムイメージの回復」と「コマンドプロンプトウィンドウからのツールの使用」のお世話になった。 というかそれらがなかったら死んでいるところだった。

システムイメージというのはWindows 7で導入されていたバックアップ手段で、 VMでも使われるVHDX形式でシステムにつながってる全ディスクのバックアップイメージを作成してくれる。 これで作ったイメージを新しいM.2 SSDに書き込むことで移行しようというのが本作業の算段。 結果このツールだけではパーティション構成を変えられないとか、起動情報が壊れるなどのトラブルに見舞われることになった。

システムイメージは「設定」→「更新とセキュリティ」→「バックアップ」→「バックアップと復元に移動」から作成できる。 今回のバックアップ対象は約500GBで、バックアップ先は約1GB/sの外付けSSDだったがSATA SSDが500MB/sだったので、 SATA SSDにより律速されおおよそ1000秒(約17分)ほどでバックアップできた。 のちに別システム約1TBのバックアップを外付けHDDで取った際は、 約130MB/sの転送速度で2時間以上かかったので速い外付けディスクは正義だと思い知った。

システムイメージが作成できたらシステムの電源を落としてSATA SSDを外しM.2 SSDを接続し、 回復ドライブで起動してシステムイメージをM.2 SSDへ転送する。 回復ドライブはBIOS(MBR)とUEFIどちらでも起動できるが、バックアップ対象であるMBRのシステムはBIOSで起動しないと復元できないようだった。 なので今回はBIOSで起動する。 BIOSで起動するにはCSMでLegacyを有効化、みたいな事前設定が必要だがそのあたりは当然できているものとする。 M.2 SSDへの転送は「システムイメージの回復」でやれば良いが、「トラブルシューティング」などのサブメニューにあることには注意が必要。 実際の転送時はM.2 SSDが4GB/sの転送であることから、外付けSSDの1GB/sにより律速され約9分ほどで500GBの転送が完了した。 速いディスクは正義だと思い知った。

いよいよ新ディスクで起動、を試みるも BOOTMGR is missing で起動できない。 これはのちにMBRのローダーがセカンドローダーであるBOOTMGRを見つけられないことによるものと判明。 はっきりとした理由はよくわからないが、もともとのBCDに想定外の設定が存在したものと推測される。

ともあれ当初は青ざめつついろいろ調べた後に一旦落ち着こうとSATA SSDを接続してそちらで起動しようと試みるが…M.2 SSDを外さなかったことで大問題に発展した。 SATA SSDにインストールされたシステムが起動できなくなった。 というのはWindowsは見えないけれどもディスク1つ1つにユニークなIDを付けておりシステムイメージの回復ではこのIDも正確にコピーされる。 しかしWindowsは起動時に同じIDのディスクが複数あると起動できないだけでなく何かしらの誤動作をするらしい。 詳しいことはまったくわからないがBCDに書かれる回復のための情報に不整合が生じたのかもしれない。 とにかくM.2 SSDを外すのをめんどくさがったのは完全に失敗だった。

頼みの綱のSATA SSDでは起動しなくなったので、M.2 SSDを外していちかばちかでシステムイメージからの回復でSATA SSDを復元してみる。 500MB/s律速で約20分ほど。 緊張の作業だったがなんとか回復しSATA SSDから起動した。

ここでいったん標準ツールによるディスク移行は諦めてEeseUS Todo Backupのクローン機能に切り替えた。 M.2 SSDも直接マザーボードに搭載するのではなくUSBアダプタ経由とした。 EaseUSとアダプタ経由でのクローニングはかなり150MB/s程度に律速されてしまいかなりの時間を要したが、 無事クローニングと起動に成功。 このときSATA SSDは外し、M.2 SSDはマザーボードに搭載した。

今回移行する前のSATA SSDは1TBだがM.2 SSDは2TB。 クローンしただけでは容量拡張は行われない。 もともとのパーティション構成は以下の3つ。

  1. システム予約領域 (約100MB)
  2. Cドライブ (約930GB)
  3. 回復パーティション (約900MB)

システム予約領域が最近のシステムに比べて少ないのはWindows 7時代からアップグレードで使ってるから。 昔はこのサイズで済んでいた。 回復パーティションは回復ドライブがあるため不要と判断して削除し、Cドライブの延伸した。 GUIだけでは完結できずに CHKDSK /F やDISKPARTを利用した記憶があるが…詳細は忘れた。

ここで色目がでてしまう。 せっかくだからMBRからGPTに変換してUEFIブートできるようにしとこうか。 いつまでCSMでLegacyブートがサポートされるかもわからないので思い切って。 結果的に思い切りが過ぎた。

GPTへの変換は通常のシステムから MBR2GPT /convert /allowfullos で行える。 また事前に変換可能かどうかを MBR2GPT /validate /allowfullos で検証できる。 この検証で「OSが見つからない」とはねられた。 ここでまた試行錯誤で解決したのだがこのときはどうしてうまくいったのか不明。 後に回復ドライブから BOOTREC /RebuildBcd したことで変換できる状態になったのだろうと推測できた。

ともあれGPTで新しいM.2 SSDを使えるようになったことでその日は満足。 夜21時すぎに帰宅の途についた。 しかし帰宅後、いろいろ調べたり議論する中でモヤモヤが再燃。 特にEaseUSでクローン後にCHKDSKがひっかかりパーティション拡張できなかったことが心にひっかかる。 翌朝7時にオフィスに出て再度標準ツールだけを用いたクローニングにチャレンジするのであった。

後編(後日書きます)に続く