Relax-and-Recoverを用いたサーババックアップ・リストア

Relax-and-Recoverを用いて、サーババックアップ・リストアをする。

何ができるか?

想定環境

  • バックアップ・リストア対象サーバ(192.168.100.1)
    • Relax-and-Recoverをインストール
  • バックアップ保管用NFSサーバ(192.168.100.2)

Install NFS Server :2

NFSサーバを構築する。

dnf -y update
dnf -y install nfs-utils firewalld

nfs_dir=/nfs
mkdir -p ${nfs_dir}
echo "${nfs_dir} 192.168.100.0/24(rw,no_root_squash)" > /etc/exports
systemctl enable --now rpcbind nfs-server firewalld
firewall-cmd --add-service=nfs --permanent
firewall-cmd --reload

Install Relax-and-Recover :1

dnf -y update
dnf -y install rear grub2-efi-x64-modules

# EFIの場合追加でインストール(for grub2-mkstandalone command)
dnf -y install grub2-tools-extra

Relax-and-Recover Config File

cp /etc/rear/local.conf /etc/rear/local.conf.bak
cat <<'EOF' > /etc/rear/local.conf
OUTPUT=ISO
BACKUP=NETFS
BACKUP_URL="nfs://192.168.100.2/nfs/"

BACKUP_PROG_EXCLUDE=("${BACKUP_PROG_EXCLUDE[@]}" '/media' '/vat/tmp' '/var/crash' '/kdump')
LOGFILE="$LOG_DIR/rear-$HOSTNAME.log"
GRUB_RESCUE=1
EOF

# EFIの場合以下追加
echo 'USING_UEFI_BOOTLOADER=1' >> /etc/rear/local.conf
OUTPUT
レスキューシステムの出力形式
BACKUP
tarアーカイブの作成に使用できるバックアップ方式
BACKUP_URL
tar.gzのバックアップファイルの出力先

/media、/vat/tmp、/var/crash、/kdumpは、バックアップ対象から外す。

Backup :1

rear -v mkbackup

Restore

  1. レスキューシステムを取り出す(ISOファイル、DVD、USBとして書き出す) 。
  2. レスキューシステムより、ブートする。
  3. "Recover hostname"を選択する。
  4. ログインプロンプトが出たら、rootと入力する。
# DHCPがあるネットワークであれば不要(IPアドレスが取得できていれば不要)
ip a
ip addr add 192.168.100.100/24 dev <network interface>
# リストアを進める。
rear recover
# rootのプロンプトにて
reboot

リストア時、BACKUP_URLのバックアップファイルの場所を自動で探すため、NFSサーバに到達できる場所でリストアを行う。自動でNFSマウントして、情報をダウンロード、展開してくれる。

本稿の例の場所にバックアップファイルを出力していない場合は、BACKUP_URLと同じ場所にマウントして、からrear recoverコマンドを打鍵する必要がある。file:///backupの場合は、/backupにマウントする。推奨しないため、詳細の例は省略する。

その他

レスキューシステムのISOファイルが4GBを超える場合、ISOファイルは出力されるものの、リストア時のブートができない。そのため、レスキューシステムとバックアップファイルは別々のファイルで出力するのが現実的である(BACKUP_URLにiso://を指定しない)。

rear mkbackupは、rear mkrescue + rear mkbackuponlyの打鍵を意味する。レスキューシステムか、バックアップファイルを出力する場合は個別に打鍵する。

rear mkrescue

バックアップをRear-and-Recover以外で行う場合は、rear mkresuceを使用するシーンが考えられる。Relax-and-Recoveryの使用する意義が薄れるため、mkrescue単独の使用は、考えにくい。

ストレージレイアウトが変更された場合は、rear mkrescueにて、レスキューシステムの再作成が必要となる。

rear checklayout

不要なレスキューシステムを再作成しないためのコマンド。最後にレスキューシステムが作成されてからストレージレイアウトに変更がないことのみを保証するが、全てのリターンコードを鵜呑みにはできない。

rear mkbackuponly

backup.tar.gzの出力を行う。backup.tar.gzには、/boot、/etc、/usr..などのファイルのバックアップが含まれる。

定期バックアップ

echo '0 4 * * * root rear mkbackup' >> /etc/crontab

NFSを使わないローカルバックアップ

レスキューシステムにバックアップファイルを含める場合:出力ISOファイルが、4GBを超えるとブートできない可能性があるため、使用しない。

cat <<'EOF' > /etc/rear/local.conf
OUTPUT=ISO
OUTPUT_URL=file:///backup
BACKUP=NETFS
BACKUP_URL=iso:///backup

BACKUP_PROG_EXCLUDE=("${BACKUP_PROG_EXCLUDE[@]}" '/media' '/vat/tmp' '/var/crash' '/kdump')
LOGFILE="$LOG_DIR/rear-$HOSTNAME.log"
GRUB_RESCUE=1
EOF

バックアップ時の一時領域変更方法

実行時に以下のようにTMPDIRを指定する。/etc/rear/local.confに記載しても可能。

TMPDIR="/tmp/myrear/dir" rear -v mkbackup

エラー出力

ERROR: Cannot setup GRUB_RESCUE: Not enough disk space in /boot for Relax-and-Recover rescue system. Required:

対処:/etc/rear/local.confのGRUB_RESCUEに値を入れない(が、あったほうがいいと思う。デフォルト構成では、エラーは出ない)。

GRUB_RESCUE=

Environment

[root@localhost ~]# cat /etc/redhat-release
Rocky Linux release 9.2 (Blue Onyx)
[root@localhost ~]# 
[root@localhost ~]# rear --version
Relax-and-Recover 2.6 / 2020-06-17
[root@localhost ~]# 

Reference