XFSファイルシステム・バックアップと復元

xfsdumpおよび xfsrestoreを使用してXFSファイルシステムをバックアップ、復元、およびクローニングする方法について説明します。

xfsdumpパッケージには、ユーティリティのxfsdumpxfsrestoreが含まれています。xfsdumpコマンドは、XFSファイル・システム内のファイルを調べて、バックアップが必要なファイルを特定し、それらをストレージ・メディアにコピーします。xfsdumpコマンドを使用して作成するバックアップは、エンディアン・アーキテクチャが異なるシステム間でポータブルです。xfsrestoreコマンドは、XFSファイル・システムの完全バックアップまたは増分バックアップをリストアします。バックアップからは、個別ファイルやディレクトリ階層をリストアすることもできます。

ノート

LVMスナップショットはボリュームのスパース・クローンをすぐに作成するが、xfsdumpはそれと同じと異なり、時間をかけてファイル・システム・データのコピーを作成します。

バックアップはダンプ・セッションと呼ばれ、/var/lib/xfsdump/inventoryのインベントリ・データベースに記録されます。インベントリを使用すると、どのバックアップが行われたか、どの時点でどのデバイスに作成されたかを簡単に確認できます。インベントリを表示するには、xfsdump -Iコマンドまたは xfsrestore -Iコマンドを使用します。インベントリを対話形式でプルーニングするには、xfsinvutil -iコマンドを使用します。

詳細は、xfsdump(8)xfsrestore(8)およびxfsinvutil(8)のマニュアル・ページを参照。

XFSファイル・システムのバックアップの作成

xfsdumpコマンドを使用して、XFSファイル・システムのバックアップを、テープ・ドライブなどのデバイスや、様々なファイル・システム上のバックアップ・ファイルに作成できます。

バックアップは、同じデバイスに書き込まれる複数の物理メディアにまたがってもかまいません。また、同じメディアに複数のバックアップを書き込むこともできます。ファイルには、単一のバックアップのみを書き込むことができます。このコマンドでは、物理メディアにある既存のXFSバックアップは上書きされません。既存のバックアップを上書きする必要がある場合は、適切なコマンドを使用して物理メディアを消去する必要があります。

詳細は、xfsdump(8)マニュアル・ページを参照してください。

  1. XFSファイル・システムの完全バックアップを作成するには、xfsdump -l 0コマンドを使用します。

    たとえば、次のコマンドでは、XFSファイル・システム(/boot)のレベル0(ベース)バックアップがデバイス/dev/st0に書き込まれ、そのバックアップにセッション・ラベルが割り当てられます。

    sudo xfsdump -l 0 -L "Backup level 0 of /boot $(date)" -f /dev/st0 /boot

    例のように、ダンプ先はデバイスである必要はありません。または、ファイル・システム上のディレクトリにダンプ・ファイルを格納するファイル・パスを指定することもできます。たとえば、/backups/boot.0.xfsdumpにXFSダンプ・ファイルを作成するには、次を実行します。

    sudo xfsdump -l 0 -L "Backup level 0 of /boot $(date)" -f /backups/boot.0.xfsdump /boot
  2. xfsdump -lコマンドを使用して増分バックアップを作成しますが、必要な増分レベルを指定します。

    同じコマンドを使用して既存のバックアップに対して相対的な増分ダンプを作成しますが、レベルを変更して増分レベルを示します。たとえば、ベース(レベル0)のバックアップ後にすべての変更を含む増分バックアップを作成するには、レベルを1に設定します。

    sudo xfsdump -l 1 -L "Backup level 1 of /boot $(date)" -f /dev/st0 /boot
    レベル1バックアップではレベル0バックアップより後のファイル・システム変更のみが記録され、レベル2バックアップでは最新のレベル1バックアップより後の変更のみが記録され、以後同様にレベル9まで続きます。増分バックアップを実行するには、前のレベルのバックアップが存在する必要があります。
  3. xfsdump -Rコマンドを使用して中断されたバックアップを再開します。

    Ctrl-Cを入力してバックアップを中断し、xfsdump-Jオプションを指定しない場合(ダンプ・インベントリを抑制)は、-Rオプションを指定することにより、後日ダンプを再開できます。次に例を示します。

    sudo xfsdump -R -l 1 -L "Backup level 1 of /boot $(date)" -f /dev/st0 /boot

    以前中断したセッションのバックアップ・セッション・ラベルが上書きされます。

XFSファイル・システムのバックアップからのリストア

xfsrestoreコマンドを使用して、XFSファイル・システムで作成したバックアップに関する情報の確認や、バックアップからのデータのリストアを行います。

  1. xfsrestore -Iコマンドを使用してバックアップ・インベントリを表示することで、使用可能なすべてのバックアップを確認します。
    xfsrestore -Iコマンドは、セッションIDやセッション・ラベルなど、使用可能なバックアップに関する情報を表示します。
  2. xfsrestoreコマンドを使用し、-Sオプションまたはセッション・ラベル(-Lオプションを使用)を使用してバックアップ用にセッションIDを指定して、完全バックアップをターゲットの場所にリストアします。

    たとえば、セッションIDを指定してレベル0バックアップからXFSファイル・システムをリストアするには、次のコマンドを使用します。

    sudo xfsrestore -f /dev/st0 -S c76b3156-c37c-5b6e-7564-a0963ff8ca8f /mnt
  3. xfsrestore -rコマンドを使用して、レベル0のバックアップからすべてのデータを累積的にリストアし、使用可能なすべての増分バックアップを処理します。

    -rオプションを指定して、レベル0のバックアップからすべてのデータを累積的にリカバリし、そのバックアップに基づく上位レベルのバックアップを累積的にリカバリします。

    sudo xfsrestore -r -f /dev/st0 -v silent /mnt

    このコマンドは、レベル0バックアップに基づいてアーカイブ内のバックアップを検索し、各バックアップの順番にリストアするかどうかを選択するプロンプトを表示します。選択したバックアップのリストア後に、このコマンドは終了します。なお、このコマンドは複数回実行する必要があります。最初にレベル0バックアップのリストアを選択し、その後、ファイル・システムのデータをリストアするために必要な最新のバックアップを含め、より高いレベルのバックアップを選択します。

    ノート

    XFSファイル・システムの累積リストアが完了したら、xfsrestoreコマンドによって宛先ディレクトリに作成される、housekeepingディレクトリを削除します。

  4. xfsrestore -sコマンドを使用して、バックアップから単一のファイルまたはサブディレクトリを抽出します。

    たとえば、/var/logの内容をバックアップから/tmp/restored_logsのターゲット・ディレクトリにリカバリするには、次を実行します。

    mkdir /tmp/restored_logs
    sudo xfsrestore -s var/log -f /backups/root.0.xfsdump /tmp/restored_logs/
  5. xfsrestore -iコマンドを使用して、対話型モードでリストア・コマンドを実行します。
    対話型リストア・ツールには、リストア・シェル内で実行してダンプ・セッションをナビゲートし、指定した場所に最終的に抽出するアイテムを追加または削除できるサブコマンドが用意されています。
    • cd: ダンプ・セッション内のディレクトリを変更します。
    • ls: ダンプ・セッション内の現在のディレクトリの内容をリストします。
    • add: 現在のディレクトリから抽出するアイテムのキューにファイルまたはディレクトリを追加します。
    • delete: 抽出するアイテムのキューからファイルまたはディレクトリを削除します。
    • extract: キュー内のアイテムをターゲットの場所に抽出します。

    たとえば、/backups/boot.0.xfsdumpのダンプ・ファイルからファイルをリカバリし、/tmp/restore_bootのターゲットの場所に抽出するには、次のように実行します。

    sudo xfsrestore -i -f /backups/boot.0.xfsdump /tmp/restore_boot

XFSファイルシステムをクローニングする

xfsdumpコマンドと xfsrestoreコマンドを組み合わせて、あるXFSファイルシステムの内容を別のXFSファイルシステムにコピーします。

ファイル・システムをクローニングするこの方法は、ライブでマウントされたファイル・システムで実行でき、デバイスのブロック・コピーよりも高速です。さらに、パイプ・コマンドを使用することで、このアプローチを拡張してSSHを使用してリモート・システムにリストアできます。

  1. -Jオプションを使用してxfsdumpコマンドとxfsrestoreコマンドを結合し、XFSファイル・システム上のコンテンツ全体を別のファイルにコピーします。

    -Jオプションは、コマンドが実行する通常のダンプインベントリのハウスキーピングを抑制します。次に例を示します。

    sudo xfsdump -J - /mnt | xfsrestore -J - /mnt_clone
  2. SSHを使用して、リモート・システムへのクローニング操作を実行します。

    たとえば、次のようなコマンドを実行できます。

    sudo xfsdump -J - /home | ssh backup_user@standby.example.com "sudo xfsrestore -J - /home"