第2回 仮想ディスクの種類とSID重複問題仮想PCで学ぶ「体当たり」Windowsシステム管理(3/3 ページ)

» 2009年07月16日 00時00分 公開
[打越浩幸デジタルアドバンテージ]
前のページへ 1|2|3       

 クライアントPCで仮想化ソフトウェアを利用する場合、仮想マシンを1台だけ起動して実験やテストなどを行うことが多いだろう。このような場合は、あらかじめ用意した仮想マシン用のOSイメージをロードし、仮想マシン環境にロードして実行すればよい。

 だが複数台の仮想マシンを実行しようとすると、少し面倒なことが起こる可能性がある。特に、同じOSイメージ(例:Windows XP SP3のイメージ)を2台分とかそれ以上ロードして、ネットワークやActive Directory、各種サービスなどのテストを行う場合だ。ネットワークの構成方法にもよるが、お互いに通信できるように設定した仮想マシンで同じOSイメージをロードすると(つまり同じ.vhdファイルを指定して2つの仮想マシンを作成・実行すると)、まずコンピュータの名前が衝突する。DHCPではなく、静的な固定IPアドレスを割り当てていたりすると、IPアドレスも衝突することになる。

 このような場合、Windows OSではネットワーク機能を無効にして起動するため、お互いだけでなく、外部(インターネット)とも通信できない状態で仮想マシンが起動することになる。

 一般的にはこのような状況はあってはならないことだが、仮想マシンだからこそ実現できる、特殊な(そしてスリリングな)状況ともいえる。仮想マシンのネットワーク接続形態を「内部ネットワーク」に限定しておけば外部との通信は行われないので、こういう状況をわざと再現して、何が起こるかをよく観測するとよいだろう(具体的な方法は今後紹介する)。

 さて、このような場合は、正しくはどうすればよいだろうか。以下、複数の仮想マシンで同じOSイメージをロードして実行する方法について簡単に解説しておく。具体的にActive Directoryを組んで複数のクライアントを参加させるといった手順については、次回以降で詳しく解説する。

同じOSイメージを仮想マシンにロードする

 まったく同じ仕様/構成のWindows OSが搭載されたPCを組織内に複数展開する場合、どうするべきであろうか? 複数の仮想マシンで同じOSイメージを利用する場合も、実はこれと状況は同じである。

 一般的にはWindows OSをインストールすると、最初にユーザー情報やコンピュータ名、プロダクト・キーなどを入力し、Windows OSのセットアップ・シーケンスを完了させる必要がある。メーカー製PCを最初に起動すると、インストール用のCD-ROMやDVD-ROMは要求されないが、やはりユーザー名やコンピュータ名、プロダクト・キーなどを入力する必要がある(この場合はメディアなしでインストール作業を行う、「ミニ・セットアップ」が実行されている)。

 Windows PCを大量に導入する場合も、個々のPCについて、このような手順を踏むことが要求されている。組織的な導入、展開をサポートするツールなどもマイクロソフトから提供されているが、そこで行っていることは、OSのセットアップ・イメージのロードとセットアップ・プログラムの起動である。ユーザーがインタラクティブにキー入力などを行わなくてもよいように、個別にカスタマイズした自動応答ファイルも配布できるようになっているが、基本的には各PCでセットアップを実行してカスタマイズしている。

 しかし複数の仮想マシンで同じOSイメージ(.vhdファイル)をロードして起動すると、このセットアップは実行されないことになる。その結果、コンピュータ名の衝突などが発生する。通常は、お互いが同じ名前を持たないようにチェックしながらセットアップが行われるが、その手順がスキップされるのだから当然だ。

 このような問題を起こさないように、同じOSを実行する複数の仮想マシンを作成する正しい方法(推奨されている方法)は、以下の2通りである。

  1. 各仮想マシンごとに、OSのインストール作業を行う。
  2. sysprepでミニセットアップを実行する。

 これ以外にも、「3.Windows OSの導入/展開ツールを利用する」という方法があるが、それは最終的には上のいずれかの方法と同じなので、ここでは省略する。

 1.は、仮想マシンごとにOSのインストールCD-ROMを挿入して起動し、OSのインストール作業をゼロから行う方法であるが、これは面倒である。せっかく環境が簡単にコピーできる仮想環境を使っているのだから(しかもすでにOSイメージの仮想ディスクを用意しているのだから)、もっと簡単にできる方法が望ましい。ただし、Windows VistaやWindows Server 2008、それ以降のOSでは、インストール手順がかなり自動化されているし、インストール時間も短縮されている。以下のsysprepの方法を使うよりも簡単に行えるので、これらのOSの場合は、最初からフルインストールさせる方が簡単なことが多い。

 2.は、sysprepというツールを使ってセットアップを行う方法である。sysprepはWindows OSのサポート・ツールに含まれているツールの1つである。OSごと、Service Packレベルごとに異なるものが、OSのインストール・メディアの\Supportフォルダの中に用意されているので、該当するバージョンのsysprepツールを用意して実行する。なおWindows Vista/Windows Server 2008以降では、サポート・ツールではなく、OSのインストール・フォルダの「%windir%\system32\sysprep」フォルダの中に用意されているので、インストール・メディア(の\Supportフォルダ)を用意する必要はなくなった。

 sysprepの使い方などは以下の記事を参照していただきたい。

 このツールの使い方を簡単に説明すると、インストール済みのOSイメージを起動してsysprepを実行しておくだけである。仮想マシンをシャットダウン後、この状態でマスターの仮想ディスクとして、ほかの仮想マシンへコピーしたり、差分ディスクの親として利用したりすればよい。

sysprepの起動画面
Windows XP/Windows Server 2003向けのsysprepツールの起動画面。
 (1)これをクリックすると、システムがシャットダウンし、ミニ・セットアップの準備が完了する。
 (2)SIDを再生成させないための設定。
 (3)セットアップ・シーケンスにおける、ハードウェア構成の走査をやり直させる。ハードウェア構成が異なるコンピュータ上に展開する場合に有用なオプション(ただしデバイス・ドライバの再インストールなどが行われることがある)。
 (4)(1)をクリックした場合の動作。デフォルトではシャットダウンするが、[再起動]にすると、すぐにミニ・セットアップ・シーケンスが開始される。

 sysprepを一度実行しておくと、次に仮想マシンを実行したときにミニ・セットアップが起動するようになる。各仮想マシンのミニ・セットアップで、コンピュータ名やネットワークなどを設定する。こうすれば、仮想マシンごとに正しい手順でセットアップされたWindows OS環境が得られる。

SIDを変更するツールを利用する

 以上の方法はマイクロソフトの推奨する方法であるが、広く使われている別の方法として、「コンピュータ名やSIDを強制的に書き換えて、同じOSイメージを使う」という方法もある。ただしこれは推奨されていない方法であり、正式な環境としては認められていないことに注意する必要がある。次のサポート技術情報にあるように、マイクロソフトでは、ディスクを複製してSID変更を行ったイメージでの動作は保証していない(このようにして作られた環境での動作は保証されていない)。手許で試す限りでは、仮想PC環境でテスト用に利用する程度ならこの手法でも特に問題はないように思われるが、その意味を十分理解したうえで利用していただきたい。

ディスクを複製してからSIDを変更する

 この方法を簡単にまとめると、ディスクの内容を丸ごと複製(クローニング)して起動させるが、最初に「ツールを使ってSIDを強制的に書き換え」、再起動後にコンピュータ名やネットワークなどが衝突しないように再設定するというものである。

 SIDとは、Windows OS内部で、オブジェクトを識別するために利用されているID番号のことである(TIPS「オブジェクトを識別するSIDとは?」参照)。ハードディスクのイメージを丸ごとクローニングして新しい環境を用意すると、このSIDがまったく同じコンピュータが複数存在することになる。コンピュータ名をいくら変えても、最初に作られたSIDは変更されないので、このような状況が発生する。コンピュータのSID(コンピュータ・オブジェクトを識別するためのSID)は、新しく作成されるSIDの一部としても利用される。この結果、一部のオブジェクト(新しく作成されるユーザー・アカウント)に割り当てられるSIDが重複する可能性がある。

 例えば、PC1で作成したローカル・アカウントとPC2で作成したローカル・アカウントは、たとえ名前が同じであっても本来は異なるSIDが割り当てられるので、異なるものとして扱われる。しかし複製した環境下では、2つのローカル・アカウントのSIDが同じになる可能性がある(Windows OS内部では、名前ではなく、すべてSIDで識別されている)。これはセキュリティ的に大変な危険性を持つことになる。別のPCのアカウントなのに、まるでローカルと同じように扱われるからだ(例えばリムーバブル・メディア上の暗号化されたファイルなどが、別のコンピュータでも読み出せてしまうようになる)。

 このような状況が発生する可能性があるため、複製したディスク環境のWindows OSに対して、元となるコンピュータのSIDなどをランダムな別の値に書き換えるツールがいくつか作られている。例えば以下のツールである。

 なお、現在のSIDの値を調べるには、PStoolsに含まれるPsGetSidが利用できる。

コンピュータのSIDの例
SysinternalsのPStoolsに含まれるPsGetSidで、コンピュータのSIDの値を表示させたところ。OS内部では、コンピュータ名やユーザー名ではなく、すべてこのようなSIDによってオブジェクトを識別している。このSIDの値(の一部)を元に、新しく作成するアカウントのSID値を決めたりしている。この値が重複すると、異なるコンピュータなのに同じアカウントと認識されたりする可能性がある。

 コピーした環境(.vhdファイル)の仮想マシンを起動後、NewSIDでSIDの値を変更し、さらにコンピュータ名やネットワーク設定などを変更すればよい。使用するOSイメージはActive Directoryに参加した状態ではなく、ワークグループ構成のまま保存したものを利用するのがよいだろう。このようなツールでは、標準的な場所に記録されているSIDのみを変更の対象としているので、もしアプリケーションが独自にSIDの値を取得/保存していると、変更されない可能性があるので、注意していただきたい。

NewSIDツール
これはコンピュータのSIDを書き換えるNewSIDツール。ただしマイクロソフトでは、ディスク複製とSID書き換えによって作成された環境のソフトウェアの動作は保証していない。が、仮想環境で実験する程度なら問題なく動作するようである。

 SIDを強制的に変更することによる問題点や危険性などについては、上のNewSIDコマンドの説明や、以下のドキュメントなどを参照していただきたい。コンピュータのSIDは暗号化ファイル・システムなどでも利用されているので、暗号化を利用しているイメージでSIDを変更すると、暗号化されたファイルにアクセスできなくなる、などの注意点が書かれている。


 今回は仮想環境で利用できる仮想ディスクの種類とその使い方、複製した環境の利用方法などについて解説した。次回は、仮想環境上でActive Directoryなどのネットワーク機能を利用する方法について解説する。


「仮想PCで学ぶ『体当たり』Windowsシステム管理」のインデックス

仮想PCで学ぶ『体当たり』Windowsシステム管理

前のページへ 1|2|3       

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

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

メールマガジン登録

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