Windows Server 2008 R2では仮想化環境がHyper-V 2.0になる。素早い移行を実現するライブ・マイグレーションやパフォーマンスを向上させる機能について解説。
2009年末までにリリースされる予定の次期Windows Server OS、Windows Server 2008 R2に組み込まれる仮想化実行支援環境(ハイパーバイザ)の名称。Hyper-Vは当初はWindows Server 2008とともにリリースされたが(実際には別途ダウンロードしてインストールする必要があった)、Windows Server 2008 R2ではさまざまな改善が行われ、機能が向上している。Hyper-VはWindows Server 2008に含まれる機能の1つであり、特に独立したバージョン番号は与えられていないが、当初のものと区別してHyper-V 2.0と呼ばれることが多い。
Hyper-V 2.0の主な特徴は次の通りである。
以下、順に見ていく。
Windows Server 2008 R2ではVDI(Virtual Desktop Infrastructure)機能をサポートしたことなどにより、仮想化機能の重要性が増している。また、マルチコア/メニーコアCPUといったハードウェアの進化などに合わせて、サポートする論理プロセッサ数が以前のものよりも強化されている。
仮想化技術 | Server 2008 SP1 | Server 2008 SP2 | Hyper-V 2.0 |
---|---|---|---|
論理プロセッサの最大数 | 16 | 24 | 64 |
作成可能な最大仮想マシン数 | 128 | 192 | 384 |
全仮想マシンで利用可能な合計論理プロセッサの最大数 | 128 | 192 | 実際の論理プロセッサ数の8倍まで。最大512(=64×8) |
各仮想マシンで利用可能な最大論理プロセッサ数 | 4 | 4 | 4 |
サポートされているプロセッサ数 「Server 2008 SP1」は最初に出荷されたWindows Server 2008(SP1適用済み)のHyper-V、「Server 2008 SP2」はWindows Server 2008 SP2で更新されたHyper-Vをそれぞれ表す。1つの仮想マシンで利用可能な最大論理プロセッサ数は4つまでだが(実CPUのコア数が4未満の場合は、その数に制限される)、サポートするホストCPU数や作成可能な仮想マシン数は強化されている。 |
Hyper-V 2.0の最も特徴的な機能がこのライブ・マイグレーションである。Hyper-V 2.0のサーバ・システムをクラスタ化して実行すると、稼働中の仮想マシンを実行状態のまま、クラスタのノード間で素早く移動させることができる。前バージョンのHyper-Vにあったクイック・マイグレーションを改良してダウンタイムを短くし、さらに管理もしやすくなっている。
例えばメンテナンスのためにHyper-Vを実行しているサーバを停止したり再起動したりする場合、従来ならばそのHyper-V上で実行されている仮想マシンも一時停止するか、シャットダウンしていた。そしてサーバの再起動後、仮想マシンの実行を再開していた。その間、仮想マシンが停止するだけでなく、ネットワークなども停止するので、仮想マシンが提供していたサービスが停止することになる。
これを改善するために、Hyper-Vサーバをクラスタ化したのがクイック・マイグレーション機能である。仮想ディスクを共有ディスク上に置き、クラスタを構成するHyper-Vサーバからそれを利用する。Hyper-Vサーバを停止する場合は、実行中の仮想マシンを一時停止して、その状態を共有ディスク上に保存する。そして保存された仮想マシンの実行イメージを別のHyper-Vサーバへロードし、実行を再開する。共有ディスクへの保存と再ロードの間だけはサービスが停止するが、仮想マシンの実行はそのまま継続できる。
Hyper-V 2.0のライブ・マイグレーションでは、Windows Server 2008 R2の新機能であるクラスタ共有ボリューム(CSV、後述)機能を使って、短いダウンタイムを実現してマイグレーションを行う。従来のクラスタ・ディスクと異なり、CSVでは同時に複数のHyper-V 2.0サーバからアクセスできるようになっている。従来のクラスタ・ディスクは排他的にしかボリュームにアクセスできなかったので、マイグレーションを行う場合は、移行元のサーバを完全に停止してから移行先のサーバの実行を開始していた。これに対してCSV環境のライブ・マイグレーションでは、移行元サーバで仮想マシンを停止後、その実行環境(メモリ・イメージ)をネットワーク経由で移行先サーバへオンメモリでコピーし、すぐに移行先サーバ上で実行を再開する。共有ディスクへの状態の保存やロードなどが不要になるので、素早いマイグレーションが可能になっている。
クラスタ共有ボリューム(CSV:Cluster Shared Volume)は、Windows Server 2008 R2の新機能であり、主にHyper-V 2.0で利用されるために用意されている。
従来の共有ディスクでは、ディスク上に論理的な区画を設定し、クラスタを構成するサーバからそれを排他的にアクセスしていた。1台のアクティブなサーバがある論理区画へアクセスしていると、ほかのサーバはその区画をアクセスできない。そこで仮想マシンごとに1つの区画を割り当てておき、これを利用するサーバを切り替えながら利用していた。
CSVでは管理の方法を変更し、1つの区画を複数のクラスタ・ノード間で同時に共有して利用できるようにしている。ライブ・マイグレーションでは、2つのHyper-V 2.0のサーバ間で仮想ディスク・ファイル共有することにより、素早いマイグレーションを実現している。
またこの同時アクセス可能という利点を生かして、1つのCSV上に多くの仮想ディスク・ファイルを集中して保存し、ストレージを有効利用することも可能である。差分ディスクやスナップショットなどを活用すれば、少ないディスク容量でも多くの仮想マシンをホストできる。そこで複数のHyper-V 2.0サーバで高速な1台のCSVを共有すれば、必要なディスクのサイズを最小限に抑えながら、多数の仮想マシンをホストすることができる。
Hyper-V 2.0では仮想マシンを実行させたままSCSI接続の仮想ディスクを追加する、ホットプラグが可能になっている。仮想マシンを停止する必要がないので、サービスを停止することなく、ディスク容量を拡大するといった操作が可能になる。
Hyper-Vでクラスタ・システムを構築する場合、場合によっては利用するハードウェア(特にCPU)に差があることがある。CPUは製品のグレードやリリース時期によってサポートしている機能が異なることがあるからだ。Hyper-VやVirtual Serverなどの仮想環境では、仮想マシンのCPUは、実際のホストCPUがそのまま利用できるようになっているのが普通である。そのため、サポートしている機能が異なるCPU間でマイグレーションを行うと、プログラムの実行途中でCPUの機能が変わることになり、エラーになる可能性がある。
このような事態を避けるため、Hyper-V 2.0では、仮想マシンで利用可能なCPUの機能をあらかじめ制限し、マイグレーションでエラーを起こさないようにできる。各CPUで共通の機能だけを利用可能にすることにより(例:マルチメディア演算機能のSSE4を無効にするなど)、問題のある機能の利用を禁止できる。ただしこの機能が有効なのはIntel CPUかAMD CPU同士の場合に限られる。AMDとIntel間でのマイグレーションは、CPUの機能が違いすぎるためか、サポートされていない。
Second Level (Address) Translation(SLAT)とは、通常のページ変換テーブルに加えて、もう1つ別のページ変換テーブルを用意することにより、仮想マシンの実行パフォーマンスを向上させる機能である。
CPUがプログラムを実行する場合、ユーザー・プログラムやOSカーネルがアクセスするメモリ・アドレスはCPUの持つページング機能によって最終的に物理メモリ・アドレスに変換され、実際の物理メモリへのアクセスが行われる。だが仮想マシンの場合、そこで得られた物理メモリ・アドレスはあくまでも仮想マシンごとに独立した、論理的なアドレスに過ぎない。実際の物理メモリは複数の仮想マシンやホストOSなどで共有しているため、各仮想マシンが勝手に物理メモリへアクセスするわけにはいかないからだ。
そこでHyper-Vのような仮想実行環境では、各仮想マシンで得られた仮の物理メモリ・アドレスを、本当の最終的な物理メモリ・アドレスへ変換するために、何らかの処理を行っている(一般的には、もう1段、変換のためのテーブルを通す)。だがこれはソフトウェアで処理するため、そのオーバーヘッドは少なくない。
この仮想アドレスの変換処理を高速に行うために、最新のCPUではSecond Level Translation(SLAT)と呼ばれるハードウェア支援機能をサポートしている(IntelのEPT、AMDのRVIなど)。SLATの変換テーブルを使って、仮想マシンごとの「仮想的な」物理アドレスを「本当の」物理アドレスに変換するのである。これにより、仮想環境ではない場合とほぼ同等のメモリ・アクセス速度を実現できる。Hyper-V 2.0では、CPUの持つこの機能を利用できるようにしている。
ネットワーク関連でもいくつかの機能強化が行われている。
仮想マシンのネットワーク・インターフェイスにおいて、標準(1500bytes)以上の、大きなサイズのフレーム(〜9014bytesまで)を扱う機能がサポートされた。ギガビット・イーサネットなどにおいて、効率よく通信するために必要な機能である(ただしホストの物理インターフェイスがサポートしている場合のみ利用可能)。
VMQ(Virtual Machine Queue)やTCP Chimneyはいずれもネットワーク処理(TCP/IP処理)のパフォーマンスを向上させるために利用される機能である。ホストの物理インターフェイスがこれらの機能をサポートしている場合は、仮想マシンでもこの機能が利用できる。仮想環境では、実際には1つしかないネットワーク・インターフェイスで複数のホストあてのパケットが多数送受信されているが、これを各VMへ効率的に振り分け、ホストの負荷を抑える機能がVMQである。「TCP Chimney」はネットワーク・インターフェイスでTCP/IPの処理を一部担当して、ホストの負荷を抑える機能である。
「用語解説」
Copyright© Digital Advantage Corp. All Rights Reserved.