HCIにおけるデータ処理のオーバーヘッドとは?
HCI(ハイパーコンバージドインフラ)は、サーバーの内蔵ストレージをSDSで仮想的に外部ストレージに見立てて複数のサーバーで共有化するアーキテクチャーです。外部ストレージを排除して高価なディスクアレイ装置に掛かるコストを削減し、管理性を向上させることがメリットとなっています。
ただ、そこで気にしなければならないことがいくつかあります。ひとつは、ストレージ機能をサーバー内に収めたので、その分サーバーがデータの処理を行わなければならいということを忘れてはならないということです。いわゆる3層アーキテクチャーの場合は、外部ストレージのコントローラー(ヘッド)がデータの処理を担いますので、サーバーはアプリケーション処理に専念できます。それがHCIの場合はサーバーが全ての処理を行うということです。
そのため、いままで3層アーキテクチャーで想定していたCPUパワーよりもデータ処理のオーバーヘッドを考慮する必要があるということです。HCIにおけるデータ処理として一番重要なところは、データを複数のサーバーに分散して格納するためのファイルシステムです。その中にはデータにRAIDやイレイジャーコーディングなどで冗長化させるための計算や、場合によっては圧縮や重複排除の演算などがあります。
このデータ処理のオーバーヘッドのサイジング方法はHCIによって異なります。VSANなどの場合は、ホスト単位で最大10%がオーバーヘッドになると言われています。また、NUTANIXの場合、Controller VM (CVM)を各サーバーに配置する必要があり、8個のvCPUが必要になります。
そして新しいタイプのHCIであるDatriumの場合のオーバーヘッドはどのように考えられるのでしょうか?通常はFastモードという状態で稼働しており、この場合はホスト単位で最大20%がオーバーヘッドとなります。くわえて、DatriumはIOの超高速化が売りになっていますので、もっとCPUリソースを使って高速化したいというユーザーに対しては「Insaneモード」というものを用意しています。これは以下のような考えに基づいて用意されています。
- ホストに搭載するSSDは比較的安価であり、その安価なリソースを最大限に使いたい。
- Datriumはサーバーの制約がないため、できるだけ高クロックでコア数の多いCPUを搭載したサーバーを用意すれば、その分IO処理が高速になる。
- ホスト上のリソースが枯渇しそうな場合は、DRS(Distributed Resource Scheduler)でのEVC(Enhanced vMotion Compatibility)クラスターを構成することで余裕のある別のホストに配置させる。
Datriumは通常稼働でも十分に高速なのですが、データ処理のCPUリソース割当を高くすることでダイナミックに高速化させるモードがInsaneモードです。これはホストコアの最大40%を予約します。このモードは、オラクルやSQLサーバーのようなデータベース処理、データウェアハウスのアプリケーション、ビッグデータのような大量のバッチ処理、ログの解析などのようなアプリケーションにおいて有効です。サーバーの持つハードウェアパフォーマンスを最大限に引き出すことができます。そしてモードの変更はシステム稼働中にオンラインで切替可能です。
この機能の実際の切り替え方と効果については、この2分間の短いビデオをご覧ください。
通常のFastモードとInsaneモードでベンチマークした結果をご紹介します。1ホストだけでの結果で、横軸がCPUコア数、縦軸がIOPSです。
グラフを見ればお分かりのように、まずFastモードとInsaneモードでは2倍近くの性能向上を実現しています。また、CPUコア数が増えればその分パフォーマンスが上がります。この結果は1ホストだけですので、もっとIO数を増やしたい場合はホストを追加することで可能となります。Datirumは最大128台までクラスターを組むことができます。
当初よりInsaneモードを使う前提である場合は、ホストのCPU、メモリ、SSDのサイジングを見合ったものにしてください。また、ESXのCPU使用率は合計で80%以下に抑えるのがベストプラクティスですので、ホストがVMの平均CPU使用率の40%未満でない限り、Insaneモードを適用しないことをお勧めします。
このように、HCIにおけるオーバーヘッドは、ネガティブに考えるよりも有効活用して、より高速な処理ができるように考えたほうが良さそうです。そのオーバーヘッドを予め想定した上でシステム設計を行うことで、快適な仮想インフラを運用できるようになるはずです。