今回は wbadmin を利用したリカバリの中でおそらく最後の手段であろう、diskpart を用いてパーディションを自分で用意するリカバリ方法を紹介します。前回、前々回紹介したリカバリ方法( sysrevocery に -restoreallvolumes や -recreatedisks オプションを使う )で復旧できなかった場合に利用します。
このやり方を覚え、バックアップさえ存在していれば、どんな状況からも復旧は可能だと思います。別記事で詳しく紹介しますが、MBR形式を GPT形式に変更してリカバリすることもできます。
前回のバックアップ記事はこちら
MBR 形式のバックアップを GPT形式でリカバリする方法はこちら
リカバリ
新しいディスクを用意します。今回も 100G で準備しました。基本前回(第2回)と同じです。
事前準備
前回と同じでWindows のインストールメディアか、Windows RE(PEでも可?) を準備します。該当するOSで、リカバリを作っておくなど、バージョンはリカバリーするものに揃えておいたほうがベターだと思いますが、実際そんなベストコンディションはまれだと思うので、この実験では手元にあった Windows 10 の 1709 のインストールメディアを使っています。(特に問題はありませんでした。)
※ 別途 RE や PE の環境でSMB1.0を有効にする方法を検証中です。
リカバリするPC:192.168.56.10/24
バックアップのあるNAS:192.168.56.30/24
バックアップの version:03/28/2019-03:44
diskpart を利用してパーティションを準備
以下を実行して、diskpart を起動します。
diskpart を用いて、パーティションが何もない状態であることを確認します。
select disk 0
list partition
ここに、パーティションを二つ作成します。両方とも ntfsでフォーマットします。quickをつけるのを忘れたので少し時間がかかりました。quick つけたほうが良いです。
まずは、1つパーティションを作成し、system に割り当てます。これは linux でいうところのboot パーティションであると理解しています。
format quick fs=ntfs label=system
assign letter=s
active
次に、C: ドライブを格納するパーティションを作成します。(あえて linux でいうと / ですかね。)
format quick fs=ntfs label=windows
assign letter=c
終わったら、正しく作成できているか確認します。
start recovery を用いた C: ドライブのリカバリ
新たなコマンド wbadmin get items を利用します。
以下のコマンドで、C: ドライブにマウントされていた ボリューム だけを、diskpart で c にassign letter した volume 書きだします。
-items:で指定するのは、C:ドライブにマウントされていたもののデバイスIDになります。
-recoverytarget:で指定するのは、diskpart で作成し、assign letter=c で指定した文字列になります。(ここでは、c)
boot を書き込む
これをしないと起動しません。少しハマりました。
BIOS>
https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/configure-biosmbr-based-hard-drive-partitions
UEFI>
https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/configure-uefigpt-based-hard-drive-partitions
おまけ1:UEFI のリカバリはどうしたらいい?
ここまで作業して、気になったのは先ほど boot を書き込む際に使用した BIOS のオプションです。当然、UEFI もありましたので試すしかありません。
EFI版の VMを作成し、Windows をインストールします。インストール後、1回目と同じように wbadmin start backup コマンドでネットワーク上にバックアップを取ります。
VM 上のディスクを付け替えて、リカバリーを起動してネットワークの設定を終わらせます。
リカバリするPC:192.168.56.10/24
バックアップのあるNAS:192.168.56.30/24
バックアップの version:03/29/2019-06-57
以下のコマンドで、パーティションを2つ作成します。efi のパーティションサイズは実は適当です。手持ちの UEFI で動作している PC が 100M と 360M があったので、大きいほうに合わせています。ここでは、ひとまず動くことを目標にしていますので、より詳しくは別のサイトも参考にしてみてください。
format quick fs=fat32 label=system
assign letter=s
create partition primary
format quick fs=ntfs label=windows
assign letter=c
あとは同じように、get items で c:に割り当てられていたボリュームIDを取得してstart recovery での c: ドライブのコピーは完了です。
起動後、問題なく UEFI で起動しているのか確認します。
UEFI も問題なくリカバリーしてブートするようにできました。
おまけ2:大文字が大事なもの
そういえば Windows では大文字小文字関係ないと思っていましたが、この\\?\Volume{..}の「V」だけは大文字である必要があるようです。以下の様なエラーが出た場合、焦らず見直してみてください。ヘルプで出てくるものをコピペすれば間違いないです。
数時間、何のことかわからず検証失敗かと思っていました。