株式会社ネットワールドのエンジニアがお届けする技術情報ブログです。
各製品のエキスパートたちが旬なトピックをご紹介します。

FVPのホストローカルアーキテクチャのための設計上の考察

本ブログエントリーはPernixData社のテクノロジーエバンジェリストであるFrank Denneman氏のブログの翻訳版です。

本記事の原文はDesign considerations for the host local FVP architectureで閲覧可能です。

ネットワールドのPernixDataに関する情報はこちら

今週FVP 1.0が公表されたと同時に、ホストローカルアーキテクチャに関しての質問は増える一方です。FVPを試す人がどんどん増え、皆最適な環境でその性能を試したがっています。無理もないでしょう。私の受信箱とツイッターは「ディスクは一本、それとも複数使用するべきですか?」や「RAIDレベルは?SSDは?PCIeは?」等といった質問で溢れかえっています。片っ端から答えるのは理に適っていないので、今日はホストローカルアーキテクチャのための環境デザインにおいて考慮すべき事を投稿したいと思います。

動作する部分を減らす

FVPはカーネルと一体となり、間に生じるオーバーヘッドをできる限り取り除くよう設計されています。このため様々なぱっと見“知的”とも思えるレイヤをカーネルとフラッシュ機器の間に加えるのはFVPにとってかえって逆効果です。私は熱心なカーマニアなのですが、PernixDataの技術者達がFVPをデザインする時の考え方とColin Chapman氏(ロータス車の創設者)が車をデザインする時のモットーがとても良く似ていると感じます。彼のモットーは:「まず単純化、次に軽量化」。私はFVP環境をデザインする工程も似た様な物だと思っています。できる限り単純にデザインする!例えばアプリケーションとフラッシュデバイスの距離を縮め、最短、最速の接続を成し遂げること。複雑さはレイヤを足す事になるだけです。レイヤを足すという事は距離を伸ばし、速度を落とすという事です。従って、ホストアーキテクチャをデザインするならば、最低限のパーツを使い、できる限りレイヤを減らすようにしましょう。この様な姿勢がどの様にホストアーキテクチャに反映されるかって?それはRAIDレベル、フラッシュデバイスを複数使用することでの影響、PCIeかSSDの選択等の項目を通して詳しく説明したいと思います。

RAID レベル

最近フラッシュのパフォーマンスと耐久性に及ぼすRAIDの影響に関して記事が多々発行されました。Howard Marks氏は“SSD vs. RAID? Fix RAID”(「SSD vs. RAID? まずRAIDを直せ」)という記事を発行しました。一方Greg Schulz氏は“Can RAID extend nand flash SSD life?”(「RAIDはNAND フラッシュSSDの寿命をのばすのか?」)という記事を発行しました。全て素晴らしい記事なのですが、FVPでフラッシュを使用する場合、RAIDは極力避けるように薦めています。RAIDは磁気ディスクのために開発されており、SSDは磁気ディスクとは全く違う様に動作するのです。FVPは入出力を規則的にフラッシュデバイスへと書き込み、書き込みと削除のサイクル数を最低限に抑えるようデザインされています。RAIDシステムをここに追加する行為はこのデザインに影響を及ぼし、無作為な書き込みを引き起こすだけではありません。読み出し-修正-書き込み操作を行うパリティ方式のRAID配列は書き込みと削除のサイクル数を増やすでしょう。フラッシュデバイスを扱う場合、こういった問題は避けるべきです。無作為書き込みについてもっと詳しく知りたい方は“フラッシュ仮想化プラットフォームの基本要素 パート2 ~独自プラットフォーム対既存のファイルシステム~”をご覧ください。

データ保護についてはどうする?

データの紛失対策はしないでいいのか?まず最初に理解しなければいけないのは、FVPが持続性のあるストレージ層ではない事です。FVP層はデータが休憩しにくる場所ではありません。FVPはワーキングセットを加速させる事が全てです。だからといってデータの正確さや可用性を無視するわけではありません。むしろ逆です。単純に我々は可用性の課題について普通とは違う方法で対処しているだけに過ぎません。FVPは様々な書き込みポリシーを提供しています。ライトスルーポリシーでは入出力作業が終わり、アプリケーションに戻ってくる前にデータが必ずストレージシステムに保存されます。ライトバックポリシーを使用する場合、フラッシュクラスタ内の近くのフラッシュデバイスにデータを保存し、冗長性を加えます。書き込みポリシーについてもっと詳しく知りたい方は“FVPのWrite-BackとWrite-Throughポリシー”をご覧ください。

推奨:

以上を踏まえ、ローカルSSDディスクを設定する場合、RAIDではない物、またはJBOD構成の物を使用することを推奨します。もしJBODが利用できないのであれば、RAID 0の構成を使用してください。ホスト内で複数のSSDが使用されている場合、ディスクをRAIDアレイとして連結するのではなく、ディスク一つ一つを別々にRAID0として構成してください。
これについてはJosh Coen氏の記事 “Changing of the Guard: PernixData goes GA with FVP 1.0”内の以下の文章を引用します。


ホストを足した毎に、それに比例してFVPは容易に拡張できますが、私が気になっていたのはコンピューティングリソースが十分で、IOPSが不足している場合、PernixDataはどの様に対処するかです。真っ先にRAIDが思い浮かびます。ホスト内に三つSSDを搭載し、RAID5に設定してください。IOPは増え、問題解決です。コントローラレベルでRAIDを使用しろと言っている訳ではありません。ホスト内に複数SSDを搭載する事でFVPはどうやってIOPを生成するかが解るという事を私は仄めかしているのです。これはRAIDの様な技術だけでなく、全く違う技術でも可能です。

念のため言っておきますが、Joshを非難している訳じゃありません!その逆です!私は毎日の様にディスク数やRAIDレベルの質問を頂きますが、Joshは答え甲斐のある質問を与えてくれたのです。

複数のSSDディスク

後程FVPの負荷分散について詳しい記事を投稿しますが、今重要なのはディスクの連結やディスク数を足す事は仮想マシン一つ一つのパフォーマンスを向上させないという事を理解する事です。ここでは単純さが鍵となります。まず理解しておかなければいけないのが、仮想マシン各々のワーキングセットを加速させているのは一つのフラッシュデバイスである事です。複数のディスクを使用する事は莫大な数の仮想マシンを実行する手助けになりますが、これはディスクコントローラの性能によって左右されます。今の段階では負荷分散や、初期配置アルゴリズム、ディスクコントローラアーキテクチャ等の事はあまり考えず、単純に高速な一つのディスクの商品を試す事をお勧めします。

SSD vs. PCIe フラッシュ機器

単純さの観点からしてみますとPCIeフラッシュデバイスアーキテクチャは、ストレージコントローラとSSDディスク、両方のアーキテクチャに勝っています。RAIDレベルやそういった類のコントローラに基づく構成設定が一切不必要なのです。PCIeフラッシュデバイスを選択する主な理由の一つは今日のPCIeアーキテクチャの可用性帯域幅です。
4レーン(4倍速)の第3世代PCIe接続, (今日では一般的)は 4 GByte/sのデータ転送レートを提供することが出来ます。それに対してSASアーキテクチャインターフェイスの最大の帯域幅は600MB/secにとどまります。
何か欠点はあるのか?コストもダントツ一位!もし予算に制限されていないのであれば、SSDを選択したくなる魅力はなんでしょう?PCIeデバイスの殆どはカスタムドライバ、またはドライバが付属されているカスタムESXバンドルを必要とします。
この点ももしインフラストラクチャが特定のルールに従っているのであれば問題になるかもしれません。
SSDの様にディスクを差し込むだけでなく、ホスト自体の箱を開けて機器をインストールしなければいけないのも問題になるかもしれません。組織にも依存しますが、中にはハードウェアメンテナンスのルールが厳しい所もあります。

Win-winの状態

とはいえ、SSDとPCIe、両方に利点がある事を忘れてもらいたくありません。PCIeかSSDかということを議論する際にはハイパフォーマンス・コンピューティング(HPC)分野に目を向けるとよいでしょう。FVPのアーキテクチャはスケールアウトのためのものです。我々はIOPSや帯域幅の値についてはデバイスで共有するものとして利用しています。例えば複数のESXiホストを一つのストレージアレイに接続するときのような場合です。クラスタ化されたサーバサイドフラッシュについての議論をする際にはマイクロ秒単位のレイテンシやホスト単位で継続した数千IOPSのストリームについて議論すべきです(しかも、アプリケーションにめちゃくちゃ近いところで動作します!)。クラスタ化されているので同然ながらホストを移行しても同じパフォーマンスを期待することが出来ます。仮想マシンのために利用できるパフォーマンスのプールを希釈したり、減らしたりすることなく、ホストを追加することでパフォーマンスを倍増させることができます。これが大きな違いなのです!

結論

ホストローカルアーキテクチャはなるべく単純に保ち、動作しているパーツも最小限へ減らしましょう。RAIDでない構成を使用する事で仮想(RAID化された)ディスクの使用を避けましょう。ディスクを一つか複数にするべきかはまた違う機会に取っておくとして、商品を試すのが目的であればSSDディスク一つから始め、内部から複数のSSDドライブにスケールアウトする事をお勧めします。

追加情報

RAIDSSDに関してもっと詳しく知りたいって? 以下の記事はとってもオススメです!

Stochastic Analysis on RAID Reliability for Solid-State Drives

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