第15章 Glusterfind を使用した増分バックアップアシスタンス

Glusterfind は、以前のバックアップセッションと現在の期間の間に変更されたファイルの一覧を提供するユーティリティーです。このコマンドは、リストを取得するために一定の間隔で実行できます。異なるユースケースでは、同じボリュームに対して複数のセッションを使用できます。記録される変更は、新規ファイル/ディレクトリー、データ/メタデータの変更、名前変更、削除です。

15.1. Glusterfind 設定オプション

以下は、Glusterfind で利用可能なリスト設定オプションです。
  • Glusterfind Create
  • Glusterfind Pre
  • Glusterfind Post
  • Glusterfind Query
  • Glusterfind List
  • Glusterfind Delete
注記
セッションの glusterfind pre、glusterfind post、glusterfind list、および glusterfind delete などの glusterfind 設定コマンドはすべて、セッションが作成されたノードでのみ実行する必要があります。

Glusterfind Create

ボリューム内の特定インスタンスにセッションを作成するには、以下のコマンドを実行します。

# glusterfind create [-h] [--debug] [--force] <SessionName> <volname> [--reset-session-time]
詳細は以下のようになります。
--force: 新しいノード/ブリックがボリュームに追加されると実行されます。
--reset-session-time: セッション時間のリセットを強制的に実行します。次の増分実行はこの時間から開始します。
--help OR -h: コマンドのヘルプを表示するのに使用します。
SessionName: セッションの一意の名前。
volname: create コマンドを実行するボリュームの名前。
以下は例になります。
# glusterfind create sess_vol1 vol1
Session sess_vol1 created with volume vol1

Glusterfind Pre

glusterfind Pre 操作の前に、すべてのノードがオンラインであることを確認します。変更したファイルおよびディレクトリーの一覧を取得して outfile に保存するには、以下のコマンドを実行します。

# glusterfind pre [-h] [--debug] [--no-encode] [--full] [--disable-partial] [--output-prefix OUTPUT_PREFIX] [--regenerate-outfile] [-N] [--tag-for-full-find TAG_FOR_FULL_FIND] [--type {f,d,both}] [--field-separator FIELD_SEPARATOR] <session> <volname> <outfile>
詳細は以下のようになります。
--help OR -h: コマンドのヘルプを表示します
--debug: デバッグモードを有効にします。
--no-encode: ファイルパスは、デフォルトで出力ファイルにエンコードされます。このオプションは、ファイルパスのエンコーディングを無効にします。
--full: フル検索を実行します。
--disable-partial: デフォルトで有効になっている partial-find 機能を無効にします。
--output-prefix OUTPUT_PREFIX: outfile で指定したパス/名前へのプレフィックス。
--regenerate-outfile: 新しい outfile を再生成し、最後の前のコマンドから生成した outfile を破棄します。
-N OR --only-namespace-changes: 名前空間の変更のみを一覧表示
--tag-for-full-find TAG_FOR_FULL_FIND: 完全な検索操作中に生成されるファイル名のタグ接頭辞。デフォルト値は NEW です。
--type {f,d,both}: type: f、ファイルのみ。d、ディレクトリーのみ、default = both
--field-separator: glusterfind 出力がフィールドを分離するために使用する文字/s を指定します。デフォルトでは、これは単一のスペースですが、ファイル名にスペースが含まれる場合は、glusterfind の出力を自動的に解析できるように区切り文字を変更することができます。
session: セッションの一意の名前。
volname: create コマンドを実行するボリュームの名前。
outfile: 変更されたファイルのインクリメント一覧。
以下に例を示します。
# glusterfind pre sess_vol1 vol1 /tmp/outfile.txt
Generated output file /tmp/outfile.txt
注記
出力形式は <TYPE> <PATH1> <PATH2> です。使用できる型値は、NEW、MODIFY、DELETE、および RENAME です。PATH2 は、タイプが RENAME の場合にのみ適用されます。以下は例になります。
NEW file1
NEW dir1%2Ffile2
MODIFY dir3%2Fdir4%2Ftest3
RENAME test1 dir1%2F%2Ftest1new
DELETE test2
--no-encode オプションを使用した出力例
NEW file1
NEW dir1/file2
MODIFY dir3/dir4/test3
RENAME test1 dir1/test1new
DELETE test2

Glusterfind Post

以下のコマンドを実行すると、セッション時間が更新されます。

# glusterfind post [-h] [--debug] <SessionName> <volname>
詳細は以下のようになります。
SessionName: セッションの一意の名前。
volname: コマンド実行後の post コマンドが実行されるボリュームの名前。
以下は例になります。
# glusterfind post sess_vol1 vol1
Session sess_vol1 with volume vol1 updated

Glusterfind List

クラスターに存在するアクティブなセッションと対応するボリュームの一覧を表示するには、以下のコマンドを実行します。

# glusterfind list [-h] [--session SESSION] [--volume VOLUME] [--debug]
詳細は以下のようになります。
--session SESSION: そのセッションに関連する情報を表示します。
--volume VOLUME: そのボリュームに対応するアクティブなセッションをすべて表示します。
--help OR -h: コマンドのヘルプを表示します
以下に例を示します。
# glusterfind list
SESSION VOLUME SESSION TIME
--------------------------------------------------
sess_vol1 vol1 2015-06-22 22:22:53

Glusterfind Query

glusterfind query サブコマンドは、指定されたタイムスタンプに基づいて変更されたファイルのリストを提供します。これらのコマンドは、変更ログ情報を確認しません。バックアップソフトウェアが、glusterfind 外の独自のチェックポイントおよびタイムスタンプを維持している場合は、glusterfind query サブコマンドを使用します。glusterfind query サブコマンドは、以下のように使用できます。

# glusterfind query [-h] [--since-time SINCE_TIME] [--end-time END_TIME] [--no-encode] [--full] [--debug] [--disable-partial] [--output-prefix OUTPUT_PREFIX] [-N] [--tag-for-full-find TAG_FOR_FULL_FIND] [--type {f,d,both}] [--field-separator FIELD_SEPARATOR] volname outfile
詳細は以下のようになります。
--help OR -h: コマンドのヘルプを表示します
--since-time SINCE_TIME: Linux エポックの日付 (1970-01-01 00:00:00 UTC) 以降、タイムスタンプを秒単位で想定します。現在の Linux エポック時間は echo $(date +'%s') コマンドを実行して判断できます。
--end-time END_TIME: Linux エポックの日付 (1970-01-01 00:00:00 UTC) から、秒単位でタイムスタンプが想定されます。現在の Linux エポック時間は echo $(date +'%s') コマンドを実行して判断できます。
--no-encode: ファイルパスは、デフォルトで出力ファイルにエンコードされます。このオプションは、ファイルパスのエンコーディングを無効にします。
--full: フル検索を実行します。これは、--since-time および --end-time で使用できません。
--debug: デバッグモードを有効にします。
--disable-partial: デフォルトで有効になっている partial-find 機能を無効にします。
--output-prefix OUTPUT_PREFIX: outfile で指定したパス/名前へのプレフィックス。
-N OR --only-namespace-changes: 名前空間の変更のみを一覧表示
--tag-for-full-find TAG_FOR_FULL_FIND: 完全な検索操作中に生成されるファイル名のタグ接頭辞。デフォルト値は NEW です。
--type {f,d,both}: type: f、ファイルのみ。d、ディレクトリーのみ、default = both
--field-separator: glusterfind 出力がフィールドを分離するために使用する文字/s を指定します。デフォルトでは、これは単一のスペースですが、ファイル名にスペースが含まれる場合は、glusterfind の出力を自動的に解析できるように区切り文字を変更することができます。
volname: create コマンドを実行するボリュームの名前。
outfile: 変更されたファイルのインクリメント一覧。
以下に例を示します。
2 つのタイムスタンプ間で変更されたファイルを取得するには、以下のコマンドを実行します。
# glusterfind query volname --since-time timestamp1 --end-time timestamp2 output_file.txt
タイムスタンプは、Linux エポックの日付 (1970-01-01 00:00:00 UTC) からの秒単位で想定されます。現在の Linux エポック時間は、コマンドラインで echo $(date +'%s') を実行することで出力できます。
以下のコマンドを実行して、ボリュームのファイルをすべて取得できます。
# glusterfind query volname --full output_file.txt
完全検索操作を実行する場合は、タグに応じてファイルのサブセットを取得することもできます。たとえば、ボリューム上の新規ファイルをすべて取得するには、以下のコマンドを実行します。
# glusterfind query volname --full --tag-for-full-find NEW output_file.txt
デフォルトでは、glusterfind の出力は、単一のスペースを使用してフィールドを分割します。ファイル名にスペースが含まれる場合は、glusterfind の出力を自動的に解析するために区切り文字を変更できます。--field-separator オプションを使用して、区切り文字を 1 つ以上の文字に設定できます。以下のコマンドは、フィールド区切り文字を == に設定します。
# gluster query volname --full output_file.txt --field-separator "=="

Glusterfind Delete

その特定のセッションに関連するセッション情報をすべて消去するには、以下のコマンドを実行します。

特定のセッションでさらにバックアップが作成されないようにしてください。
# glusterfind delete [-h] [--debug] <SessionName> <volname>
詳細は以下のようになります。
SessionName: セッションの一意の名前。
volname: delete コマンドを実行するボリュームの名前。
以下は例になります。
# glusterfind delete sess_vol1 vol1
Session sess_vol1 with volume vol1 deleted

15.1.1. 既存の Glusterfind セッションからのブログの追加または置き換え

新しいブリックが追加されたり、既存のブリックを交換したら、既存のセッションを機能させるには forceglusterfind create コマンドを実行します。以下は例になります。
# glusterfind create existing-session volname --force