仮想マシンの準備は簡単 (その1)
Hyper-V、Virtual PC、VMware Player、VMware ESX、Xen、Oracle vm VirtualBox … どの仮想化テクノロジを利用する場合でも、仮想マシンは基本的にファイル ベース (物理ディスクを割り当てる場合は例外) なので、複製が簡単です。ファイルをコピーするだけで、“まったく同じ構成”の仮想マシンを何台でもすぐに用意できます (ファイル コピーの時間は必要ですが)。
複製した仮想マシンは、“まったく同じ構成”の仮想マシンです。仮想マシンのバックアップの場合はそれでいいのですが、同一構成の異なる仮想マシンを準備したい場合、複製という方法だけでは、いろいろと問題が起こります。Windows ゲストを実行している場合は、SID (セキュリティ識別子) やライセンス、コンピューター名、ネットワーク アドレス (IP アドレスや MAC アドレス)の重複などです。これを解決するためには、従来からある OS のイメージ展開の手法が利用できます。Sysprep による、OS イメージの一般化、汎用化です。
Sysprep (システム準備ツール) は、OEM のプリインストール PC や Windows OS のイメージ展開で用いられるイメージの一般化ツールです。Windows (および Sysprep 対応アプリケーション) のインストール後に Sysprep を実行すると、次回起動時に Mini-Setup を実行させ、デバイスのインストールや SID の再作成、言語設定、コンピューター名やアカウントの作成など、最小限の対話で新しいコンピューターを準備できるように一般化されます。
Sysprep テクニカル リファレンス
http://technet.microsoft.com/ja-jp/library/dd744263(WS.10).aspx
物理コンピューターへの OS のイメージ展開では、Sysprep を実行したコンピューターのハードディスクをキャプチャして、マスター イメージにします。そして、そのマスター イメージをWindows 展開サービス (WDS) や System Center Configuration Manager (SCCM) 、その他のサードベンダーのツールを用いて、ネットワーク経由やメディアで Sysprep 済みイメージを空のハードディスクに展開します。
仮想マシンの場合、ゲスト OS で Sysprep を実行し
たら、仮想マシンの仮想ハードディスク ファイル (Hyper-V や Virtual PC の場合は VHD ファイル) をコピーし、新しい仮想マシンに割り当てるだけで新しい仮想マシンを次々に作成することができます。WDS や SCCM の出る幕はなく、物理環境よりも、圧倒的に簡単にイメージ展開の手法で新しい仮想マシンを準備できます。
なお、仮想マシンで Sysprep を実行する場合は GUI で行わな
いで、コマンドラインから sysprep -generalize -oobe -shutdown を実行するようにしてください。仮想マシンで Sysprep を GUI で実行すると、シャットダウン オプションで「シャットダウン」を指定しても、再起動してしまうことがあるようです。
Sysprep 済みのイメージから起動した仮想マシンは、Mini-Setup が起動し、最小限の対話で Windows の最終構成を行えます。この Mini-Setup の部分は、応答ファイルを使用することで完全に自動化することができます。
Windows Vista および Windows Server 2008 以降の応答ファイルは、Unattend.xml、Windows XP および Windows Server 2003 R2 以前の応答ファイルは Sysprep.inf というファイルです。応答ファイルは、リムーバブル メディアや %SYSTEMDRIVE% (C: など)のルートなどの場所に配置しておくことで、Mini-Setup に読み込ませることができます (応答ファイルの検索場所については「応答ファイルの暗黙的な検索順序」を参照)。Hyper-V や Virtual PC の仮想マシンの場
合は、応答ファイルを仮想フロッピー ディスク ファイル (.vfd) に格納して仮想マシンに割り当て、仮想マシンを起動することで Mini-Setup を自動化できます。あるいは、VHD ファイルをローカルにマウントして、%SYSTEMDRIVE% のルートにコピーしておく方法もあります。
このように、Windows ゲストの場合、特別なツールを使用しなくても、仮想マシン (ゲスト OS) の準備をある程度自動化することができます。問題は、答ファイルをどう記述すればよいかという点です。以下の URL に、Unattend.xml と Sysprep.inf のサンプルが公開されています。サンプルを見ればすぐわかりますが、Sysprep.inf は非常にシンプルで簡単に作成できそうです。一方、XML ベースの Unattend.xml は複雑で、記述方法を理解するのも、一から記述するのも困難でしょう。Windows 自動インストール キット (Windows AIK) に含まれる Windows システム イメージ マネージャーには、応答ファイルのエティタが付属していますが、これを使っても分かりにくさが解消されるわけではありません。
Sample Unattend Files
http://technet.microsoft.com/en-us/library/cc732280(WS.10).aspx
Sample Sysprep.inf Files
http://www.microsoft.com/resources/documentation/WindowsServ/2003/all/ADS/en-us/sample_sysprep_ops.mspx?mfr=true
Unattend.xml をどう記述すればよいかについては、まず置いておいて、System Center Virtual Machine Manager (SCVMM) 2008 R2 の仮想マシンの作成機能について見てみましょう。
Hyper-V、Virtual Server、および VMware ESX/ESXi の管理に対
応した SCVMM 2008 R2 は、複数の仮想化ホスト上の複数の仮想マシンを、統一的な操作で統合的に管理するためのツールです。仮想マシンをテンプレート化して、指定した仮想化ホスト上に仮想マシンを配置して準備する機能も持ちます。
このテンプレートとは、Sysprep 済みの仮想ハードディスクと、ハードウェア プロファイル (仮想マシンのハードウェア構成) およびゲスト OS プロファイルがセットになったものです。テンプレートから仮想マシンを作成すると、ウィザード内でコンピューター名や管理者パスワードなど、Mini-Setup で必要な入力値をあらかじめ設定し、それに従って仮想マシンのゲスト OS を自動構成してくれます。
実
は、このゲスト OS の自動構成の機能は、Sysprep 済みの仮想ハードディスク ファイルと応答ファイルで実現されています。
右のスクリーンショットを見てください。これは、SCVMM 2008 R2 でテンプレートから仮想マシンを作成した際に実行されたジョブの結果です。「1.6.2 sysprep ファイルを使用したバーチャル フロッピー ドライブの作成」以降に注目してください。SCVMM 2008 R2 は、仮想マシンの作成ウィザードで入力されたゲスト OS プロファイルに基づいて応答ファイル (Unattend.xml または Sysprep.inf) を作成し、仮想フロッピー ディスク (.vfd) に保存して、仮想マシンに割り当て、仮想マシンを起動しています。
このジョブの実行中、仮想フロッピー ディスクは、「仮想マシン名.vfd」というファイル名で仮想マシンの保存先フォルダーに存在します。このファイルをコピーして、別の仮想マシンにマウントすれば、SCVMM 2008 R2 がサポートする Windows バージョンの応答ファイルを確認できます。
この方法でいくつかのパターンのサーバー OS 、クライアント OS のUnattend.xml、Sysprep.inf を拝借してみました。
次回へ続く …