Bacula Enterprise Editionの重複排除機能
Bacula Enterprise Editionの重複排除機能である、Global Endpoint Deduplication(GED)についてご紹介します。
本機能は非常に強力なものですので、ぜひご利用いただきたい機能です。
Baculaの2つのレベルの重複排除
まず、Baculaには異なるレベルの重複排除があります。
- ファイルレベルの重複排除
Base jobを使用し、以前のバックアップから更新されていないファイルを更新から除外する - ブロックレベルの重複排除
GEDプラグインを使用し、ブロックレベルでデータを分析して重複排除を行う
1.はコミュニティ版でも使用できますが、2.はBacula Enterprise Edition 8.0.x以降のシルバーライセンス(中~大規模向け)以上での付加機能です。 今回ご説明するのは、2.のほうの重複排除です。
GEDが行う重複排除
GEDでは、ファイルをチャンクと呼ぶ単位に区切って保存し、またDedupEngineでそれらのインデックスを作成します。そしてバックアップ時にハッシュを比較することで、既にバックアップしてあるデータを検出し不要なバックアップを除外します。 例えばある文章に一行追加した時、ファイルレベルの重複排除では文章全体を再バックアップしますが、ブロックレベルでの重複排除であれば追加した一行だけをバックアップします。
メリット
GEDを使うことで、次のようなメリットが得られます。
- 大体のケースでディスクスペースが半分程度で済む。最高では10~20倍ほど縮小。 (1.5TBのOracleDatabaseが500GBのディスクスペースで済んだ実例あり)
- 圧縮と組み合わせて使うことができる。
- バックアップのためのネットワーク通信量を大幅に削減する。
- 高速なバックアップ/リストアを実現する。
- 特別なハードウェアを追加する必要がない
注意事項
GEDの導入の際には、以下の点を考慮する必要があります。
- 余分な CPU パワー、メモリパワーが必要。(ハッシュ計算・圧縮に使用)
- データチャンクのインデックス保存先には SSD ドライブを推奨。
- パフォーマンスチューニングが少し複雑。
- 不良ブロックがあると影響範囲が大きくなる。対策にはRAIDを推奨。XFSファイルシステムを推奨。(可能な場合は ZFS)
※動作自体は全てのファイルシステムに対応 - ハッシュキーの衝突が起きた場合はデータ破壊が発生。 対策としてMD5ではなく、より強度のあるSHA512/256 の利用を推奨。
- ディスクデバイスのみ対応。テープデバイスでは非対応。
GEDの動作概要
さて、ではどのような動作を行うのかを簡単に説明します。 重複排除機能をファイルデーモン側とストレージデーモン側両方で動作させる場合と、 ストレージデーモン側のみで動作させる場合の2つがあります。
- ファイルデーモン側とストレージデーモン側両方で動作させる場合
ファイルデーモン側からチャンクのハッシュコードのみをストレージデーモン側に送信します。ストレージデーモン側は重複しないもののみをファイルデーモン側に要求します。この場合、ファイルデーモンとストレージデーモン間のネットワーク流量を削減する効果があります。
- ストレージデーモン側のみで動作させる場合
ファイルデーモンからは通常通りデータを送信し、ストレージデーモン側でハッシュ計算を行い重複排除をしてからチャンクを保存します。
リストア時の動作概要
クライアント側での復元(リハイドレーション)を有効にする場合と無効にする場合の2つがあります。
- クライアントリハイドレーションが有効
ストレージデーモンからファイルデーモンに参照情報のみを送信。 - クライアントリハイドレーションが無効
ストレージデーモンからファイルデーモンに全ての参照情報とチャンクを送信。
※ファイルデーモンが参照情報を受け取ると、ファイルデーモンはローカルデータを使用してリハイドレーションを行う。
最後に
その他、重複排除の統計情報の表示機能や、データ整合性をチェックするツールもあります。
特に、バックアップ対象マシンが500台以上で大量のバックアップデータがあり、以下のような状況にある場合には、大きな効果がありますのでおすすめです。
- バックアップデータによってネットワークが逼迫している
- ファイル内容が徐々に更新されていくようなデータベースやファイルが多い