皆様こんにちは。てくさぽBLOGメンバーの佐野です。
前回の記事の続編になります。
今回はパフォーマンスについてと、可用性について少し補足をしておきます。
1.可用性
Nutanixではないサーバーやストレージでは、可用性を高めるために、通常はRAIDを構成しているかと思います。
このRAIDは確かに可用性を高めることはできますが、ディスクが壊れた後、壊れたディスクを交換しない限り可用性は失われたままの状態となります。交換用のディスクを追加して復旧させることはできますが、RAIDにはパリティの再計算が必須で、全てのディスクのデータを読み込みながら1本分のデータを復旧することとなります。
ディスクの故障を経験したことがある人なら分かると思いますが、このパリティ再計算での復旧には非常に時間がかかります。時間がかかるうえに「もう1本壊れたらどうしよう」と復旧が完了するまで非常に不安な時間が続きます。
Nutanixの場合、データのコピーを別のディスクまたは筐体に保管するため、RAIDのようなパリティの計算が必要ありません。もしディスクが壊れたとしても、自動的に復旧プロセスが走りますが、全データではなく壊れたディスク上にあったデータのみを読み込み、他のディスクへ再度書き込みを行います。
これにより、復旧時間が短くなり、かつ何もしなくても冗長性が保たれた状態になります。
単一の共有ストレージを採用すると、「このストレージが壊れたらどうしよう・・・」と不安に思ってしまいますが、Nutanixではデータが自動的に分散配置されますので、可用性という観点でも安心です。
2.パフォーマンス
Nutnix独自の機能として「データローカリティ」があります。
データローカリティとは、データを書き込むとき「自ノードに書き込む+設定されたミラー分のコピーを他筐体に書き込む」動作を示します。言葉で書くと理解しづらいと思いますので、簡単に絵で解説します。
①仮想マシンから書き込み要求があるとその要求をCVMが受け取ります。
②CVMが受け取った書き込み要求はローカルのSSDに書き込まれます。
③同時に他ノードにも書き込み要求を送信します。
④他ノードのローカルのSSDにデータが書き込まれます。
⑤②と④が完了した時点で、書き込み完了の応答を仮想マシンに返します。
これにより、ローカルのディスク(SSD)と他ノードに同じデータが書き込まれます。
他社のハイパーコンバージド製品では、この「ローカルにデータを書き込む」ということが保証されません。
他ノードへのデータ転送が1回ではなく2回発生するということがほとんどになり、大きなデータを書き込むことを考えれば想像できると思いますが、1回の書き込みと比べると書き込み完了までにかかる時間が余計にかかってしまいます。
ローカルに必ずデータがあるとどんないいことがあるのか?疑問に思うかと思います。それは読み込み時に威力を発揮します。
図を見てもらえば分かる通り、ローカルにデータがあるため読み込み時には他ノードへアクセスを行わず、自ノード上のデータを読み込むだけで済みます。
自ノード上のデータだけにアクセスすることで、他のノードには影響を与えない。これが重要な点です。
次の章で解説しますが、このアーキテクチャーは「Noisy Neighbor(うるさい隣人)問題」に大きな威力を発揮します。
また、データがローカルにあることでノード間の通信が発生しないため、応答時間についても若干のアドバンテージがあります。Nutanixがデータ転送に使うネットワークである10GbEの場合、1KBのデータを転送するためにかかる時間はおよそ1μ秒(スイッチなどの環境により増減します)程度と非常に小さい時間ですが、塵も積もればなんとやら、Write時と同様に転送するデータ量が多くなれば全体としての応答時間に違いが現れてきます。
3.Noisy Neighbor問題
Noisy Neighborとは何か?まずここから解説します。
仮想環境では一般的に共有ストレージを利用することが多いです。共有ストレージを利用するということは、いろいろなコンポーネントを各仮想マシンが共有で利用するということです。容量効率を高めるために、複数のRAID Arrayを束ねてプール化することがほとんどだと思います。
このプール化された領域が例えば10,000IOPSのパフォーマンスが出せるとしましょう。仮想環境全体で10VMが稼働し各VMが500IOPSを使っている場合、全体で5,000IOPSなので問題なく処理ができます。
しかし、1台のVMが極端に大きな負荷をかけた場合、そのVMが原因で残りの9台のVMのパフォーマンスが低下します。
図の場合では1台が6,000IOPSという負荷をかけて、全体でストレージの処理能力を超える高負荷状態となっています。ストレージの処理能力を超えると、IO要求に安定して応答することができなくなり、応答時間が長くなります。仮に処理能力を超える負荷でなかったとしても、ディスクを共有しているために応答時間が長くなるということが発生します。
被害にあっている(?)9台の仮想マシンは何も悪くないのにパフォーマンスが悪くなる。これが「Noisy Neighbor」と言われる現象です。
前章で解説したNutanixのデータローカリティ機能があれば、この影響範囲を最小限に抑えることができます。
簡単なイメージ図を添付しますが、データがローカルにあるのであれば、負荷はローカルにのみ集中します。そのため、他のノードには影響がありません。
繰り返しになりますが、他社のハイパーコンバージド製品ではデータがローカルにあることが担保されません。ですので、高負荷状態になると全ノードに影響が出てしまいます。
※画像はイメージです
これがNutanixを使うメリットになります。
特にVDIの基盤として利用する場合には、ログイン時の負荷が集中するログインストームやウィルススキャンの負荷など、ディスクIOが高負荷になるきっかけは多々存在します。
パフォーマンスへの影響を局所化することができるNutanixがVDI環境向けの基盤としての採用が多いのは、こういった機能があるから、ということもあるのでしょう。
4.まとめ
可用性について、Nutanixは一般的なRAIDと比べて勝手にデータの冗長性が確保されるということが分かると思います。
過去にディスク障害で徹夜をした経験があるようなお客様には非常に有効なソリューションではないでしょうか。
パフォーマンスについては、高負荷状態になっても影響範囲を最小化できると解説をしました。これはNutanixのデータローカリティが実現し、他社製品にはない機能です。
最後に、Nutanixの動作等に関する情報はバイブルとして公開がされています。是非こちらもご参照ください。
URL:http://nutanixbible.jp/
<関連記事>
10分でわかる『Nutanix製品』まとめ ※ MERITひろば 会員サイトにログインが必要
———-
この記事に関する、ご質問は下記までご連絡ください。
エヌアイシー・パートナーズ株式会社
技術支援本部
E-Mail:nicp_support@NIandC.co.jp