Virutal SAN 6.2 で重複排除と圧縮がサポートされました。ようやくといった感もありますが、フラッシュデバイスの価格の下落具合を鑑みるとそれなりに適切なタイミングだったのではないかと思います。性能とトレンドを考慮して 重複排除と圧縮は All Flash 構成の Virtual SAN でのみサポートされます。

設定

重複排除、圧縮の設定は、Virtual SAN クラスタ全体に対して適用されます。また、重複排除のみ有効、あるいは、圧縮のみ有効、といった設定はできません。さらに、この設定は Virtual SAN クラスタに適用されるため、仮想マシン単位、あるいは、仮想ディスク単位に適用、非適用を指定することはできません。

後から変更する場合、全てのディスクをローリングにて再フォーマットします。仮想マシンのダウンタイムは発生しないモノの、これにはかなり長時間を要します。

対象エリア

重複排除、圧縮は Virtual SAN のキャパシティ ティアに対して行われます。キャッシュ ティアでは重複排除、圧縮を行いません。キャッシュ ティアで重複排除、圧縮を行えば、見せかけのキャッシュの容量を増やすことが出来ます。しかし、Virtual SAN では少しでも速くキャッシュ ティアから Write-Ack を返すことを優先するため、キャッシュ ティアでは重複排除、圧縮を行っていません。また、キャッシュ ティアは書換回数が多く、もし重複排除、圧縮を行うならば そのための計算リソースがより多く要求されてしまうことも懸念されます。

重複排除の範囲は、ディスクグループに閉じます。つまり、ディスクグループを跨いで、あるいは、ホストを跨いで重複排除が行われることはありません。重複排除の仕組みでは、データのハッシュを保持する Dedup テーブルの構造・大きさやその探索が性能に大きく影響します。Virtual SAN では、重複排除の範囲をディスクグループに閉じることで対象データの容量に応じて大きくなる Dedup テーブルの肥大化を抑えています。もちろんこれは、ホスト跨ぎの全データを重複排除対象する場合に比較して、重複排除対象データが狭まるので Dedup 効率は落ちることになります。また、Dedup テーブルをディスクグループ毎に複数持つことになりますが、実質的に複数ノードで Dedup テーブルの処理を分散することになるのであまり問題になりません。

この辺は各種製品のトレードオフに関する方針に依存するので、比較してみるのも面白いと思います。

アルゴリズム

重複排除、圧縮は 4KB の固定長に対して行われます。適用の順番は 重複排除、圧縮の順番となります。

重複排除では、データのハッシュ値の算出に SHA1 を使用しています。最近の CPU であれば SHA1 用の命令があるため、非常に効率的にハッシュ値を求めることが出来、性能への影響を抑えることが出来ます。

圧縮では、圧縮速度と圧縮率のバランスが取れた LZ4 を利用しています。4KB の固定長を圧縮しますが、2KB 以下に圧縮できない場合は、非圧縮のデータをキャパシティ ティアに書き込みます。これは読み出しの際の解凍処理のデメリットが、圧縮による容量のメリットを上回ってしまうためです。

オーバーヘッド

容量に関するメリットの大きい重複排除と圧縮ですが、当然オーバーヘッドも存在します。

まず、重複排除処理と圧縮処理のためのコンピュート リソースのオーバーヘッドがあります。しかし、All Flash 前提の機能でありフラッシュデバイスのレイテンシが十分に良いため、重複排除、圧縮を行っても十分な IOPS を得ることが出来ます。

次に、重複排除と圧縮のためのメタデータ容量のオーバーヘッドがあります。メタデータとしては、ハッシュ、アロケーション マップ、トランスレーションなどがあります。VSAN データストアの容量にも依存しますが、大体 5 % 程度が目安となります。

重複排除、圧縮の効果が薄いユースケース

Virtual SAN に限らず一般的な話ではありますが、動画、画像、暗号化済みデータは重複排除、圧縮の効果があまり期待できません。Oracle DB や SQL Server 自体が持っている暗号化機能・圧縮機能を用いた場合も同様です。

また、TPC ベンチマークやストリーミング メディアの書き込みの多いワークロードも重複排除、圧縮は向いていません。このようなワークロードは Write をキャッシュするキャッシュティアを早々に食いつぶしてしまうため、重複排除処理と圧縮処理が Write 性能に直接影響を及ぼしてしまいます。

重複排除、圧縮の効果が高いユースケース

テンプレートからの仮想マシン作成や、パッチ適用レベルの統一がなされている環境。フルクローンの VDI 環境では最も効果が期待できると思われます。

注意が必要なユースケース

ERP や OLTP など、レイテンシや IOPS が低下すると影響が大きいワークロードでは注意が必要になります。本番環境投入前に十分に検証を行い、性能への影響と容量削減効果を判断すべきです。

コレがあったらなぁ

ユースケースによる向き不向きがあるので、仮想マシン毎、あるいは、仮想ディスク毎に SPBM で重複排除、圧縮の ON/OFF を制御できたらなぁ、とも思います。しかしながら、On-Disk フォーマットのレベルで重複排除、圧縮の有効・無効が影響してしまうので、Virtual SAN クラスタ ワイドの設定であるのも分からなくもないですね。

参考