検索
連載

第6回 Hyper-Vのスナップショット機能を使う仮想PCで学ぶ「体当たり」Windowsシステム管理(3/3 ページ)

Hyper-Vのスナップショット機能を使えば仮想環境の構築や再現が素早くできる。HV 2.0での改善点についても解説。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
前のページへ |       

仮想マシンの設定変更

 仮想マシンのメモリ・サイズやネットワーク・インターフェイスの変更、ディスクの追加など、その設定を変更したいことがある。いずれのスナップショットを右クリックしても、ポップアップ・メニューから[設定]が選択できるが、その内容を変更できるのは現在実行中の仮想マシン、つまり[現在]というラベル(緑の三角)が付けられている仮想マシンだけである。しかも仮想マシンが実行中の場合はほとんど変更できないので、例えばメモリ・サイズなどを変更したければまず仮想マシンをシャットダウンする必要がある。それ以外のスナップショットでは、内容を確認することはできるが、変更することはできない。

スナップショットの削除

 次はスナップショットの削除についてみてみよう。ソフトウェアをインストールしたり、パッチなどを適用したりする場合、何らかの不具合が生じてもすぐに元に戻せるように、途中でいくつかのスナップショットを作成しておくことは普通である。せっかく簡単にスナップショットが作成できるのだから、利用しない手はない。

 テスト作業などが順調に進み、もう戻る必要がないスナップショットになったら、それを削除するとよい。ディスク領域の節約にもなるし、差分ディスク(.avhdファイル)のネスト段数が減るのでパフォーマンスの向上も期待できる。スナップショットを削除するには削除したいスナップショットを右クリックし、ポップアップ・メニューから[スナップショットの削除]か[スナップショットのサブツリーの削除]を選択すればよい。


スナップショットの削除
不要になったスナップショットは削除すれば、ディスク領域を解放できる。
 (1)このスナップショットを削除してみる。まずこれを右クリックする。
 (2)これを選択すると、スナップショットが1つだけ削除される。
 (3)これを選択すると、指定したスナップショットのツリーが全部(ツリーの末端まで)削除される。

 これを実行すると、指定されたスナップショットやその下位にあるスナップショットがまとめて削除され、使われていたディスク領域などが解放される。

 ただし状況によっては、すぐにファイルが削除されないこともある。以下、それについてみていこう。

 今、次のようなスナップショットの履歴ツリーがあるとする。


削除対象のスナップショット履歴の例
スナップショット削除すると、その構成に応じて内部での動作が異なる。全部で3つのケースがある。
 (1)これはツリーの末端のスナップショット(子ノードがないスナップショット)。
 (2)子ノードが1つだけあるスナップショット。
 (3)子ノードが2つ以上あるスナップショット。この例では「snapshot 2」の下には3つのスナップショット、「snapshot 7」の下には2つのスナップショットがある。
 (4)これはツリーの末端のスナップショットと同様の扱いになる。つまり、「snapshot 10」は、子ノードが1つあるスナップショットと同じになる。

 いくつかスナップショットがあるが、どれを消すかによって内部的な処理は少し異なっている。スナップショットには以下の3種類があり、それぞれ処理が異なる。いずれもHyper-Vが内部で自動的に処理してくれるため、ユーザーがその詳細を知る必要はないのだが、.avhdがいつマージされ、いつ消去されるのかを知ることは、Hyper-Vを活用する上でも重要だと思われるので、ここで解説しておく。例えばマージ処理をすぐに実行させたい場合は、スナップショットを削除後に仮想マシンをシャットダウンする方がよいといったことが理解してもらえるだろう。

  • ケース1―ツリーの末端のスナップショットの削除
      一番簡単な例は、履歴ツリーの末端にあるスナップショットの削除である。画面中の(1)(snapshot 4、6、8)が相当する。これらのスナップショットの下位には子のスナップショットは存在しないため、単純にそのスナップショットが持つファイル(.xmlや.avhd、.vsv、.binファイル)が削除される。スナップショットは差分ディスクのチェインによって実現されていることを思い出してほしい。これらのスナップショットに依存している別のスナップショット(子の差分ディスク)は存在しないため、これをいきなり削除しても何にも影響を与えない。
  • ケース2―下位ノードを1つだけ持つスナップショットの削除
      下位に1つだけ子ノードを持つスナップショットを削除する場合は、スナップショット(差分ディスク)の削除ではなく、実際にはマージ(結合処理)が行われる。画面中の(2)(snapshot 1、3、5、9、10)が相当する。「現在」も内部的には1つのスナップショットと同様に扱われるので、(4)の1つ上にあるsnapshot 10もこのケースに該当する。「スナップショット1→スナップショット2→スナップショット3」といった単純な履歴なら、「スナップショット1」と「スナップショット2」が該当する。
      このようなスナップショットを削除する場合は、削除する親スナップショットに含まれている差分ディスクの内容を子スナップショットの差分ディスクにマージすればよい。具体的には、例えば「スナップショット1→スナップショット2」から「スナップショット1」を削除するなら、スナップショット1の持つ.avhdファイルに対して、スナップショット2の持つ.avhdファイルの内容を、同じブロック同士で上書きする(下位ノードの方が新しい内容を持っているため)。これにより、両者をマージした新しい.avhdファイルができるので、これをスナップショット2の差分ディスクとする。
      削除するスナップショットが複数ある場合は、これらの処理が順番に行われる。
  • ケース3―2つ以上の下位ノードを持つスナップショットの削除
      これはケース1にもケース2にも該当しないケースであり、2つ以上に枝分かれしたスナップショット・ツリーが存在する場合に該当する。画面中でいえば(3)(snapshot 2、7)が相当する。
      このようなスナップショットはそのまま単純に削除してはいけないが、かといって下位ノードにマージされることもない。もしケース2のように下位ノードにマージしようとすると、同じ内容をそれぞれにコピーしなければならないため、全体的なディスク使用量が大幅に増加することになるからだ(ケース2の場合は、マージ後に全体的な使用量は減ることはあっても、ほとんど増えることはない)。ディスクフルのエラーを引き起こす可能性があるため、このケースでは画面表示上からは削除されるが、内部的には.avhd差分ディスクはそのまま残され、差分ディスクの依存関係もそのまま残されることになっている。
      ただし、その後スナップショットが整理されて枝分かれが解消され、下位ノードが1つだけになると、Hyper-Vはその状況を検出して、先のケース1やケース2の処理を自動的に行う。

 ところでこのケース2の削除処理(実際には下位ディスクへのマージ処理)は、仮想マシンが停止中の場合にのみ実行されることになっている。差分ディスクとして使いながらマージ処理も行うと、システムに対して大きな負荷がかかるし、時間も余計にかかるからだ。スナップショットを削除した後は、(実行中の仮想マシンを停止し)、削除処理が完了したかどうかを確認してから起動するようにしよう。削除処理の進捗状況は、Hyper-Vマネージャの「状況」欄に「結合処理を実行中(nn%)」などと表示されるので、確認できる。

スナップショットのエクスポート

 スナップショットを多数作成して利用していると、そのうちの1つをベースにして別の仮想マシン環境を作成したいことがある。例えばActive Directoryの構築が終わったところでそれを保存しておき、別のActive Directoryアプリケーションの評価に使いたい、といった場合などだ。もちろん、コンピュータ名の衝突などがあるので、そのスナップショットを同時に起動すると問題になることがあるかもしれないが(これはコンピュータ名を変えれば済む話なので簡単だ)、いちいち最初からOSのインストールや環境構築を行うよりも簡単なので、ぜひ活用したいところである。

 このような場合、従来のWindows Server 2008のHyper-V 1.0では、仮想マシン全体をエクスポートしてから自分自身でインポートし、不要なスナップショットを削除するという操作を行っていた。これには時間も手間も余分なディスク領域も必要である。

 Windows Server 2008 R2のHyper-V 2.0では、仮想マシン全体(全スナップショットも含む)のエクスポートのほか、個別のスナップショットだけをエクスポートできるように改良された。そのため、最小限の操作で特定の仮想マシン環境をコピーして作成できるようになっている。


スナップショットのエクスポート
Hyper-V 2.0では、特定のスナップショットだけを選んでエクスポートできるようになっている。
 (1)このスナップショットをエクスポートするには、右クリックする。
 (2)これを選択する。

 なお、仮想マシン全体をエクスポートする場合は、仮想マシンの実行をいったん停止しておく必要がある(実行中の場合は、[エクスポート]メニューが表示されない)。しかしスナップショットのエクスポートは、仮想マシンが実行中かどうかにかかわらず、常に実行可能である。

スナップショットのインポート

 Hyper-V 2.0ではインポート機能も改善されている。Hyper-V 1.0では、仮想マシンをインポートする場合、インポートされたファイル群をコピーせずに、その場所に置いたまま仮想マシン環境として利用していた。

 例えば、ある仮想マシン環境を外付けのリムーバブル・ハードディスクにエクスポートしたとする。そのディスクを別のサーバに接続してインポートすると、リムーバブル・ハードディスクの上に置かれた.vhdファイルなどをその場所に置いたままHyper-V 1.0の仮想マシン環境として利用するのである。インポート処理に要する時間は短くて済むが、パフォーマンス的には問題が多いだろう。しかも、一度インポートした仮想マシン環境のファイルは内容が変更され、もう二度とインポートできなくなっている。これでは非常に使いづらいので、通常は手動でどこか高速な内部ハードディスクへいったんコピーし、それをインポートするといった操作を行っていた。

 これに対してHyper-V 2.0ではインポート機能が改良され、インポート時にオリジナル・ファイルをコピーできるようになった。このチェック・ボックスをオンにしておくだけで、必要なファイルがデフォルトの格納場所へすべてコピーされる。いちいち事前に手動でコピーする必要はない。


仮想マシンのインポート
仮想マシンのインポート時に、オリジナル・ファイルをコピーする機能が追加された。
 (1)エクスポートで出力した先を指定する。
 (2)仮想マシン設定を元のままインポートする。
 (3)新しい仮想マシンとしてインポートする。
 (4)これをオンにしておくと、オリジナルのファイルはそのまま残る。オフのままだと(これは従来の設定)、インポートしたフォルダをそのまま利用する。


 今回はHyper-Vのスナップショットについて解説した。復元ディスクよりも高機能なのは当然として、Hyper-V 2.0になって機能も改善され、ますます使いやすく、便利になっている。ぜひとも活用していただきたい。


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

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

Copyright© Digital Advantage Corp. All Rights Reserved.

前のページへ |       
ページトップに戻る