« ★IsilonSD Edgeリリース★ | メイン | 困難な時代だからこそ、スマートに最適化 ~不景気とその時に売れたプロダクト~ »

2016/02/08

最新のVSANに搭載される「Erasure Coding」とネットワークのステキな関係

この記事は前回の最新のVMware VSANに搭載される 「Erasure Coding」とは何か?の続編に当たります。

前回の記事ではErasure Codingとはネットワークをまたいで実装されたRAID5/RAID6の様な技術だということをお伝えしました。今回はその副次的な(けれども重要な)効果をお伝えします。ストレージエリアネットワークの帯域についてのお話です。

わかりやすさのため、以下の仮定を入れています。

  • 各ノードに動作しているVMの数が十分に多い
  • 各ノードで動作しているVMのワークロードは全て同じ
  • VSANのストレージポリシーは全て同じ
  • 図はRAID6(4+2)、または従来の2障害保護(FTT=2)を想定
  • Write時のトラフィックのみを考える

6ノード構成での各ノード間のトラフィック

この状態で6ノード構成でのネットワーク帯域を流れるトラフィックを考えていきましょう。

従来のVSAN(FTT=2)では障害からデータを保護するためにネットワーク越しにVMDKのコピーを3つ作ります。このためネットワークのトラフィックは3であるということになります。VM自身が動作しているノードにデータを置けばネットワークを流れるデータは2で済みますが、このノードが障害を起こしてしまうと「FTT設定を満たすため、レプリカを再生成する必要がある」「HA処理を実行する」という二重苦が発生するため、可能な限り3つにしておくのがベストです。ここで、上の仮定を導入します。すなわち、各ホストの送信するデータは自分自身以外の5ホストに3つのVMDKを送るということです。平均すると「5ホストにそれぞれ3/5のデータを送る」と考えることができます。

各ホストの送信・受信するデータは以下のとおりです。

(送信) 自分自身以外の5ホストへVMDKの3/5のデータを送信する

(受信) 自分自身以外の5ホストからVMDKの3/5のデータを受信する

(合計)  3/5(送信)*5 + 3/5 * 5 (受信) = 6

(各ノード間通信) 6 ÷ 5 = 1.2

一方で、新しいVSAN(4+2)ではVMDKの1/4のデータを6つのホストに転送することになります。お分かりのとおり、2ノードへはパリティが転送されますが、このサイズは残り4ノードへ転送されるデータのサイズと同じです。こちらの場合はどのノードが落ちてもデータ復元ができますので、自分自身とそれ以外のホストの区別はありません。各ノード間のトラフィックは以下のとおりです。

(送信) 5ホスト全てにVMDKの1/4のデータを送信、自分自身にも1/4のデータを格納(送信しない)

(受信) 5ホストからVMDKの1/4のデータを受信する

(合計) 1/4 * 5 (送信) + 1/4 * 5(受信) = 2.5

(各ノード間通信) 2.5 ÷ 5 = 0.5

ご参考までに従来型ストレージでの場合のトラフィックも併記しておきました。これはVMDKと同じサイズのデータをストレージに送信していますので、流れるトラフィックは1です。各トラフィックが分かりやすいように、それぞれの太さを図に反映しています。

Inter6nodetraffic_3

六角形の頂点に各ノードがあると考えて、各辺と対角線の太さがそれぞれのノード間を流れるトラフィックです。いかがでしょうか?FTT=2より、4+2でトラフィックが小さくなっている具合が御理解いただけると思います。さて、更に仮定を進めていきましょう。

12ノード構成での各ノード間のトラフィック

ノードが倍に増え、12ノードになったと仮定します。

FTT=2の場合、

(送信) 自分以外の11ノードに3のデータを送信(つまり11ノードに対して、3/11のデータを送信)

(受信) 自分以外の11ノードから3/11のデータを受信します

(合計) 3/11*11 + 3/11 * 11 = 6

(各ノード間通信) 6÷11 = 0.54

4+2の場合、今回はノード数に余裕があるのでVMの動作しているホストにデータを置かない(障害時にリバランス+HAの二重苦を避ける)という戦略をとることになります。自分以外の11ノードのうち、6ノードに1/4ずつデータを送信します。ノードが均一であるという仮定を加えると、

(送信) 自分以外の11ノードのうち6ノードに1/4のデータを送信(1.5)、11ノードで平均すると1.5/11

(受信) 1.5/11を11ノードから受信

(合計) 1.5/11*11 + 1.5/11 * 11 = 3

(各ノード間通信) 3÷11 =0.2727・・・

図にすると以下のとおりです。

Inter12nodetraffic_3

なんだか、綺麗な図形になってきていますが、注目いただきたいのはそこではありません。FTT=2の場合、もう潰れてしまってよくわからなくなってしまっていますが、4+2ではErasure Codingによって、12ノードでも各々のノード間通信の具合を確認することができます。実際に絵にしてみることで、Erasure Codingの削減効果を実感できたのではないでしょうか?(直感的に分かりやすいように恣意的に図と線の太さを調整していますが、上の計算結果から誰がやっても同じ結果になります。)

また、実はVSANの場合はFTT=2も4+2の場合も7ノード以上で計算をするとすべての場合で(合計)はおなじになります。つまり、各ホストでこれ以上帯域が混雑することはありません。ホスト数が増えれば特定の2ホスト間の通信の平均値はどんどん下がっていきます。(もちろん、ノードが増えるのでスイッチでは大きな容量が必要になります。)

VSANは小規模環境向けだけじゃない!

ここで考えていただきたいのは「小規模環境ならVSANでも良いが、大規模環境はやっぱり従来型ストレージだ」というなんとなくの思い込みについてです。今回の結果は完全にこれは誤りであるということを裏付けています。今回の図では参考につけていますが、従来型ストレージの直近のトラフィックは6ノードで60pt、12ノードでは120ptとなります。仮に今回1となっているトラフィックが1GBであったとすると、VSANを利用している場合4+2で3GB、FTT=2で6GB、いずれも10GBのネットワークだけで構成ができますが、従来型ストレージは120GBの帯域が必要なため、40GBや10GBの回線を複数本準備しなくてはなりません。非常に大きなコストになることは言うまでもありません。

もちろん、IsilonやNetAppのcDotのようなスケールアウトストレージを導入することが主流となりつつある今ではこの議論は単純なものではなくなりつつ有りますが、少なくともVSANも従来型ストレージの弱点を補うアーキテクチャであるということはご理解いただけたのではないかと思います。

確かにVSANは3ノード(厳密には2ノード)から構成できるため、小規模環境にも向いているのは事実ですが、大規模になればなるほどネットワークの観点からは従来型ストレージは帯域が集中してしまうのに対し、VSANは各ノードでトラフィックを分散することが出来るため、大規模な環境も比較的安価なネットワーク機器を組み合わせて構成ができるのです。

Erasure Codingでさらなるスケーラビリティを

前項は従来型ストレージに比べてVSANがトラフィックの分散の観点ですぐれているということのほうが大きな結論になってしまいましたが、Erasure Codingによって50%以上帯域を抑えることができているというのが今回非常に大きなポイントです。VSANは64ノードまで拡張が可能ですのでFTT=2においてもノード数が大きければトラフィックが多くなり、ノード間通信を圧迫してパフォーマンスへの影響が出る可能性があります(12ノードの時の図のように)。しかし、Erasure Codingがあればトラフィックを半分に抑える事が可能です。これは機材調達コストにおいても大きな優位性を生みます。

つまり、新しいVSANはネットワークまで含めて考えていただくことでより大きなコスト削減に繋がるということなのです。

VSAN.nextはいよいよ今週!?

リリースは目前です。今週はVMwareがWebセミナーでいろいろと発表するようですので、いよいよ実際のリリース情報を目にすることが出来ることでしょう。時差がありますが、是非みなさん自身の目でご覧になってください。

記事担当者: マーケティング本部 三好哲生 (@pernixdata_netw)