サイトアイコン CAD日記

Windows Serverのデータ重複除去をやってみた

Windows Serverにはデータ重複除去という機能があって、ディスク容量を大幅に節約できる。
一般的には50%程度の使用量を減らすことができ、用途によってこの数字が変わるが仮想化ライブラリでは90%もの削減効果が得られるとされている。
ファイルをチャンクと呼ばれる可変長のブロック(32~128KB)に分割して、チャンク単位で内容が一致しているかどうかを判定している。よって、ファイル単位での一致による削減効果以上の結果が得られる。

Windows Server 2012から採用された機能で、サーバーマネージャーから容易な操作で有効化できる。
・サーバーの役割追加で、「データ重複除去」を有効とする
・ボリュームから、ドライブを指定して右クリックで「データ重複除去の構成」 ※Cドライブは指定不可

気になるのはパフォーマンス。重複を検知して除去するのはリアルタイムではなくバッチ処理で実行。夜間帯など普段人が使わない時間とすることを想定している。重複除去の対象とするファイルについて、経過日数を指定できて既定値は5日。この数字を小さくすることで、重複除去の効果が大きくなるが、バッチ処理でのオーバーヘッドが大きくなる。通常利用(つまりファイルIOのレスポンス)はどうかということは、最後に検証結果を記す。

実機サーバーでのサイズの変化は以下の通り。
【重複除去実施前(使用領域221GB)】

【重複除去実施後(使用領域103GB】

サーバーマネージャーの表記では、重複除去率53%。

重複除去によるデータ削減効果は、対象ドライブにデータがある場合に限られる。バックアップ用にと、別ドライブや別サーバーにコピーした場合は、データ削減前のファイル容量になる。また、何らかの理由で重複除去機能を無効にする場合は、対象ドライブ内にデータ削減前の容量が必要となることも注意が必要となる。

約500MB(ファイル数133フォルダ数18)のファイル群に対して、アクセスを行った際の時間計測行ったところ、重複除去ドライブと非重複除去ドライブで体感上の違いはわからなかった。
だったらと、、一般的によく使われているストレージ性能評価ツール「CrystalDiskMark」を使って計測した。
【重複除去実施前】

【重複除去実施後】

以下MSサイト記事より、重複除去最適化ジョブによってファイルの更新日時が変わるという懸念があったため、実機で調査。
CSV でデータ重複除去を有効にした後の既知の問題

1.重複除去無効状態から有効状態に変更を実施
2.1が完了した後に、1の実施開始日時以降に変更されたファイルがないことを確認
CSV=クラスタ共有ボリュームで、複数のHyper-V仮想マシンをクラスター化するものであるため、物理サーバーでは関係ないというのが結論。

【データ重複除去の仕組み】
以下の図は、別サイトのわかりやすいものを引用した。

ようするに、ファイルの実体をチャンクストアに移して、ファイルからみると実体であるチャンクストアのポインターを持つということで、チャンクの重複があればあるほど使用するディスクのサイズが減るというものだ。
こんな仕組みということを考えれば、重複除去によってファイルIOが極端に遅くなることはないと言えるし、場合によっては速くすらなることがわかる。

【参考URL】
第4回 ストレージの利用効率を高めるデータ重複除去機能
Windows Server 重複除去を試してみた!(その1)
Windows Server 2012のデータ重複排除機能を試す

モバイルバージョンを終了