NetApp Tech OnTap
同一データの保存を避けてディスク容量を節約する「重複排除」

複データの確実な検知とシステム負荷の軽減策がかなめ

ストレージ内には、同内容のデータが複数保存されていることが少なくない。そうした重複データの保存を回避して、ストレージ利用の効率化を図る技術が「重複排除」である。

ストレージ消費容量を大幅に削減できる「重複排除」

ストレージ・システムにおける「重複排除」とは、新たに保存したデータをストレージ内の既存データと比較し、重複個所があったらその部分を排除することで、ストレージの消費容量を節約する技術である(図1)。「データ・デデュープリケーション」(あるいは、その略称である「データ・デデュープ」)とも呼ばれる。

重複排除の適用イメージ。この図の中で同色のボックスは、内容が同じデータ・ブロック
図1 重複排除の適用イメージ。この図の中で同色のボックスは、内容が同じデータ・ブロック

データが急激に増加し続ける今日、重複排除は保存すべきデータの容量を大幅に削減し、ストレージ容量の利用効率を向上させる技術として注目されており、現在提供されている多くのストレージ製品に実装されている。

一般的に重複排除では、ブロック単位でデータを比較するという方式を取っている。新しいデータ・ブロックを以前に保存したブロックと比較し、すでに同じブロックが保存されている場合は、新しいブロックを廃棄して既存ブロックへのポインタを作成する。

データ・ブロックの重複を特定するには、ブロックから「フィンガー・プリント」(そのブロックに含まれるデータのハッシュ値)を算出し、それを比較するという方式が一般的である。同一のフィンガー・プリントを持つ2つのデータ・ブロックは重複していると判断するわけだ。

ただし、この方式では、保存すべきデータ・ブロックまでも排除してしまうおそれがある。内容が異なるブロックから同一のハッシュ値が生成される可能性があるからだ。このような現象は「ハッシュ・コリジョン」と呼ばれ、発生の可能性はきわめて低いが、まったくないとは言い切れない。

ハッシュ・コリジョンが発生する確率を減らすには、より複雑なアルゴリズムが必要になる。ただし、この場合、算出するハッシュ値が大きくなり、CPUへの負荷が増大してパフォーマンスが低下する可能性がある。また、ハッシュ値が大きくなれば、フィンガー・プリントの保存スペースも多く必要になる。

信頼性向上と負荷軽減の両立が重複排除のかなめ

フィンガー・プリントを用いる重複排除においては、ハッシュ・コリジョンによる信頼性の低下を抑えるのと同時に、ストレージ・システムに負荷を与えないための仕組みがかなめになる。ここでは、その具体的な仕組みを、ネットアップの「FAS」ストレージを例に説明する。

FASシリーズに搭載されているストレージ専用OS「Data ONTAP」では、ハッシュ値を「重複の可能性があるブロックの特定」だけに使用しており、ハッシュ値の一致が認められた時点ではデータ・ブロックの排除は行わない。その代わりに、重複の可能性がある2つのブロックは1バイト単位で比較し、2つのブロックが完全に同一であることを確認してから排除する。こうすることで、ハッシュ・コリジョンによるデータ喪失を回避する。

また、Data ONTAPでは、データの整合性を確保するために、ディスク上のすべてのブロックでチェックサムによるエラー検出を行っている。このチェックサムを重複排除のフィンガー・プリントに流用して2重に検証することで、信頼性を高めている。なお、チェックサムの計算はもともと実装されているプロセスであるため、この処理で負荷が増えることはない。

加えて、通常のI/O処理への影響を与えないように、重複排除を独立したバッチ・プロセスとして実行するという方式を取るなど、ストレージ・システムへの負荷軽減のためにもさまざまな工夫が施されている。


阿部恵史
ネットアップ株式会社 マーケティング本部 ソリューションマーケティング部 部長
製造系企業の情報システム販社、外資系ITベンダーなどを経て2008年9月より現職。その間、企業の基幹系システムの設計・開発・導入、インターネット TV開発、UNIX系ハイエンドサーバ、クラスタシステムの導入コンサルティングなどを経験し、2002年よりマーケティング職に転身。現在もデータセンターインフラの仮想化・自動化およびグリッドソリューションを担当。

関連情報