DISKPART を用いて Cドライブを NAS からリカバリする方法

今回は wbadmin を利用したリカバリの中でおそらく最後の手段であろう、diskpart を用いてパーディションを自分で用意するリカバリ方法を紹介します。前回、前々回紹介したリカバリ方法( sysrevocery に -restoreallvolumes や -recreatedisks オプションを使う )で復旧できなかった場合に利用します。

このやり方を覚え、バックアップさえ存在していれば、どんな状況からも復旧は可能だと思います。別記事で詳しく紹介しますが、MBR形式を GPT形式に変更してリカバリすることもできます。

前回のバックアップ記事はこちら

この記事では、任意のタイミングで Windows のフルバックアップを NAS や共有フォルダなどリモートストレージに保存し、そこからリカバリする方法を紹介します。実際にバック...
今回はディスク( HDD や SSD )が壊れて、丸ごとディスクを交換した場合を想定したリカバリを検証していきます。ディスクの入れ替えでディスクサイズが変わっているなど、通常 ...

MBR 形式のバックアップを GPT形式でリカバリする方法はこちら

今回は、バックアップ時に MBR形式だったものを、GTP形式としてリカバリする方法を紹介します。実は本件、バックアップ・リカバリの検証中に発見し「いいブログのネタになる!」と思...

スポンサーリンク

リカバリ

新しいディスクを用意します。今回も 100G で準備しました。基本前回(第2回)と同じです。

事前準備

前回と同じでWindows のインストールメディアか、Windows RE(PEでも可?) を準備します。該当するOSで、リカバリを作っておくなど、バージョンはリカバリーするものに揃えておいたほうがベターだと思いますが、実際そんなベストコンディションはまれだと思うので、この実験では手元にあった Windows 10 の 1709 のインストールメディアを使っています。(特に問題はありませんでした。)

SMB1.0 が 1709 から禁止になっています。net use でエラーになる場合があります。その場合は、1709 より古いものを利用するとよいです。
※ 別途 RE や PE の環境でSMB1.0を有効にする方法を検証中です。
前回と同様、IPアドレスは以下の様になっています。
リカバリするPC:192.168.56.10/24
バックアップのあるNAS:192.168.56.30/24
バックアップの version:03/28/2019-03:44

diskpart を利用してパーティションを準備

リカバリのためのコマンドプロンプトの起動、ネットワーク接続までは前回、または前々回を参考にしてください。ここでは省略します。(すでにリカバリが起動してネットワークに接続しており、バックアップのバージョンも取得できている状態から解説を始めます。)

以下を実行して、diskpart を起動します。

diskpart

diskpart を用いて、パーティションが何もない状態であることを確認します。

list disk
select disk 0
list partition

ここに、パーティションを二つ作成します。両方とも ntfsでフォーマットします。quickをつけるのを忘れたので少し時間がかかりました。quick つけたほうが良いです。

まずは、1つパーティションを作成し、system に割り当てます。これは linux でいうところのboot パーティションであると理解しています。

create partition primary size=500
format quick fs=ntfs label=system
assign letter=s
active

次に、C: ドライブを格納するパーティションを作成します。(あえて linux でいうと / ですかね。)

create partition primary
format quick fs=ntfs label=windows
assign letter=c

終わったら、正しく作成できているか確認します。

list volume

これでリカバリ対象のパーティション構成は完成です。exit で diskpart を抜けます。

start recovery を用いた C: ドライブのリカバリ

新たなコマンド wbadmin get items を利用します。

wbadmin get items -version:03/28/2019-03:44 -backuptarget:\\192.168.56.30\union\test02 -machine:DESKTOP-CLAV127

この item の表示、1回目で解説している ディスクイメージ と一致しています。

以下のコマンドで、C: ドライブにマウントされていた ボリューム だけを、diskpart で c にassign letter した volume 書きだします。

wbadmin start recovery -version:03/28/2019-03:44 -itemtye:volume -items:\\?\Volume{f639da4a-0000-0000-0000-5-1f0000000}\ -backuptarget:\\192.168.56.30\union\test02 -machine:DESKTOP-CLAV127 -recoverytarget:c:

-items:で指定するのは、C:ドライブにマウントされていたもののデバイスIDになります。

-recoverytarget:で指定するのは、diskpart で作成し、assign letter=c で指定した文字列になります。(ここでは、c)

これで、C: ドライブが復旧できました。

boot を書き込む

これをしないと起動しません。少しハマりました。

今回は、BIOSなので以下のコマンドで、boot を書き込みます。
bcdboot c:\windows /l ja-jp /s S: /f BIOS

これで完了です。exit して Windows を立ち上げましょう。Windowsを立ち上げて、ディスクの管理を確認します。2回目で紹介した方法で、邪魔になっていた回復パーテイションが消えています。

おまけ1:UEFI のリカバリはどうしたらいい?

ここまで作業して、気になったのは先ほど boot を書き込む際に使用した BIOS のオプションです。当然、UEFI もありましたので試すしかありません。

ご存知の通り、ハードウェアが UEFI 対応している必要があります。VirtualBoxは、EFI オプションを ON にして試しました。

EFI版の VMを作成し、Windows をインストールします。インストール後、1回目と同じように wbadmin start backup コマンドでネットワーク上にバックアップを取ります。

VM 上のディスクを付け替えて、リカバリーを起動してネットワークの設定を終わらせます。

前回と同様、IPアドレスは以下の様になっています。
リカバリするPC:192.168.56.10/24
バックアップのあるNAS:192.168.56.30/24
バックアップの version:03/29/2019-06-57

以下のコマンドで、パーティションを2つ作成します。efi のパーティションサイズは実は適当です。手持ちの UEFI で動作している PC が 100M と 360M があったので、大きいほうに合わせています。ここでは、ひとまず動くことを目標にしていますので、より詳しくは別のサイトも参考にしてみてください。

create partition efi size=360
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 なので以下のコマンドで boot を書き込みます。
bcdboot c:\windows /l ja-jp /s S: /f UEFI

起動後、問題なく UEFI で起動しているのか確認します。

UEFI も問題なくリカバリーしてブートするようにできました。

おまけ2:大文字が大事なもの

そういえば Windows では大文字小文字関係ないと思っていましたが、この\\?\Volume{..}の「V」だけは大文字である必要があるようです。以下の様なエラーが出た場合、焦らず見直してみてください。ヘルプで出てくるものをコピペすれば間違いないです。

指定した回復対象ボリュームはバックアップに含まれていません。

数時間、何のことかわからず検証失敗かと思っていました。