重複排除 技術解説(5)重複排除を行う場所、重複排除の範囲

引き続き、ASCII.technologies 2011年1月号に寄稿した「重複排除技術が革新するストレージの世界」の第二章の技術解説です。今回は、「重複排除を行う場所」と「重複排除の範囲」です。

重複排除を行う場所

前節では、ディスクに書く前に重複排除処理を行うかどうかという、ストレージ装置に焦点を合わせた形で重複排除方式の違いを考察した。しかし、重複排除処理はストレージ装置でなくとも実行はできる。最終的にデータはストレージに格納されるが、それよりも前の段階で重複排除処理を行うことは可能であり、それによりまた違った特性が生まれる。本節では、重複排除処理を行う場所が変わるとどういった特性の変化が出るか見ていこう。
図に示したように、重複排除処理が行われる場所は大きく二つに分けられる。クライアント側とストレージ側だ。なお、この節では、議論をシンプルにするために、バックアップシステムに話を限定した形で進めていく。

クライアント側での重複排除

ここでクライアントとはストレージにデータを書く側という意味で使っている。バックアップシステムにおいては、それは更に二種類に分けられる:(1)バックアップデータを持つ業務サーバやPC、(2)バックアップサーバである。
そのいずれにおいても、クライアント側で重複排除を行う一番の利点は、バックアップ時のデータ転送量を大きく減らせるということである。レプリケーションのときと同様、一旦重複が判定され削除されてしまえば、そこから先はデータを転送する必要は無くなる。もし業務サーバにインストールされているバックアップエージェントが重複を認識し排除することができれば、そこからバックアップサーバに転送されるデータ量が大きく削減されるわけだ。もちろん、バックアップサーバからストレージ装置に転送するデータ量も同様に削減される。
これがどれぐらい大きな効果を生むか理解しやすくするために、具体例で考えてみよう。1.3節の例で言えば、二回目のフルバックアップデータ量が1TBだとした場合、(メタデータなどの部分を省略して考えると)業務サーバからバックアップサーバに合計で1TBのデータが転送され、それから更にバックアップサーバからストレージ装置にその1TBのデータが転送される。これが、バックアップエージェント側で重複を認識し排除できるとすると、わずか18GBのデータ転送量で済むことになる。レプリケーションのときと同様に、1/50のネットワーク転送量削減効果が得られるわけである。
このネットワーク転送量削減効果を利用すると、新たな使い方も生まれる。リモートオフィスのサーバやクライアント群に重複排除機能を搭載したバックアップエージェントをいれ、そこから別サイトのバックアップサーバに直接データをバックアップするという方法である。通常だと、別サイトへのバックアップはネットワークへの負担が大きく、適用できる環境が非常に限定されるが、クライアント側での重複排除と組み合わせて使えばネットワークへ負担を掛けることなくバックアップができるようになる。

ストレージ装置側での重複排除

それでは、ストレージ装置側でバックアップを行う利点とはなんだろうか?
一番の利点は、既存のシステムにほとんど変更を加えずに重複排除機能を導入することができるという点だ。重複排除機能を持つバックアップソフトウェアを導入しようとすると、どうしても、既存のバックアップシステムを丸ごと変えなくてはならず、システムに与える影響が大きくなる。ゆえに、導入プロジェクトが大掛かりなものになりやすい。対して、重複排除機能を持つストレージ装置であれば、単にストレージ装置を入れ替えるだけで重複排除機能を導入できる。バックアップソフトウェアは既存のものをそのまま使うだけで可能である。
また、もう一つの利点は、複数のアプリケーションのデータを重複排除することができるという点だ。クライアント側の重複排除は、バックアップソフトウェア自身が行う方式のため、それ以外のアプリケーションでは重複排除が効かない。ストレージ装置の重複排除機能は、複数のアプリケーションのデータを格納することができ、重複排除の恩恵をより大きな範囲に適用させやすい。

重複排除の範囲

ここまで、重複排除技術の四つのポイントを解説してきた。本節では、最後のポイントである「重複排除の範囲」について解説していこう。

様々な実装形態:ボリューム範囲、装置範囲、グローバル重複排除

まず、ここでいう「範囲」がどんな意味なのか説明しよう。重複排除は「データ内に存在するムダな重複部分を排除して一つにまとめてしまう」行為だが、この「データ内」を実際にどの範囲とするかというのが、本節で扱う話題だ。
範囲をどう定めるかについては色々な方式がある。たとえば、ボリュームの範囲内で重複排除を行う方式がある。この様な製品の場合、重複データが違うボリュームに書かれると重複として認識されない。そのため、なるべく同じボリュームに重複を集める様な使い方が合っている。他には、ストレージ装置の範囲内で重複排除を行う方式もある。この様な製品の場合、装置内であればボリュームをまたがって重複排除が行われるので使い勝手はよくなる。しかし、装置が変わると重複排除されなくなるので、そこは注意する必要がある。
範囲が最も広い方式は、複数のストレージ装置にまたがって重複排除を行うもので、グローバル重複排除(Global Deduplication)と呼ばれている。実装形態の例としては、重複排除機能を持つストレージでクラスタを組むものがある。そのほかの実装形態としては重複排除機能を持つバックアップソフトウェアがある。ただ、バックアップソフトウェアの場合には、それは確かにストレージ装置をまたがるという意味では「グローバル」であるのだが、アプリケーションをまたがった「グローバル」ではない所に注意が必要である(バックアップソフトウェア以外のアプリケーションのデータは重複排除の範囲外である)。

広い範囲で重複排除する利点とは

一般的には、範囲が広ければ広いほど、重複が見つかる可能性がより高くなるため、優れた重複排除の方式だと言える。
しかし、範囲の広さに比例して重複排除の効果が良くなっていくかというと必ずしもそうではないので、注意は必要である。前章で説明したように、重複排除が最も効果を発揮するのは複数回フルバックアップを格納したときである。この恩恵を受けるためには、同じデータセットフルバックアップを「重複排除の範囲」内に入れればよい。そのようなデータの振り分けがきちんとできていれば、重複排除の範囲が広くても狭くても、重複排除効果にそんなに差は出ない。
ただ、そのようなデータの振り分け状態をキープし続ける、というのが実はそう簡単ではない。たとえば、装置範囲の重複排除機能を持つストレージを複数台使っているケースを考えてみよう。最初に使い始める際には、データの振り分けをきちんと行うことはそんなに難しくない。しかし、時間が経つと、装置間でのリソース消費量に差が出てくるので、振り分けを調整する必要が出てくる。この振り分けの調整には、細心の注意が要る。オリジナルのフルバックアップが格納されていた装置Aでは重複排除が効いていたが、装置Bに移動したら重複排除が全く効かなくなった、というようなことが発生するためだ。この様な調整を行っていくことは不可能ではないのだが、管理の手間を考えると簡単ではない。
グローバル重複排除のような範囲の広い重複排除の方式を用いる利点は、こういった調整を行う必要がなくなるところにあるだろう。どのストレージ装置に書いても重複排除が効くので、装置間でのデータの振り分けを自由に行うことができる。また、新しい装置を追加したときも、データの振り分けをやり直す必要も無い。論理的なストレージプールという形で利用が可能になるのである。