仮想化におけるワークロードのアイソレーションとパフォーマンスのローカリティの重要性
サーバー仮想化環境で使われる一般的な外部ストレージは、ストレージコントローラー(ヘッドとも言います)が複数の仮想サーバーから要求される処理を一挙に担います。この共有のリソースは、クリティカルなワークロードだけを切り出してSLAを保証することができません。また、IO負荷が予想以上に高くなる仮想サーバーがあっても特定することが難しく、トラブルシューティングに時間がかかってしまうことが多々あります。そのような"暴れる"仮想サーバーを「うるさい隣人(ノイジーネイバー)」と呼びますが、ビジー状態の仮想サーバーは周りから共有リソースを奪い取ってしまうため、他の仮想サーバーの性能が低下する恐れがあります。
このような状況を回避するためには、ある程度余裕を持ったストレージコントローラーを用意したり、LUNのサイジングを細かく行ったり、IOのチューニングを行います。これらの対策はコストや工数が余計にかかってしまうことは目に見えています。
そのような大きな課題への対策を考えているITインフラ製品がいつくかあります。たとえば HCIのDatrium DVX ではワークロードやパフォーマンスを他のリソースから分離させることができます。今日はその仕組みについてご紹介します。
うるさい隣人を隔離してローカルにて処理を行う
Datrium DVXホスト(サーバー)は最大128ノードまでスケールアウトしますが、実はサーバーは個別に稼働しており、例えて言うならば個人所有の自家用車のような動きをします。同じように共有ストレージは乗合バスのような動きだと思っていただければわかりやすいかもしれません。
例えば30人乗車できるバスに20人の団体様が乗車してしまったら、あとから乗ろうとしたお客様はバスを見送らなければならないかもしれません。また立っている乗客もギュウギュウ詰めで身動きが取れなくなりそうですね。
それではDatrium DVXがどのようにアイソレーションを取っているのかご説明します。
1. ホストでのパフォーマンスローカリティを実現
Datrium DVXはデータの処理全てを1台の物理サーバー上で行うようにしています。ホストを跨ったノイジーネイバーやキューイング遅延の問題が起きません。
- 読み出し(リード)のデータは全てサーバー内にあるローカルSSDに保存されます。サーバーノードにまたがって分散保存するようなことしないので、サーバー間でのデータのやり取りが発生しません。リードの際にネットワークを使わない分レイテンシーが短くなります。
- vMotionなどで一時的にローカルSSDにリードデータがない場合は、移動元のサーバーにあるSSDから読み出しを行うようにして、できるだけ性能を維持するようにします。リードデータが移動先のサーバーで用意できた後はローカルでの処理を行うようになります。
- 書き込みの処理も、ローカルのサーバー内で行います。別のサーバーのリソースを使いません。よって、仮想マシンをホストで分離すれば、プロビジョニングも個別に行うことができます。
2.ハードとデータの障害の切り分けが簡単
- DVX Data Node:すべてのコンポーネントが2重化されているため、システムの稼働中に障害が発生しても自動的にフェールオーバーが行われます。
Datrium DVXのサーバーは一般的なハイパーコンバージドインフラ(HCI)と異なります。サーバー内に保存してあるデータに障害が発生しても、永続データのコピーが DVX Data Nodeにありますので、安全に復旧できます。書き込みは最初にData Node上にあるNVRAMに行われます。
- Datrium DVXの最小構成はサーバー1台です。他のHCIの場合、データの安全性を担保するためにホスト間で相互に書き込みを行うため、最小で3台構成を取ります。Datrium DVXはローカルで処理するアーキテクチャーを取っていますので1台でも稼働します。
- ホストの障害が発生したとしても、データフォールトトレランスが低下することはありません。
- データの再構築やマイグレーションをしなくてもホストを安全に停止させることができます。
3. DVX Softwareの障害分離
ホスト上のDVX Softwareはハイパーバイザーにインストールされますが、ESXカーネル外にあります。DVX Softwareが特定のホストで障害を起こした場合は再起動が必要となりますが、ホスト上のESXは存続し他のホストにも影響を与えることはありません。
このように、システム内のあらゆるポイントでアイソレーションとローカリティを担保することで、仮想環境においての高性能化と障害切り分けの容易さを実現しています。