2014年2月24日月曜日

Oracle VM VirtualBoxを完全バックアップ/完全リカバリする方法

ブログを移転しました。
https://awsbloglink.wordpress.com

仮想ソフト「Oracle VM VirtualBox」を完全バックアップ/完全リカバリする方法を紹介いたします。 

<変更履歴>
2016/01/04(月):追記「Windows10アップグレード時の注意点」


<ネットでよく見るバックアップ手法> 


従来の「Oracle VM VirtualBox」のバックアップとして有名な手順としては以下の2つです。
手順の詳細については、Googleで「VirtualBox バックアップ」で検索してください。
[1]スナップショット
[2]仮想アプライアンス エクスポート/インポート

VirtualBoxが提供している正式な機能ではありますが欠点があります。

[1]スナップショット
 ある時点を静止点として、チェックポイントを取れるため、何らかの理由でロールバックしたい場合に有効です。
 ただし、チェックポイントはバックアップというより、静止点をベースとしてロールバックすることが目的のため、バックアップとしては不十分です。
 (VMware ESXiなどのスナップショットの注意書きには「バックアップとしては使用できません」と書かれています)

[2]仮想アプライアンス エクスポート/インポート
 バックアップとしての正式な方法です。他のPCで稼働しているVirtualBoxにインポートすれば仮想マシンの復元が可能です。
 ただし、複数のPCで一つの共有ディスクを使用している環境で、仮想アプライアンス エクスポートを行うと、仮想マシンに共有ディスクが含まれてしまいます。
 この場合、共有ディスクを一旦デタッチして、仮想マシンをエクスポートして、共有ディスクのバックアップを取得する必要があります。
 (Oracle RACを共有ディスクで組んでいる場合などが該当します)


<完全バックアップ/完全リカバリとは> 


私個人が勝手に定義した名前です。
サポートされているやり方ではないと思いますのでサポートは受けられないと思います。
VirtualBoxは最近になり商用利用が許可されましたが、個人利用が大多数です。
とりあえずバックアップを取得したい場合に、非常に便利な手法ですので興味のある方は試してみてください。

本題ですが、完全バックアップとは、「Oracle VM VirtualBox」のバックアップを、仮想マシン単位ではなく、仮想環境丸ごとバックアップする方法です。
完全バックアップした仮想マシンを他のPCで復元も可能です。
(※同じ構成のPCではない場合、復元の際にコツがいります)

完全バックアップの手順はWindows7を前提としています。
他のOSで使用する場合は、動作確認を行っていないため注意してください。

<完全バックアップ手順> 


[1]「Oracle VM VirtualBox」で稼働している仮想マシンを全て停止
[2]「Oracle VM VirtualBox マネージャー」の停止
[3]「Windows タスクマネージャー」 ⇒ 「プロセス」を確認して「VBoxSVC.exe」が存在しないことを確認
  (「Oracle VM VirtualBox マネージャー」の停止後、15秒くらいで消えるはずです)
[4]以下のファイルまたはフォルダをバックアップHDDに退避
 [A]C:\Users\$ユーザ名\.VirtualBox\VirtualBox.xml
 [B]仮想マシンのフォルダ全部(仮想マシンのルートディレクトリを丸ごとが理想)


<完全リカバリ手順> 


[1]「Oracle VM VirtualBox」で稼働している仮想マシンを全て停止

[2]「Oracle VM VirtualBox マネージャー」の停止

[3]「Windows タスクマネージャー」 ⇒ 「プロセス」を確認して「VBoxSVC.exe」が存在しないことを確認
  (「Oracle VM VirtualBox マネージャー」の停止後、15秒くらいで消えるはずです)

[4]バックアップしたファイルまたはフォルダをバックアップHDDから元の場所にコピー
 [A]C:\Users\$ユーザ名\.VirtualBox\VirtualBox.xml(上書き)
 [B]仮想マシンのフォルダ全部


<実行例>


私の環境で実際に行っているバックアップ手順を記載します。
ポイントはバックアップディスクの最上位フォルダに、バックアップ対象のドライブ名を作成します。
(CドライブならCというフォルダを作成。これで、どのフォルダをバックアップしたか分かりやすくなります。)

***各種ファイルの場所***
<input>
VirtualBox.xmlの場所:C:\Users\may\.VirtualBox\VirtualBox.xml
VirtualBoxの仮想マシン格納場所(HDD):S:\vm\registory(配下にフォルダやファイルあり)
VirtualBoxの仮想マシン格納場所(SSD):U:\vm\registory(配下にフォルダやファイルあり)
<output>
バックアップディスク構成(HDD):Y:\C、Y:\S、Y:\U

***手順***
[1]「Oracle VM VirtualBox」で稼働している仮想マシンを全て停止
[2]「Oracle VM VirtualBox マネージャー」の停止
[3]「Windows タスクマネージャー」 ⇒ 「プロセス」を確認して「VBoxSVC.exe」が存在しないことを確認
[4] Windowsのファイル同期コマンド「robocopy」を使用して各種ファイルを、バックアップディスクに同期
  (バッチファイルを作成して全てのフォルダを同期するコマンドを書いておきます。)
  (robocopyを使用すると変更のあったファイルのみデータ転送が行われるため同期処理が短縮されます)

***結果***
<バックアップディスクの構成>
Y:\C\Users\may\.VirtualBox\VirtualBox.xml
Y:\S\vm\registory(配下にフォルダやファイルあり)
Y:\U\vm\registory(配下にフォルダやファイルあり)


<応用情報>


●リカバリ時にバックアップ時と異なる場所に仮想マシンをリカバリしたい場合 
・VirtualBox.xmlをテキストエディタで開いて、ディレクトリを復元したい場所に書き換えてください。
・VirtualBox.xmlのタグ「MachineEntry」の要素「src」で記述されている内容が変更対象となります。

●リカバリ時にバックアップ時と異なる場所に仮想マシンの仮想ディスクをリカバリしたい場合(高度) 
・VirtualBox.xmlのタグ「MachineEntry」の要素「src」に記述されているxmlを開いてください。
・xmlの中にタグ「HardDisk」の要素「location」という記述部分を、仮想ディスクの格納場所を指定してください。
・仮想マシンのxmlと同じ場所に仮想ディスクがある場合、ファイル名しか表示されていません。

●リカバリ時の注意事項1(VirtualBoxバージョン)
・バックアップした時のVirtualBoxのバージョンとリカバリする時のVirtualBoxのバージョンは合わせてください。
・VirtualBox.xmlの解釈がバージョンにより異なる場合があります。
・VirtualBox4.2と4.3では構文に若干の違いがあるようです。
・できれば詳細なバージョン4.3.xのxの部分も合わせた方がいいです。

●リカバリ時の注意事項2(ハードウェア構成の異なるPCへのリカバリ)
・CPUやメモリ、HDDが変わっても、あまり影響が出ることはありません。
・問題はイーサネット(NIC)が変わる場合。
・リカバリ実行後に「Oracle VM VirtualBox マネージャー」を起動するとNICが認識できないエラーがでる場合があります。
・仮想マシンは認識できているため、NICの変更をGUIで変更するか、VBoxManageコマンドを使用してNICを変更してください。

●VBoxSVC.exeとは
・正式なプロセス情報はありませんが、VirtualBoxマネージャーおよび仮想マシンが起動している場合に常駐しています。
・手順にて、このプロセスを止める必要がある理由は、VirtualBoxマネージャーで仮想マシンの構成変更を行った内容を、プロセス終了時にxmlファイルに書き出しを行うためです。
・もしVBoxSVC.exe起動中にVirtualBox.xmlをテキストエディタで修正しても、VBoxSVC.exeプロセスの終了処理が走るとVirtualBox.xmlが元に戻ります。

●VirtualBoxのプロセス
VBoxSVC.exe以外の代表的なプロセスを紹介します。
・VBoxNetDHCP.exe:VirtualBoxのDHCPをサポートします。
・VirtualBox.exe:仮想マシン単位に起動するプロセスです。


<Windows10アップグレード時の注意点>

VirtualBoxをインストールしたWindowsを10にアップグレードする場合の注意点。
Windows 7⇒Windows 10にアップグレードした場合を実施した結果となります。

●ユーザ名が変更されます。
アップグレード前「C:\Users\$ユーザ名\.VirtualBox\VirtualBox.xml」
アップグレード後「C:\Users\$ユーザ名2\.VirtualBox\VirtualBox.xml」
※ユーザ名に「2」など連番が付与されます。
 環境により異なる可能性があるためVirtualBox.xmlのパスを確認してください。
※バックアップスクリプトを使用している場合などはパスの変更が必要となります。

●VirtualBoxホストオンリーアダプタの名前変更がされる可能性があります。
アップグレード前「VirtualBox Host-Only Ethernet Adapter」
アップグレード後「VirtualBox Host-Only Ethernet Adapter #2」
VirtualBoxの管理画面から存在するVirtualBoxホストオンリーアダプタ名を指定してください。
※VirtualBoxをアンインストール⇔インストールを繰り返していた直後に
 アップグレードしたため必ず発生するか不明です。
※VirtualBoxホストオンリーアダプタが存在しない場合は、
 VirtualBox.exeを起動するとアダプタが存在しない旨の警告が表示されます。

<あとがき>


VirtualBox1.6から使用してきた経験を記述しました。
VBoxManageコマンドを駆使するとさらにVirtualBoxライフが快適になります。
この情報が参考になれば、これほど嬉しいことはありません。

virtualbox5でも使用できる手順となります。


0 件のコメント:

コメントを投稿