スケーラビリティや機能が向上したWindows Server 2012のHyper-V【前編】
Windows Server 2012で最も改良されたのが、仮想化の基盤となるハイパーバイザーのHyper-Vだ。Windows Server 2012で搭載された2012年のHyper-V(Microsoftでは、今回からHyper-Vにバージョン付けを廃止している。このため、Hyper-V 3.0は正式名称ではない)では、サポートする論理CPU数、メモリ容量、ディスク容量などが、以前のバージョンと比べると大幅にアップされている。
さらに、ネットワークの仮想化機能の強化、ライブマイグレーション機能の強化などが行われ、かなりの機能向上を果たした。本連載では、この新しいHyper-Vを2回にわたって解説する。
■基本性能がアップした2012年のHyper-V
2012年のHyper-Vでは、ホストでサポートする論理CPU数が320CPU、物理メモリが4TBにまで拡張されている。さらに、1仮想マシンごとの仮想CPUとしては最大64CPU、仮想メモリは最大1TBになっている。1つのホストで、最大1024仮想マシンを動かすことができる(アクティブな仮想マシン数)。
最大64ノードのクラスタが構築でき、クラスタあたり最大8000仮想マシンを動かすことが可能になっている。
これだけのスペックを持つ2012年のHyper-Vは、性能面では仮想化で先行しているVMwareのvSphereに追いついてきたといえる。
2012年のHyper-Vを動かすには、CPUにハードウェアベースの仮想化支援機能(Intel VT、AMD-V)、データ実行防止(DEP)機能が必要になる。これらの機能は、最新のIntel XeonやAMD Opteronには入っている(デスクトップ向きのCPUでもサポートされている)。このため、最新CPUを採用したサーバーでは、2012年のHyper-Vの機能を十分に生かすことができる。
仮想化を利用する上で、よく聞くのが、どのハイパーバイザーが性能的に高いのか?ということだ。Hyper-V 1.0の時などは、VMwareのvSphereと比べると機能不足、性能的に劣る部分があった。しかし、Hyper-V 2.0を経て2012年のHyper-Vがリリースされ、VMwareとの性能差はほとんどなくなってきていると感じる。
■仮想マシンのNUMA対応
では、具体的に細かな機能向上を見ていこう。
現在のx86サーバーは、2ソケットや4ソケットのプロセッサでは、NUMA(Non-Uniform Memory Access)アーキテクチャを採用している。このアーキテクチャでは、複数のCPUコアを持つプロセッサごと、メモリを持っている。
このため、NUMAアーキテクチャのサーバーで、すべてのプロセッサ、メモリを均一に仮想化してしまうと、最悪の場合、仮想CPUが複数のプロセッサにまたがったり、仮想メモリが複数のプロセッサが管理しているメモリにまたがってしまったりする。ある仮想マシンが使用するリソースが複数のプロセッサにまたがっていると、プロセッサ間の通信が増え、パフォーマンス的に問題になる。
そこでWindows Server 2012では、仮想マシンでもNUMAアーキテクチャを意識した設定を用意している。これにより、仮想マシンが同じプロセッサ、メモリ上で動作できるため、メモリアクセスが低下することがなくなる。
特に、メモリアクセスのパフォーマンスによって性能が左右されるデータベースにとっては、大きなメリットとなる
もちろん、これまでのように、ノードをまたがったメモリを使用することも設定により可能ではある。
NUMAアーキテクチャは、CPUとメモリがワンセットになったNUMAノードが複数ある。仮想マシンが、NUMAノードを越えてリソースを使うとパフォーマンスが悪くなる。ノード間の通信はロスが大きい | 仮想マシンでは、NUMAノードの構成が用意されている。NUMAを指定すればNUMAノードにチューニングされた仮想マシンが作れる |
■Dynamic Memoryの強化
Windows Server 2008 R2のHyper-V2.0から、仮想マシンのメモリを動的に割り当てるDynamic Memoryという機能が搭載されている。
Dynamic Memoryでは、仮想マシンが使用するメモリの最大値を設定しておくことで、その値の中で仮想マシンが必要とするメモリを割り当てる。つまり、仮想マシンが必要とするメモリをその都度割り当て、必要がなくなれば縮小していく。これにより、同じホストでより多くの仮想マシンを動かすことが可能になった。
Windows Server 2012では、Dynamic Memoryの機能に最小RAMというオプションが付けられた。最低限確保するメモリ量を設定することで、ハードウェアの利用効率をアップし、さらに多くの仮想マシンを動かすことが可能になった。
もう一つ追加されたのが、「スマートページング」というメモリ管理技術のサポートだ。Windows OSは、起動時にある程度の容量のメモリを使用する。しかし、いったん起動すると、起動時よりも少ないメモリで動作する(メモリに負荷のかかるアプリケーションを動かさない限り)。
もし、ホストで多くの仮想マシンが動作していて、ある仮想マシンの再起動に必要なメモリが確保できない時、スマートページング機能を使うことで、一時的にディスクを仮想メモリとして使用することが可能になる。
これにより、仮想マシンで再起動が起こった時に、メモリ不足により再起動できなくなるという状況を回避する。ただし、ディスクを仮想メモリとして使用するため、仮想マシンの再起動には、通常よりも時間がかかることになる。
このためスマートページング機能は、非常時用の動作と考えた方がいい。もし頻繁にスマートページングが起こるなら、システム全体のパフォーマンス改善のために、メモリ容量を増やしたほうがよい。
Dynamic Memoryは、仮想マシンが必要とするメモリをダイナミックに割り当てる | Windows Server 2012のDynamic Memoryは、最小RAMの設定と再起動時にメモリが足りない時にディスクをメモリとして利用するスマート ページングが用意されている |
■ネットワーク関連の機能強化
・ネットワークの帯域管理(QoS)
2012年のHyper-Vでは、仮想ネットワークの帯域管理(QoS)を行うことができる。仮想NICごとに最小帯域と最大帯域を設定し、その間でのトラフィックを管理することが可能になった。
仮想NIC上でネットワークトラフィックの帯域管理をしても意味がないのでは、と思われるかもしれない。しかし、10Gigabit Ethernet(GbE)などの大容量のネットワークが普及するにつれ、1本のネットワークを分割して利用することが便利になってきた。
例えば、1つの仮想マシンに、通常のデータ通信用、ライブマイグレーション用、ハートビートなどの管理用といった、複数の仮想NICを割り当てた方が管理しやすいことが多い。
この場合、ハートビートなどの管理関連のネットワークは、それほど帯域は必要ない。データ通信用のネットワークも、よほどひんぱんに使わない限りは数百kbpsから1Gbpsあれば十分であることが多いが、ライブマイグレーションのように大量のデータを移動する場合は、さらに多くの帯域が必要になる。
このように、仮想ネットワークの帯域を管理することで、管理者にとってわかりやすいネットワークを構築することができる。
仮想NICの帯域の最大値/最小値を設定可能 |
・仮想ファイバチャネルのサポート
2012年のHyper-Vでは、仮想マシンからFC(ファイバチャネル) SANへのアクセスができるように、仮想マシンのネットワークに仮想FCを作成することができる。仮想FCでは、仮想マシンあたり最大4つの仮想HBA(ホストバスアダプタ)をアサインできる。
仮想FCでは、FCのNPIV(N Port ID Virtualization)を使うことで、仮想化をサポートしている。このため、Hyper-Vで利用できるFCのインターフェイスとしては、NPIVをサポートしていることが必須になる(Brocade、QlogicのFCが利用可能)。
仮想FCでは、ライブマイグレーション、MPIO(マルチパスI/O)などがサポートされている。
仮想マシンに仮想ファイバチャネルを設定可能 |
・Hyper-V拡張スイッチ
2012年のHyper-Vでは、仮想スイッチの機能を拡張して、サードパーティが仮想スイッチにさまざまな機能が追加できるようなフレームワークを提供している。
Ciscoは自社のネットワークスイッチと同じ管理機能を持つ仮想スイッチのNexus 1000Vを、Hyper-V拡張スイッチ向けに提供している。さらに、NECが提供するOpenFlow対応の仮想スイッチ UNIVERGE PF1000を利用すれば、OpenFlow向けの物理スイッチと組み合わせて、一括してスイッチを管理することができる。
なおHyper-V拡張スイッチでは、ネットワークスイッチを構築するだけでなく、フィルタ機能を使って、仮想環境全体をカバーするファイアウォールやアンチウイルス、アンチマルウェアなどの機能を提供することが可能になる。
この機能を利用すると、仮想マシンごとにこれらのセキュリティ機能をインストールしなくても、Hyper-V拡張スイッチに1つだけインストールすることで、システム全体を保護することができる。
個々の仮想マシンでファイアウォールやアンチウイルスなどを動作させていると、ホストのCPU負荷が高くなる。しかし、ハイパーバイザー部分で一括して各種のセキュリティ関連ソフトを動かすようになれば、仮想マシンごとに複数動かす必要がなくなるため、パフォーマンス面でも大きなメリットになる。
Hyper-V拡張スイッチは、仮想スイッチを拡張するフレームワークを提供する。このフレームワークを使うことで、サードパーティが独自の仮想スイッチやフィルタを作成可能になる | Hyper-V仮想スイッチを使うことで、パケット検査、パケットフィルタ、ネットワーク フォワーディング、ファイアウォールなどの機能が実現する |
これ以外に、ネットワーク編で解説した同じIPアドレス体系を仮想マシンで利用できるようにするネットワークの仮想化、ネットワークストレージのインテリジェント性を利用するODX(オフロードデータ転送)機能のサポートなどが行われている。
ネットワークの仮想化機能に関しては、Windows Server 2012だけだとPowerShellなどのコマンドラインで設定を行う必要がある。しかし、System Center 2012 SP1(Windows Server 2012対応)を使えば、GUIを使って設定できるようになっている。
ODXに関しては、EMCやNetApp、Dell EqualLogicなどのストレージがODXへの対応を表明している。ODXを使えば、シンプロビジョニングなどもストレージ側の高度な機能がWindows Server 2012上で利用できるようになる。
Windows Server 2012のネットワーク仮想化では、仮想環境上に同じIPアドレス体系の仮想マシンを作成することができる。それぞれが、分離してアクセスできるため、同じIPアドレスでもトラブルにはならない | ODXをサポートしたストレージを利用すれば、ストレージ内でのファイルのコピーやシンプロビジョニングなどがストレージ側のCPUを使って処理される |
■・新しい仮想ディスクVHDXのサポート
2012年のHyper-Vでは、新しい仮想ディスクフォーマットのVHDXがサポートされた。
VHDXでは、ディスク容量が最大64TBにまで拡張された(従来のVHDフォーマットは最大2TB)。さらに、VHDXメタデータ構造体に更新情報を書き込むことで、電源障害時にもディスクがダウンしても、データが破損しないように保護される。
もう一つ大きいのは、VHDXフォーマットは4KBのラージセクタ・ディスク・フォーマットをサポートしたことだ。これによって、仮想ディスクでも4KBセクタに対応したアプリケーションが利用でき、4KBのメリットを最大限生かすことができるようになる。
もちろんVHDXフォーマットであっても、容量可変、容量固定、物理HDDを直接利用、といった3つのディスクタイプが利用できる。最もアクセス性能が高いのは、物理HDDを仮想マシンに直接マウントする方式だが、1つの仮想マシンに物理HDDをマウントするため、ほかの仮想マシンからは利用できないというデメリットもある。
ただ、Windows Server 2008 R2のHyper-V 2.0から、容量可変、容量固定でも高いアクセス性能を示すようになっている。このため、データベースなどのディスクアクセスが重視されるアプリケーションでなければ、容量可変ディスクでもパフォーマンス面では問題にならないだろう。
また仮想ディスク(VHD、VHDX)は、親子関係がある差分ディスクを作成することができる。この差分ディスクを利用すれば、VDI(Virtual Desktop Infrastructure)などを構築する場合、マスターイメージを作成し、このマスターイメージとの差分をそれぞれの仮想ディスクとして利用することが可能だ。
さらに、仮想ディスクのスナップショットをオンライン状態(仮想マシンが起動している状態)で取ることができる(VSS機能を利用)。スナップショットにロールバックポイントを設定しておけば、いつでも元に戻すことが可能だ。ロールバックポイントは、複数作成できるため、ユーザーはさまざまなシナリオを試すことができる。