Software-Defined Network (SDN) に始まった Software-Defined という言葉が、そろそろ Buzz り始めた感があるので、現在もっともカオスになりつつある Software-Defined Storage について自分なりに整理してみます。

まず、Software-Defined なストレージとはなんでしょうか?接続形態と用途から以下に分類してみます。

  • ローカルストレージ
  • 共有ストレージ
  • テープストレージ
  • クラウド (オブジェクト) ストレージ

話が発散してしまうので、オンプレで考えやすい共有ストレージで考えてみたいと思います。

共有ストレージは様々なコンポーネントで構成されています。

  • コントローラー
  • キャッシュ
  • ディスク

Software-Defined などという文字が入っているので話がややこしいですが、CPU の高性能化、ネットワークの低遅延化・広帯域化、フラッシュによるストレージデバイスのドラスティックな高速化によって、上記 3 つのコンポーネントのあり方が変わっているという認識でいます。

買収された新興ベンダー含んで分類するならば、以下のコンポーネントのあり方を分類できます。

  • Hyper(visor) Converged 型: VMware Virtual SAN, Nutanix, Simplivity
  • All Flash 型: XtremIO, Wiptail, Skyera
  • 階層化型: Tintri, Nimble Storage
  • キャッシュ型: VMware Flash Read Cache, ProximalData AutoCache, PernixData FVP

サーバーとストレージを一体化した Hyper(visor) Converged 型、ディスク部分を SSD や Flash デバイスにした All Flash 型、SSD をセカンドキャッシュとした階層化型、コントローラーのキャッシュをサーバー側に持ってきたキャッシュ型、など非常に多岐に渡ります。もちろん、型はここに上げたもの以外にもあるでしょうし、ベンダーももっと乱立しています。

一方、古参のベンダーは別の言い方をしてきます。

  • NetApp: 重複排除、シンプロビジョニング、NVRAM を介した整流化、Snap* による多機能性、Clustered DataONTAP (cDOT) によるスケールアウト etc.
  • EMC: ViPR による抽象化、自動化、プール化、RecoverPoint による災害対策

x86 で実装されたら Software-Defined なのか?API が用意されていれば Software-Defined なのか?ポリシーでまとめられていれば Software-Defined なのか?並べても機能や実装の共通点が見いだせないため整理するにも困ります。

ということで、使う側/購入する側の視点にたったとするならば

  • はやい (低遅延、広帯域)
  • やすい (容量単価、IOPS 単価が安い)
  • うまい (管理が楽、実績/安定)

これが基本かなと思います。実装は問わないので、この 3 つを満たせと。粗々ながらまとめてみました。

項目 Hyper(virsor) Converged 型 All Flash 型 階層化型 キャッシュ型
はやい (低遅延、広帯域)
やすい (容量単価、IOPS 単価が安い) △ (※1) △ (※2)
うまい (管理が楽、実績/安定) △ (※3)
  • ※1 重複排除の効果や IOPS あたりの単価を見れば易くなるという側面もありますが
  • ※2 ストレージに追加して買うので安くはならない。IOPS 単価の (ry
  • ※3 ストレージとキャッシュのソフトを別々に管理する必要があるので。

結論

Software−Defined という言葉に惑わされずに、自身にどの程度の「はやい」「やすい」「うまい」を求めているのかを明確にし、その時のプロジェクトの立ち位置、予算、メンバー、製品の将来性/実績を考慮して決めるのがよいと思いますよ。