Windows Server 2012研究所

Windows Server 2012のデータ重複排除機能を試す

 前回は、新しいファイルシステムの「ReFS」、複数のストレージを一括して管理・運用できる「記憶域プール」をテストした。今回は、Windows Server 2012に新しく追加されたデータ重複排除機能をテストしていく。

ストレージを効率よく使うデータ重複排除機能

 インターネットの普及、スマートフォンやデジタルテレビなどのデジタル家電の普及により、デジタルデータが急速に膨張している。調査会社のIDCなどによれば、2009年には世界中のデジタルデータが80万ペタバイトに到達し、1年後の2010年には120万ペタバイトになるという。さらに2020年には35ゼタバイト(3670万ペタバイト)に達すると予測している。IDCが予測するように、世界中でのデジタルデータは指数関数的に増えてきている。

 デジタルデータのビッグバンは、インターネット領域だけでなく、企業においても起こっている。今まで利用されていなかった膨大なログデータを使ったビッグデータによる分析、社内ドキュメントのデジタル化など多岐にわたっている。

 特にドキュメントのデジタル化は、テキスト情報だけでなく、写真やイメージ、CADデータ、音声データ、動画データなど、マルチメディア化が進んでいる。さらに、さまざまなデータがデジタル化されることで、ユーザーが簡単にコピーを行い、同じドキュメントや少し修正したドキュメントが多数存在するようになった。

 このようなデータのビッグバンに対応するように、企業でもストレージシステムをどんどん拡張してきているが、コスト面での大きな負担になってきている。

 そこで注目を集めたのが、データ重複排除機能だ。

 例えば、ドキュメントを作成する時に多くのユーザーがかかわると、それぞれが個人領域に作成途中のコピーを保存していることが多い。ほんの少しの修正であっても、コピーが保存されていると、オリジナルとほぼ同じだけの容量を消費してしまう。

 しかし、システム側で重複した要素を1つにまとめることができれば、消費する容量が少なく済む。これが重複排除の発想だ。

 データ重複排除は、時間のかかるバックアップなどで普及し始め、最近ではプライマリのストレージシステムでも利用されるようになった。それでも、重複排除機能を持ったストレージはまだ高い。そこで、Microsoftでは、Windows Server 2012の標準機能としてデータ重複排除機能を搭載した。

Windows Server 2012のデータ重複排除機能の仕組み

 Windows Server 2012の重複排除機能では、ファイルを32~128KBの可変サイズの小さなブロックに分割し、ビットパターンを作る。ファイルを細かく分割した1つ1つをチャンクと呼び、ビットパターンをスクラブと呼ぶ。

 システム側では、同じビットパターンのチャンクがあった場合に、スクラブの番号だけを書き込み、データは削除してしまう。ファイルは、チャンクストアに存在するチャンクの並び順が登録されている仮想的なファイル(実際にデータを持たないインデックスのようなもの)となる。こうした仕組みにより、ストレージ全体でデータの保存容量を削減できるようにしているのだ。

 こうしたブロックレベルの重複排除は、ファイルレベルの重複排除と比べると、効率よく容量を圧縮してくれる。実際に、ファイルサーバーなどでは50%近い容量の圧縮を行るし、仮想ディスク(VHD)などでは、80%以上の容量圧縮を示すという。

 なお、データ重複排除機能は、ユーザーの設定でオン/オフすることができる。また重複排除を適用するファイルは、一定期間(30日間)書き込みがないファイルを対象としているほか、特定のファイル(拡張子)を重複排除機能の対象外に設定することも可能だ。

 ちなみに、前回の記事で紹介した記憶域プールのストレージ、物理ドライブ、仮想ファイルのドライブ(VHD、VHDX)でも、重複排除機能を利用することができる。

Windows Server 2012の重複排除機能は、ファイルをブロック(チャンク)に分割する。チャンクに分割したデータをチャンクプールにあるチャンクと比較する。同じチャンクがあれば、2つ目以降の同一のチャンクは破棄され、チャンクのナンバーがファイルのメタファイルに書き込まれる。つまり、ファイルは実際のデータではなく、チャンクのナンバーが並んだメタファイルになっている(Building Windowsより)
データ重複排除では、ユーザードキュメントでも50%の圧縮、VHDファイルでは95%の圧縮を実現する(TechNetより)

データ重複排除機能の制限

 データ重複排除機能には、利用する上でいくつかの制限がある。まず、データ重複排除ができるストレージは、NTFSフォーマットのボリュームに限られている。Windows Server 2012で新しく搭載された新しいファイルシステムのReFSはサポートされていない(将来的にはサポートされることを期待したい)。

 システムボリュームやブートボリューム、SIS(単一インスタンス・ストア)ボリュームについても、データ重複排除は行われないし、暗号化されたファイル、64KBよりも小さいファイルなどは、データ重複排除の対象にはならない。フェイルオーバークラスタリングで用いるクラスタの共有ボリューム(CSV)にも、データ重複排除は設定できない。ただし、ファイバチャネル(FC)やiSCSI接続のボリュームなどは、データ重複排除が行る。

 それから、Windows Server 2012のデータ重複排除では、高額なストレージシステムのようにリアルタイムでのデータ重複排除は行わない。これは、データ重複排除がストレージやCPUに対して大きな負荷をかけるためだ。リアルタイムのデータ重複排除を行うと、ほかのジョブに大きな影響を与えてしまうことを懸念し、週末や夜間などに、スケジューリングでデータ重複排除を動かすようにしている。

データ重複排除機能を利用してみる

 データ重複排除機能を利用するには、サーバーマネージャーの「役割と機能の追加」から、「データ重複排除」をインストールしておく必要がある。

データ重複排除機能を利用するためには、サーバーマネージャーの「役割と機能の追加」からインストールする
「ファイルサービスおよび記憶域サービス」→「ファイルサービスおよびiSCSIサービス」→「データ重複排除」を選択する

 「データ重複排除」がインストールされていれば、NTFSフォーマットでボリュームを作成する段階で、データ重複排除を行うかどうかのウィザードが表示される。また、すでに作成されているボリューム(NTFSフォーマット)に対して、データ重複排除を適用することも可能だ。

データ重複排除機能がインストールされれば、すでに作成されているNTFSボリュームに対して、データ重複排除を構成することもできる
データ重複排除機能をインストール後、新しいボリュームを作成すると、ウィザードに重複排除設定が表示される

 機能として「データ重複排除」をインストールすると、\Windows\System32にddpeval.exeというプログラムがインストールされる。既存のボリュームに対してデータ重複排除を設定すれば、どのくらいのデータ圧縮が行えるかをddpeval.exeが事前にチェックしてくれる。

 このプログラムはWindows Server 2012の環境に依存していないため、管理者がddpevalプログラムをコピーし、ほかのコンピュータで分析することもできる。対象となるOSは、Windows 8、Windows 7、Windows Server 2008 R2だ。

 注意が必要なのは、ddpeval.exeによりボリュームの分析が終了するまでの時間が、ファイルの量によって左右されること。多数のデータが保存されているボリュームでは丸一日かかることもあるから、ddpeval.exeを実行する際には注意したい。

ddpeval.exeで、どのくらい容量が削減できるのかチェックする。60GBを消費していたボリュームが30GBに圧縮されている。30GB分のファイルが重複排除されたことになる

 データ重複排除の設定では、ファイルの作成後、設定した日数が経過したファイルを対象にできる。さらに、データ重複排除の対象としないファイル(拡張子を入力)やフォルダーも指定可能になっている。

 データ重複排除のスケジュール設定では、「バックグラウンドの最適化を有効にする」、「スループットの最適化を有効にする」という項目がある。

 「バックグラウンドの最適化を有効にする」という項目は、デフォルトでオンになっている。この項目がオンになっていれば、指定した時間にデータ重複排除が動作し、1時間ごとに無期限で繰り返される。

 ちなみに、システムへの負荷を最小にするため、システムメモリの25%だけを消費するように設定されているし、システムが高負荷状態にある時は、データ重複排除の動作は停止される。

 「スループットの最適化を有効にする」をオンにすると、システムメモリの50%を使用して、データ重複排除が実行される。データ重複排除は非常に重いジョブのため、指定した曜日、時間に動作するように設定できる。

データ重複排除のスケジュールを設定する。データ重複排除は負荷が高いので、週末や夜間などの低負荷時に動作するように設定する

 実際に同じビデオファイルを複数コピーして、データ重複排除を稼働させると、オリジナルのビデオファイル+αにまで、ボリュームの容量を削減してくれる。

3つのビデオファイルを4回コピーしてみた。オリジナルは3つのファイルで30GB。トータルで120GBになったが、データ重複排除を行うと、30GBまでに容量が小さくなった
サーバーマネージャー→ファイルサービスと記憶域サービス→ボリュームには、データ重複排除により、どれだけ容量が小さくなったかパーセンテージで表示されている

 ただし、現実に利用しているファイルサーバーなどで、どのくらいの容量削減につながるかは、実際に分析してみないとわからない。Microsoftでは、ファイルサーバーなどでは50%近い容量の削減が図れるとしているが、本当のところは、実際に試してみるしかない。しかしデータ重複排除を行うには、サーバーに対して大きな負荷がかかるため、慎重にテストしてみてから、本番環境に導入するべきだろう。

 データ重複排除に向かないサーバーとしては、Hyper-Vホスト、VDIホスト、WSUSサーバー、SQL Server、Exchange Serverなど、頻繁にファイルの更新が行われるサーバーが挙げられている。ただVDIホストなどは、個々のユーザー環境に関しては頻繁に更新されるが、マスターイメージやテンプレートなどは、頻繁に更新が行われないから、やり方によっては、データ重複排除機能を稼働させてもメリットがあるだろう。

 データ重複排除は、ボリュームごとに設定が行るため、VDIホストなどでも、うまくボリュームを分ければ、メリットを享受することも可能だと思う。

 筆者は、Windows Server 2012で、標準機能としてはデータ重複排除機能が入ったことで、今後多くのユーザーがデータ重複排除を利用するようになるだろうと予測している。

(山本 雅史)