フラッシュストレージの重複排除と圧縮

第7回では、エンタープライズストレージの要点、信頼性と性能について解説しました。今回は、ストレージを効率良く使うためのテクノロジーとして、「圧縮」、「重複排除」、「シンプロビジョニング」についてより詳しく、さらに暗号化についても解説したいと思います。

3つのストレージレベル

エンタープライズストレージには、大きく分けて3つのレベルがあります。

ひとつ目は、「オンライン(プライマリー)ストレージ」です。これはおもに業務アプリケーションのデータ入出力に使われます。例えば銀行などのオンライン業務、企業内のメール送受信、ファイルサーバーなどもオンラインストレージが処理します。

次に、「アーカイブ(セカンダリー)ストレージ」。これは長期に渡り保存し続けなければならない(≒使用頻度が少ない)データを格納するストレージです。オンラインで実現するアーカイブストレージもありますし、サービスレベルによってはオフラインで保存する場合もあります。

最後は、バックアップで複製したデータを保存するための「バックアップストレージ」です。近年では、「Amazon Glacier」などの安価なクラウドストレージサービスが登場し、こういったサービスもアーカイブやバックアップのデータ保存先としての選択肢となってきました。扱うデータによっては社外クラウド上に保存できないこともあるため、データセンター内でバックアップを取得した後、遠隔地のデータセンターに複製データを保存し、災害対策に備えるのが一般的な使用用途です。また、利用頻度が高いデータと低いデータを分けてストレージの階層化を行い、自動的にSSDやHDD、テープといった最適なストレージデバイスに振り分ける「自動階層化」という技術もあります。

「圧縮」でデータを小さく

近年、アプリケーションが使用するデータやログの巨大化が進んでいます。この膨大なデータをそのまますべてフラッシュストレージに保管するとなると、ストレージのコストが膨大になってしまいます。この問題を解決する技術のひとつが圧縮です。

どうやってデータを小さくするか―― これがストレージに求められる基本要件です。圧縮は、ファイル内の連続したデータをそのまま書き込まず、それぞれのデータを圧縮した後にデータを書き込みます。圧縮のアルゴリズムにはZIPやLZSなどの可逆圧縮、jpegやmp3などの非可逆圧縮など様々なものがありますが、エンタープライズストレージとしては、データが完全に元の状態と等しくなる「可逆圧縮」が用いられます。また、新しい圧縮アルゴリズムとして2015年にGoogleが「Brotli」、2016年にFacebookが「zStandard」をオープンソースとして発表しました。高い圧縮率と高速に処理を行うことを狙ったもので、圧縮技術がまだまだ進歩していくあらわれと言えるでしょう。

ストレージにおける圧縮には、ポストプロセス型とインライン型の2つの方法があります。ポストプロセス型は、一旦データがストレージに書き込まれた後に別プロセスとして圧縮を行います。ポストプロセス型は定常的なストレージへの負荷を与えることがないため、ストレージ性能が低下しにくいという特徴があります。ただし、一旦データを圧縮しない状態で書き込むための空き領域が必要となります。一方インライン型では、データが書き込まれる際にリアルタイムで圧縮を行います。データの圧縮に伴うデバイスへの入出力回数も減少するので、書き込み回数制限のあるフラッシュデバイスの寿命を延ばすことにもつながります。

一部のストレージ製品によっては、インライン型を採用している場合でも、負荷を減らす目的でポストプロセス型の処理を使い分けるものもあります。しかし、一貫してインライン型を採用するストレージの方が、運用の面では容易であり、ストレージへの総書き込み量も減らせるのでフラッシュに適していると言えるでしょう。


「重複排除」でデータを小さく

エンタープライズストレージには、定期的なバックアップが必要です。HDDは壊れやすいのはもちろん、壊れにくいと言われるSSDでも、決して故障と無縁ではありません。そのため、単純にバックアップを取るのではなく、フルバックアップと差分バックアップを組み合わせた運用計画を立てる必要があります。

そのバックアップストレージで採用されている技術が重複排除です。重複排除機能を持つストレージの多くは、データを512バイトから数十キロバイト程度に分割し、ハッシュ演算をしてハッシュ値があるかどうかの照合を行ったり、規則性のあるビットパターンのマッチングを行います。そしてストレージまたはボリュームなどの領域内でユニークなデータブロックのみを格納し、残りのデータは該当部分へのポインターを設定することで、ストレージの容量を少なくする技術です。これはバックアップだけではなく、仮想マシン環境のVMイメージや、仮想デスクトップ環境のデスクトップOSなどが格納されているストレージには大変有効です。

また、この重複排除の技術はかつてストレージに多くの負荷をかけるため、性能をあまり多く求められないバックアップストレージでの採用が進みましたが、近年にかけてプロセッサーの処理能力が格段に向上したため、オンラインストレージでも充分高速に利用できるようになっています。通常のファイルサーバーとしての用途であれば約30%、VDIや仮想マシンイメージでは約70%、バックアップデータでは約90%を超える削減率が達成できるという調査データもあります。

この重複排除も、ポストプロセス型、インライン型の2つに大きく分けられます。一旦すべてのデータを書き込み、その後重複排除がバッチ的に処理されるポストプロセス型よりも、インライン型のほうが運用管理面での考慮事項が少なく、ストレージへの総書き込み量も減らせるため、フラッシュストレージにはインライン型が適していると言えるでしょう。


実際よりも大きなストレージを実現する「シンプロビジョニング」

ここまで、ストレージのために「データのサイズを小さくする技術」について解説しました。次に紹介するシンプロビジョニングは、「ストレージを大きく見せる技術」です。

シンプロビジョニングを使えば、ストレージを物理サイズよりも大きくみせることでストレージを有効活用することができます。この技術は、仮想化の流れから出てきた発想です。複数のデバイスをまとめて大きな仮想のストレージプールとして管理し、そこにアプリケーションからのストレージの容量を割り当てます。ただ、実際にアプリケーションを動かしてみると、当初要求されたストレージサイズよりも小さくなる場合が多くあります。この事実に注目し、はじめは少なめの容量~要求に従って必要なサイズを薄く(ここにThin=シンという意味があります)割り当てる(プロビジョニングする)という技術です。

もちろんアプリケーションが実際に大きなサイズの領域を要求した場合には、物理デバイスを追加してその要求に応える必要がありますが、何よりもストレージのキャパシティプランニングが容易になるなど、ストレージ管理者にとっては恩恵が大きい技術と言えるでしょう。

仮想環境専用フラッシュストレージのTintri VMstoreの場合、容量に関して以下のような特徴を持ちます。

  • インラインの重複排除と圧縮
  • 重複排除と圧縮の状況に応じて最適に容量をシンプロビジョニング
  • 仮想マシンの仮想ディスク種類はシンプロビジョニングを推奨し、容量を効率化
  • ストレージ側でのクローン技術によるデータの重複排除
  • 仮想マシン単位、仮想ディスク単位に容量の状況を把握(容量推移、重複排除、圧縮、スナップショット差分量、クローン参照など)

次回は、エンタープライズレベルで必要な信頼性や事業継続性に必要な機能要件について、解説を行います。


※本ページは、『マイナビニュース』へ掲載された記事広告を転載しています。