Windows TIPS
[System Environment]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

仮想マシンにおける差分ディスクと復元ディスクの違い

デジタルアドバンテージ 打越 浩幸
2005/08/20
 
対象ソフトウェア
Virtual PC 2004
Virtual Server 2005
VPC2004やVS2005では、ディスクのタイプとして差分ディスクと復元ディスクが利用できる。この2つは似ているようだが、その機能や目的は少し異なっている。
差分ディスクは、既存の仮想ディスクをベースにして一部設定を変更し、新しい仮想マシン環境を構築する場合などに利用する。
復元ディスクは、仮想マシン環境の実行結果をキャンセルして、初期状態に戻すために利用できる。同じ条件で実行を再開したいような場合に利用できる。
 
解説

仮想マシンで利用できるディスクのタイプ

 Virtual PC 2004(VPC2004)やVirtual Server 2005(VS2005)で利用できる仮想ディスクのタイプには、以下の4つの種類がある。

ディスクのタイプ 意味
1.容量可変の拡張仮想ディスク デフォルトの仮想ディスク・タイプ。データが書き込まれている部分だけを仮想ディスク・ファイルに記録するので、初期サイズは小さく、使用に伴ってサイズが順次拡大する
2.容量固定の仮想ディスク 固定的なファイル・サイズの仮想ディスク。使用途中でサイズが拡大しないので、フラグメントの発生を抑え、パフォーマンスを最適化することができる
3.差分仮想ディスク マスタとなる仮想ディスクに対して、変更部分だけを記録する仮想ディスク・タイプ。マスタとペアにして利用する。ベースとなるシステムに対して、変更を加えたシステムを簡単に構築できる。必要ならば、差分情報をマスタ・ディスクに反映することも可能
4.ハードディスクへのリンク ホスト・コンピュータに装着されている、物理的なハードディスクを直接マウントする場合に使用する
仮想ディスクのタイプ

 一般的な用途では、1の容量可変の拡張仮想ディスクか、2の容量固定の仮想ディスクを利用する。この2種類は、サイズが可変か固定かが異なるだけであり、機能としては同じである。パフォーマンスを重視するなら固定タイプを、サイズを重視するなら容量可変タイプを選択すればよい。仮想ディスクの作成ウィザードは、デフォルトでは容量可変の拡張仮想ディスクを作成するが、容量固定タイプを選択することもできるし、後で相互に変換することもできる。インストールするゲストOSにもよるが、実際の使用領域は数百Mbytesから2Gbytes程度なので、通常は容量可変タイプを選択し、パフォーマンスを要求される特定の用途(VS2005でレガシー・アプリケーションを定常的に利用する場合など)では、容量固定タイプを利用するとよいだろう。

差分ディスクとは

 3番目のタイプである「差分仮想ディスク(以下差分ディスク)」は、マスタとなる仮想ディスクと常にペアで利用される、特別なタイプの仮想ディスクである。オリジナルの仮想ディスク(システム環境)に対して、修正を加えた環境を作成するような場合に利用する。

 例えばWindows 2000 ProfessionalのService Pack(SP)未適用版環境をオリジナルとして、SP1を適用した環境、SP2を適用した環境、IE 6.0をインストールした環境などをそれぞれ作成するような場合に利用できる。テスト目的で複数の環境を用意したい場合、それらの環境を、いちいちゲストOSのインストールから始めるのは大変であるし、時間の無駄でもある。このような場合は、まずベースとなるOS環境を1つ作成し、ほかの環境はその上に新たに追加インストールするなどして作成すれば、素早く構築できる。

 このように既存の環境(ディスク)をベースにして新しい環境を作成する場合、元の仮想ディスク・ファイルをコピー/リネームして利用してもよいが、これではディスクの無駄が大きい。SPやIEをインストールしても、更新されるのは一部のファイルだけだからだ。このような場合は差分ディスクを利用するとよい。差分ディスクでは、オリジナルの環境に対して変更があった部分のみが記録されるので、重複を避け、必要最低限のディスク領域だけで済む。差分ディスクのマスタには、固定か可変長サイズの仮想ディスクだけでなく、さらに別の差分ディスクを指定することもできるので、ツリー状になった差分ディスク階層を構築することもできる。

TIPS:sysprepで環境複製用のマスタ・イメージを作成する

 差分ディスクのもう1つの応用としては、例えば、同じ構成を持つ複数の仮想マシン環境を構築する場合にも利用できる。差分ディスクを使って、コンピュータ名だけが異なる複数の仮想マシン環境を用意し、多数のクライアントからのアクセス・テストなどを行うことができる。このような用途では差分ディスクで仮想マシン環境を構築し、コンピュータ名を変更するか、sysprepツールを使ってSIDの重複しない環境を用意すればよい。

差分ディスクの概念図
差分ディスクではベースとなる環境(ディスク)を元にして変更部分だけを記録するため、最低限のディスク領域で済む。1つの環境をベースにして、少しずつ変更を加えた環境を作成する場合に利用できる。また同じOSを元にして、コンピュータ名を変えただけの複数の仮想マシン環境を構築する場合にも利用できる。差分ディスクをベースとしてさらに差分ディスクを作成することもできるので、階層的な差分ディスク・ツリーを作成することもできる。ただしツリーの末端の差分ディスクを利用するには、その親となるディスクへもアクセスできる必要があるし、親のディスクには書き込んではいけないという制約もある。

 ただし差分ディスクを利用するには、常にマスタとなるディスクが必要であることに注意しなければならない。ベースとなるディスクへのアクセスも生じるので、常にペアで(階層になっている場合はそれらすべての親も含めて)取り扱う必要がある。このため、一般的には、どこか決まった場所にベース・ファイルを作成しておき、以後は移動しないようにする必要がある。

 また差分ディスクを利用する場合は、マスタとなる仮想ディスクに対して変更を加えてはいけないという制約もある。マスタ側を変更してしまうと整合性が取れなくなるからだ。そのため、マスタ側の仮想ディスク・ファイルは書き込み禁止にしておくのがよい。

復元ディスクとは?

 VPC2004やVS2005では、以上のディスク・タイプのほかに、もう1つ「復元ディスク」というタイプのディスクも利用できる。これはベースとなる環境に対して、加えられた変更を一時的に保存するために利用されるディスクである。ベース環境に変更を加えることなく、システム各部の変更や修正などを行える。そして、実行終了後には、それらの変更をベース環境に「反映」するか、それとも「破棄」して初期状態(起動前の状態)に戻すかを選択できる。

復元ディスクの破棄の例
これはVirtual PC 2004で仮想マシン環境を終了しようとしたときに表示されるダイアログ。復元ディスクの内容を仮想ディスクに反映するか、破棄するかを選択することができる。
  復元ディスクの内容を破棄して終了する場合はこれを選択する。仮想マシン起動中の変更内容はすべて破棄され、初期状態に戻る。
  復元ディスクの内容を仮想ディスクに反映させるための指定。

 復元ディスクはほかの仮想ディスク・タイプと違い、各ディスク単位ではなく、各仮想マシン環境単位に設定する機能である。デフォルトでは復元ディスク機能は無効であるが、この状態でゲストOSからディスクに書き込むと、オリジナルの仮想ディスク・ファイル(可変もしくは固定/差分のいずれか)に対して直接データが書き込まれる。その結果、構築したオリジナルのディスク内容が更新されてしまう。

 これに対して復元ディスクを有効にしておくと、ゲストOSからの書き込みは(どの仮想ディスクに対する書き込みでも、すべて)復元ディスクに対してのみ行われ、オリジナルの仮想ディスクの内容は一切変更されない。そして、最後に復元ディスクの内容をオリジナルの仮想ディスクに反映するか、それとも破棄するかを、ユーザー自身が決めることができる。

復元ディスクの概念図
復元ディスクは仮想マシン環境ごとに有効/無効を設定できる機能。これを有効にしておくと、仮想ディスクに対する書き込みはすべて復元ディスクに対して行われ、オリジナルの仮想ディスクの内容は変更されずにそのままになる。仮想マシン環境の実行終了後、復元ディスクの内容を「破棄」すれば初期状態に戻せるし、「反映」すれば仮想ディスクに対して書き込むことになる。

差分ディスクと復元ディスクの使い分け

 差分ディスクと復元ディスクは、一見すると同じように見えるかもしれない。実際、シンプルなケースではどちらも同じように機能する。例えば古い環境(Windows 95)上であるプログラムがインストール/実行できるかどうか検証するケースを考えてみる。まずWindows 95をインストールした仮想ディスク・ファイルを用意する(これについてはあらかじめ作成されているものとし、オリジナルは変更してはいけないものとする)。テストは1回だけ実行すればよいとすると、差分ディスクを使ってテスト用仮想マシン環境を構築してもよいし、単に復元ディスク機能を有効にしてゲストOSを起動してもよい。テスト終了後、仮想マシン環境ごと、差分ディスクや復元ディスクを破棄すればよいだろう。いちいちマスタとなる仮想ディスク・ファイルを丸ごとコピーして仮想マシン環境を作る方法もあるが、それよりも素早く作業することができる。

 だがもう少し複雑なケースでははっきりと使い分ける必要がある。例えばアプリケーションのインストールなどの準備が必要な大規模なテストを行うとする。そしてテストは、準備終了後に、何度か設定を変えて同じ環境で繰り返し実行するものとする。こういうケースでは、準備が終了した段階の状態を保存しておき、テストの開始前にその状態を再現してから、テストを実行する必要がある。

 これを行うには次のような方法がよいだろう。

 まずゲストOSがインストールされた仮想ディスク・ファイルを用意し、これをベースにしてテスト環境構築用の差分ディスク(を使った)環境を作成する。この上にテスト用のアプリケーションなどをインストールし、準備する。準備が完了したら、今度は復元ディスク機能を有効にしてテストを実施する。1回実行したら、次は復元ディスクの内容を破棄して(これで元の状態に戻る)、また次のテストを実施すればよい。

 この例で分かるように、差分ディスクは環境の構築用に利用できるし、復元ディスクは実行結果をキャンセルして元に戻すために利用できる。

 差分ディスクは元の(親の)仮想ディスクと一体になって利用されるものであるから、結局のところ、機能的には容量固定の仮想ディスクや容量可変の拡張仮想ディスクと同じものと見なすことができる。

 これに対して復元ディスクは、仮想マシン環境のセッション情報を保存するための一時的な記憶領域にすぎないといえる。実行終了後に、それを「破棄」すれば元の仮想ディスク・ファイルには何ら変更を与えることはないが、それを「反映」すればオリジナルの仮想ディスク・ファイルに対して恒久的な変更を加えることになる。ワープロでいえば、編集中のファイルを破棄して終了するか、書き込んで終了するかの違いと同じである。

 大ざっぱにいえば差分ディスクは、既存の仮想ディスクをベースにして、新しく仮想マシン環境を構築したい場合に利用し、復元ディスク機能は、後で実行結果をキャンセルして(アンドゥして)元に戻したい場合に利用するとよい。実際には、容量可変/固定/差分ディスクは環境の構築用に利用し、出来上がった環境上での(テスト)実行では復元ディスクを活用するとよいだろう。もちろん環境構築時であっても、復元ディスク機能を使えば最初の状態にすぐに戻せるので、試行錯誤するようなケースでは復元ディスク機能を活用するとよい。End of Article

関連記事(Windows Server Insider)
  サーバ・システムの統合/マイグレーションを推進するVirtual Server 2005
  デスクトップOSのマイグレーションを支援するVirtual PC 2004
  Windows TIPS:sysprepで環境複製用のマスタ・イメージを作成する
  Windows TIPS:仮想ハードディスクのデフラグに注意
  Windows TIPS:物理ディスクの内容を仮想ディスク・ファイルに変換する
  Windows TIPS:フロッピー・ディスクの内容を仮想FDファイルに保存する
     
「Windows TIPS」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間