あなたの大切なPCが仮想環境にヨミガエル?その知識、ホントに正しい? Windowsにまつわる都市伝説(15)

本連載の過去2回では、Windows 8/8.1の「PCのリフレッシュ」と「PCのリセット」を説明しました。でも、筆者がお勧めするのは「フルバックアップの作成」(システムイメージの作成)です。今回は、システムイメージのバックアップデータでいろいろと試してみます。

» 2014年10月17日 18時00分 公開
[山市良テクニカルライター]
「Windowsにまつわる都市伝説」のインデックス

連載目次

Windows8/8.1でのシステムイメージ作成のおさらい

 Windows 8は「Windows 7のファイルの回復」、Windows 8.1は「ファイルの履歴」のコントロールパネルから「システムイメージの作成」を実行することで、PCのフルバックアップを取得できます(画面1)。

画面1 画面1 システムイメージは、ハードディスク、複数枚のDVDメディア、またはネットワーク共有に作成できる

 システムイメージを作成しておけば、たとえハードディスクが物理的に故障したとしても、「Windowsシステム回復環境」(Windows Recovery Environment:WinRE)でPCを起動して「イメージでシステムを回復」を実行することで、未使用のディスクにイメージを書き戻してベアメタル回復(BMR)することができます(画面2)。

画面2 画面2 「Windowsシステム回復環境」(WinRE)でPCを起動し、「イメージでシステムを回復」を実行してフルバックアップからPCを復元できる

バックアップデータの形式はHyper-V仮想マシンと同じ「VHDX」

 すでにご存じの方も多いかもしれませんが、Windows VistaおよびWindows Server 2008から採用されている「Windows Complete Backup」は、システムイメージを保存するバックアップデータのファイル形式として、Windows Virtual PCやHyper-Vの仮想ハードディスクと同じ「VHD」(Virtual Hard Disk)形式を利用します。Windows 8およびWindows Server 2012からは最新のHyper-Vと同じ「VHDX」に変更されました。

 以下の画面3は、NTFS形式でフォーマットしたUSB外付けハードディスクのバックアップデータを参照したものです。

画面3 画面3 バックアップ用ディスクの中を見てみると、バックアップ対象のボリュームごとにVHDXファイルが作成されていることが確認できる

 バックアップデータは、バックアップ先のドライブの「¥WindowsImageBackup¥<コンピューター名>¥Backup <バックアップを作成した日付> <自動付与された番号>」フォルダーに格納されます。

 なお、バックアップ先としてNTFSボリュームのディスクを使用している場合は、バックアップ先のフォルダーを開くために、ポップアップされる「このフォルダーにアクセスする許可がありません」ダイアログボックスで「続行」ボタンをクリックし、永続的なアクセス許可を取得する必要があります。

 このPCはBIOS(Basic Input/Output System)ベースのPCであり、標準的なパーティション構成でインストールされています。ブート環境を格納している350MBのシステムボリューム(パーティション)と、残りの領域のWindowsがインストールされたブートボリューム(パーティション)です。「システム」と「ブート」の呼び名に違和感があるかもしれませんが、Windowsでは古くからこのように表現してきました。

 バックアップデータを見てみると、システムボリュームに対応した約48MBの小さなVHDXファイルと、ブートボリュームに対応した約400GBの大きなVHDファイルの二つを確認できます。このように、システムイメージの作成では、PCの起動に必要な全てのボリュームがバックアップされ、ボリュームごとにVHDXファイルが作成されます。データ用のドライブがある場合は、そのボリュームもバックアップするように選択できます。

過去のバックアップはボリュームシャドウコピーで保持

 システムイメージをローカルのバックアップ用ハードディスク(NTFSボリューム)に作成した場合、バックアップ用ハードディスクの空き領域が許す限り、複数のバックアップが保持され、復元時にオプションで選択することが可能です。しかしながら、「¥WindowsImageBackup¥<コンピューター名>」には最後に作成した日付のバックアップデータしか存在しないことに気が付くでしょう(画面4)。

画面4 画面4 「¥WindowsImageBackup¥<コンピューター名>」には最後のバックアップしか存在しないように見えるが、復元時には過去のバックアップを指定できる

 ローカルのバックアップ用ハードディスクに対してシステムイメージを作成した場合、過去のバックアップは「ボリュームシャドウコピー」(Volume Shadow Copy Service:VSS)サービスによりボリュームのシャドウコピーとして保持されます(画面5)。これにより、少ない領域で複数のバックアップデータを効率的に保持できるようになっています。

画面5 画面5 過去のバックアップが利用できるのは、バックアップの履歴管理にボリュームシャドウコピーを利用しているため。「vssadmin list shadows」コマンドで存在するシャドウコピーを確認できる

バックアップデータを安全にローカルマウントするには?

 前述のように、WindowsのバックアップデータはVHD/VHDX形式です。Windows 7からはVHD、Windows 8以降はVHDおよびVHDXのローカルマウント機能が利用できます。バックアップデータをローカルマウントすれば、バックアップデータに含まれるボリュームにエクスプローラーなどを使用してアクセスできます。

 本来は、バックアップデータにはバックアップとリストアのための標準インターフェースを使ってアクセスするのが望ましいですが、この方法を知っておけばPC全体を復旧しなくても、最後のバックアップから必要なファイルだけを選択的に復元できるようになります。

 バックアップデータをローカルマウントしてみたいという場合は、万が一、バックアップデータを壊してしまうことがないように、バックアップデータであるVHD/VHDXを親(親ディスク)とする、差分タイプのVHD/VHDX(差分ディスク)を作成し、差分ディスクの方をローカルマウントするとよいでしょう。差分ディスクは親ディスクを“読み取り専用”で参照するだけなので、ローカルマウントした差分ディスクに対する変更(ファイルの書き込みや削除)は親ディスクには全く影響しません。

 「Hyper-Vマネージャー」を利用できる場合は、「仮想ハードディスクの新規作成ウィザード」で差分ディスクを簡単に作成できます(画面6)。

画面6 画面6 バックアップデータを壊さないように、「Hyper-Vマネージャー」でバックアップデータを親とする差分ディスクを作成する

 また、Hyper-Vマネージャーを利用できない場合は、「DISKPART」コマンドを次のように実行することで差分ディスクを作成できます。

DISKPART

> CREATE VDISK FILE="作成する差分VHD/VHDXのパス" PARENT="親VHD/VHDXのパス"


 作成した差分ディスクは「ディスクの管理」スナップインを使用して、マウント(接続)および切断することができます(画面7)。Windows 8以降では、エクスプローラー上でマウントと切断すること(取り外し)が可能です。

画面7 画面7 差分ディスクをローカルマウントすると、バックアップに含まれるファイルにエクスプローラーなどでアクセスできる

バックアップデータでHyper-V仮想マシンを起動する

 ここからはちょっとした実験になります。バックアップデータはVHD/VHDXなので、Hyper-V仮想マシンで動かせるかもしれません。ちょっと試してみましょう。なお、今回はBIOSベースのPCのバックアップデータを利用しています。UEFI(Unified Extensible Firmware Interface)ベースのPCの場合は、もうちょっと追加の手順が必要かもしれません。また、バックアップから直接Windowsを起動することは、ライセンスの問題があるかもしれませんので、良い子はまねしないように。

 今回は、Windows 8.1 Pro x64のHyper-V(クライアントHyper-V)環境を利用しました。第1世代仮想マシンを作成し、IDEコントローラー0の場所0に空の1GBのVHDX(boot.vhdx)を作成して割り当て、IDEコントローラー0の場所1にブートボリューム(「Windows」フォルダーがあるボリューム)を含むバックアップデータを親とする差分ディスクを割り当てます(画面8)。

画面8 画面8 Hyper-Vに仮想マシンを作成し、空のVHDXと差分ディスクの二つをIDEコントローラー0に割り当てる

 物理PCのブート環境を格納しているシステムボリュームに対応するバックアップデータは使用しません。その理由は、Windows 8.1のバックアップデータはGPT(GUIDパーティションテーブル)ディスクとして作成されているため、起動にMBR(マスターブートレコード)ディスクを必要とするHyper-Vの第1世代仮想マシンには不都合だからです。

 作成した仮想マシンをWindows 8.1のインストールメディアから起動し、Windowsシステム回復環境のコマンドプロンプトを開き、DISKPARTコマンド、BCDBOOTコマンド、BCDEDITコマンドを使用して空の1GBのVHDXにブート環境を構成します(画面9)。

画面9 画面9 空のVHDXの方に差分ディスク内のWindows用のブート環境を構成する。再起動するにはWPEUTIL REBOOTを実行する

 まず、DISKPARTコマンドを使用して、1GBのディスクにアクティブなプライマリパーティションを作成し、NTFSでフォーマット後、作業用にドライブ文字「S」を割り当てます。

DISKPART

> LIST DISK

> SELECT DISK 0

> CREATE PARTITION PRIMARY

> FORMAT QUICK

> ACTIVE

> ASSIGN LETTER S:

> EXIT


 続いて、BCDBOOTコマンドを使用して、仮想マシンに割り当てた差分ディスクのWindows用のブート環境をSドライブに作成します。このコマンドラインは、現在、差分ディスクがCドライブに自動マウントされていた場合の例です。

BCDBOOT C:\Windows /l ja-jp /s S: /f BIOS


 最後に、BCD(ブート構成データ)ストアをちょっとだけいじります。物理PCと仮想マシンのハードウェアの違いを考慮し、「detecthal」オプション(次回起動時にハードウェアを再検出してインストールする)を有効にします。また、クライアントHyper-Vを有効にしている場合は、仮想マシン環境では利用できないので「hypervisor」オプションを削除します。

BCDEDIT /STORE S:\BOOT\BCD /set {default} detecthal on

BCDEDIT /STORE S:\BOOT\BCD /deletevalue {default} hypervisor


 以上の設定が終わったら仮想マシンを再起動します。これで、ハードウェアの検出とインストールが始まり、完了後、仮想マシンが起動します(画面10)。

画面10 画面10 バックアップデータから仮想マシンを起動できた

 なお、この例ではブート環境の構成のために、仮想マシンをWindows 8.1のインストールメディアから起動したWindowsシステム回復環境を使用しました。しかし、わざわざ仮想マシンとして起動しなくても、二つのVHDX(ブート用と差分VHDX)をPCにローカルマウントして作業することも可能です。

 PCに十分なディスク領域があれば、バックアップデータを使用してVHDブート(VHDからのネイティブブート)環境を構成し、バックアップ元のPCを自分のバックアップデータから起動する、なんてことができるかもしれません(意味がないので試しませんが、おそらくできます)。

 地震や水害、火災、紛失、盗難などで大切なPCを失ってしまったとしたら、バックアップデータが残っていないかどうかを探してみましょう。バックアップデータを使用すれば、あなたの愛しのPCを仮想環境上に再現できるかもしれません。

「その知識、ホントに正しい? Windowsにまつわる都市伝説」バックナンバー

筆者紹介

山市 良(やまいち りょう)

岩手県花巻市在住。Microsoft MVP:Hyper-V(Oct 2008 - Sep 2014)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。マイクロソフト製品、テクノロジを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手がける。個人ブログは『山市良のえぬなんとかわーるど』。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。