ESXiとHyper-Vを同時に触るという、なかなか稀有な体験を最近しました。
ハイパーバイザーという括りでは同じものですが、当然違うところもいくつかあります。
備忘録も兼ねて、異なる点をまとめてみました。
忙しいあなたのためのまとめ
- ESXiはvCenterで一括管理しクラスタの概念があるが、Hyper-Vにはない
- Hyper-VはWindows OSの資産を活用して動いているが、ESXiはあくまで簡易なもののみ
- Hyper-Vにのみ動的メモリの割り当ての機能がある
- NUMAの考え方がESXiとHyper-Vで異なる
どんなところが違うのか?
ESXiとHyper-Vの違いとして分かりやすく顕著に出ているのが、クラスタの概念の有無と、動的メモリの割り当てです。
一つずつ、違いを見ていきましょう。
1. ESXiはvCenterで一括管理しクラスタの概念があるが、Hyper-Vにはない
ESXiを触ったことがある方なら、ほとんどの方がvCenterを使ってクラスタを構成したことがあるのではないでしょうか。
また、ホストごとに厳密な仮想マシンのホスト数を設計されていないケースもあるでしょう。
Hyper-Vでは、Hyper-Vの管理で複数のHyper-Vホストを登録して管理はできますが、クラスタの機能はないため、複数台のESxiホストを横並びで管理しているのと同じ状態になります。
つまり、ホストごとに、物理CPU数・メモリ数を超えないように仮想マシンの配置を行う必要があります。
vCenterを使ってクラスタを構成されているケースでは、クラスタ全体でvCPU数・メモリ割り当ての不足が出ないように、かつクラスタに登録するESXiも1台程度は余裕を持って割り当てる、という設計をされていることが多いと思うのですが、Hyper-Vではコスト固定で起動の上、何かあった場合は手動で起動ホストを切り替える必要があり、自前で設計が必要な箇所が出てくることになります。
2. Hyper-VはWindows OSの資産を活用して動いているが、ESXiはあくまで簡易なもののみ
Hyper-Vは、インストールの仕方やWindows Serverなどからの見え方もあり、Windows Serverの一機能やアプリケーションのように見えてしまうのですが、Hyper-Vの上に管理用のWindows OSがrootにある、という構造となっています。Microsoftのページも併せてご覧ください。
ことこの点についてはESXiも同じです。VMwareのページも併せてご覧ください。
どちらもType 1 ハイパーバイザーと呼ばれる分類になり、ハードウェアの上にハイパーバイザーがあって、OSの上にハイパーバイザーがある構造ではありません。
ハイパーバイザーを管理するOS部分がHyper-VではWindows OSを利用しているため、起きやすい誤解ですね。
ESXiにも、インストールされた物理ホスト上でIPアドレスなど最低限の設定をする機能がありますが、CUIで簡易なものであり、ドライバもESXi向けのもので動いています。
3. Hyper-Vにのみ動的メモリの割り当ての機能がある
Hyper-Vには仮想マシンに「動的メモリ(Dynamic Memory)」の機能があります。
仮想マシンがアイドル状態の時に仮想マシンの割り当てるメモリを下げて回収し、別の仮想マシンに割り当てられるようにするもので、物理ホストの集約率に寄与する、という目的のものです。
メモリを多く使うケースの一つが仮想マシンの起動ですが、メモリが足りない時はページファイルを生成してメモリ不足を解消しようする動きをするため、使い方次第ではパフォーマンに影響してしまいます。
検証環境で全ての仮想マシンを起動することはない、などの限定的な用途に絞って使うと良いでしょう。
4. NUMAの考え方がESXiとHyper-Vで異なる
NUMAとは、Non-Uniform Memory Accessの略で、CPUが管理している物理メモリがまたがない範囲のことを指す言葉です。
Microsoftの解説もご参照ください。※こちらは英語の記事となっており、日本語はありません
例えばですが、物理CPUが2つで1つのCPUあたり8コア、物理メモリが128GBとした場合を考えてみましょう。
CPU1つが管理するメモリが半分なら64GBとなります。仮想マシンを作成した時に70GBのメモリを割り当てると、CPU1つが管理できるメモリの量を超えるため、もう一つのCPUが管理するメモリを使うことになります。これがケースの一つ目。
仮想マシンにvCPUで9コア・仮想メモリを60GBとした場合、今度はメモリが物理CPUの管理範囲を超えないものの、9コア目は自分の管理する範囲のメモリを使わないため、もう一つのCPUが管理するメモリを使うことになります。これがケースの二つ目。
このどちらもが、「NUMAをまたぐ構成」と言われる訳です。
Hyper-Vは introduced support for projecting a virtual NUMA topology into Hyper-V virtual machines. とドキュメントにもある通り、仮想マシンにもNUMAを見せるように作られています。つまり、ゲストOSがNUMAを意識して動くことを期待した作りです。
ESXiは仮想マシンが起動した時点で、可能な限りNUMAをまたがない仮想マシン配置をしようとする動きを自動で行います。クラスタに仮想マシンの配置を任せた場合、タイミングによって起動ホストが異なる、というシーンを見かけたことのある方がいらっしゃると思うのですが、それはこの初期配置の動きによるもの、という訳ですね。
こちらに詳しい解説があります。
ここからは私の考察ですが、vCenterのように複数の物理ホストを束ねることができるESXiは仮想マシンの配置を自由に選びやすく、一方Hyper-Vはホスト単位の管理色が強いことからホスト内で完結しようという動きが強い、という見方をしています。
仮想マシンの配置に対する考え方を知っておくことで、パフォーマンスへの影響も最小限にできるので、押さえておけると良いですね。
まとめ
ESxiとHyper-Vの違いに焦点を当てて、まとめてみました。
NUMAの考え方の違いやクラスタの有無など、様々な差があることが分かりました。
それぞれの特性の違いを知って正しく運用することで、パフォーマンスへの影響や、障害時の対応にも役立てることができますので、まずは違いを知るきっかけになれば幸いです。