OSのバックアップ・リストアツールReaR(6):UbuntuでReaR(PXE編)

Ubuntu IT

前回はUbuntu Server 24.04 LTSのシステムをISOイメージにバックアップして、DVDからリカバリーすることを試してみました。今回は、PXEブートを利用したバックアップ・リカバリーを試したいと思います。

RHEL8.8やRocky8.9では成功しています(詳しくは「OSのバックアップ・リストアツールReaR(4): PXEを利用したOSのクローン」を参照して下さい)。Ubuntuでも成功すれば、多数台のサーバにUbuntuのシステムをクローンするのに役立つと思っています。

PXEブートでリカバリー可能なバックアップを作成する

/etc/rear/local.conf の設定

今回のPXEブートでリカバリー可能なバックアップを作成するための ReaRの設定 (/etc/rear/local.conf)は以下の通りとしました。

OUTPUT=PXE
PXE_CONFIG_URL=nfs://192.168.2.200/export/rear_backup/tftp
PXE_TFTP_URL=nfs://192.168.2.200/export/rear_backup/tftp
PXE_CONFIG_GRUB_STYLE=y
PXE_TFTP_IP=192.168.2.203
USING_UEFI_BOOTLOADER=yes
BACKUP=NETFS
BACKUP_URL=nfs://192.168.2.200/export/rear_backup
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/systemd/libsystemd-shared-255.so

末尾の LD_PRELOAD の定義は、前回(「OSのバックアップ・リストアツールReaR(5):UbuntuでReaR」)は、rear -v mkbackup の実行前に定義した環境変数です。ReaRの local.conf は bashスクリプトそのものなので、この環境変数の定義をlocal.conf の中に入れてしまったということです。ちなみに、exportを入れておかないと以下のエラーは解決できないので注意して下さい。

/usr/lib/x86_64-linux-gnu/systemd/libsystemd-core-255.so requires additional libraries
libsystemd-shared-255.so => not found

バックアップの実行

バックアップは、いつもと同じく、以下のコマンドで行います。

# rear -v mkbackup

バックアップ対象サーバのホスト名は baseu1 なので、バックアップ終了後の、/export/rear_backup/baseu1 配下のファイル構成は、以下の通りに作成されています。

[root@base0 rear_backup]# ls -lR
.:
total 3
drwxr-x--- 2 root root 45 Jun 2 12:49 baseu1
drwxr-xr-x 2 root root 4096 Jun 2 12:46 tftp

./baseu1:
total 1253600
-rw------- 1 root root 6728955 Jun 2 12:49 backup.log
-rw------- 1 root root 1276953274 Jun 2 12:49 backup.tar.gz

./tftp:
total 1311928
lrwxrwxrwx 1 root root 11 Jun 2 12:46 01-00-e0-4c-38-6c-39 -> rear-baseu1
lrwxrwxrwx 1 root root 11 Jun 2 12:46 01-80-b6-55-5f-47-40 -> rear-baseu1
-rw-r--r-- 1 root root 742296742 Jun 2 12:46 baseu1.initrd.cgz
-rw-r--r-- 1 root root 14928264 Jun 2 12:46 baseu1.kernel
-rw-r--r-- 1 root root 263 Jun 2 12:46 baseu1.message
-r--r--r-- 1 root root 606 Jun 2 12:46 rear-baseu1

PXEブートによるシステムのリカバリー

ReaRで作成したバックアップをPXEブートでリカバリーするなら、PXEブートに必要なDHCPサーバとTFTPサーバが必要になります。

PXEサーバ(正確には、DHCPサーバとTFTPサーバを稼働させるサーバ)は、私の環境では仮想マシンで運用しています(IPアドレスは 192.168.2.203)。PXEブートに必要な環境の構築に関しては、以下の記事を参考にして下さい。
犬でも分かるPXEブート(3):DHCPサーバの構築
犬でも分かるPXEブート(4):TFTPサーバの構築

リカバリー前の準備

先ず、バックアップで作成されたレスキュー用OSのカーネルとRAMイメージをTFTPサーバにコピーしましょう。

PXE_TFTP_URL=nfs://192.168.2.200/export/rear_backup/tftp
と指定していますので、バックアップが完了すると、NFSサーバの/export/rear_backup/tftp/ 直下に、以下のファイル名でファイルが作成されているはずです。

カーネル baseu1.kernel
RAMイメージ baseu1.initrd.cgz

この2つのファイルを、TFTPサーバ(192.168.2.203) の /var/lib/tftpboot/ にコピーしましょう(ちなみにシンボリックリンクはTFTPが参照できないのでダメです)。
/var/lib/tftpboot はTFTPサーバのtopディレクトリです。

次に、grub.cfg ファイルを作成します。
PXE_CONFIG_URL=nfs://192.168.2.200/export/rear_backup/tftp
と指定していますので、バックアップが完了すると、NFSサーバの/export/rear_backup/tftp/ 直下に、以下のファイル名でgrub.cfgのひな型が作成されているはずです。

grub.cfgのひな型 rear-baseu1

内容は以下の通りに作成されています。

menuentry ‘Relax-and-Recover v2.7’ {
insmod tftp
set net_default_server=192.168.2.203
echo ‘Network status: ‘
net_ls_cards
net_ls_addr
net_ls_routes
echo
echo ” Relax-and-Recover Rescue image”
echo “———————————“
echo “build from host: baseu1 (Ubuntu 24.04 Linux-i386)”
echo “kernel 6.8.0-31-generic Sun, 02 Jun 2024 03:46:36 +0000”
echo “BACKUP=NETFS OUTPUT=PXE BACKUP_URL=nfs://192.168.2.200/export/rear_backup”
echo
echo ‘Loading kernel …’
linux (tftp)//baseu1.kernel root=/dev/ram0 vga=normal rw selinux=0
echo ‘Loading initial ramdisk …’
initrd (tftp)//baseu1.initrd.cgz
}

このファイルを TFTPサーバ(192.168.2.203) の /var/lib/tftpboot/grub.cfg にコピーして、以下のように修正しましょう(修正箇所を太文字で示しています)。

set timeout=10
menuentry ‘Relax-and-Recover v2.7’ {
insmod tftp
set net_default_server=192.168.2.203
echo ‘Network status: ‘
net_ls_cards
net_ls_addr
net_ls_routes
echo
echo ” Relax-and-Recover Rescue image”
echo “———————————“
echo “build from host: baseu1 (Ubuntu 24.04 Linux-i386)”
echo “kernel 6.8.0-31-generic Sun, 02 Jun 2024 03:46:36 +0000”
echo “BACKUP=NETFS OUTPUT=PXE BACKUP_URL=nfs://192.168.2.200/export/rear_backup”
echo
echo ‘Loading kernel …’
linux /baseu1.kernel root=/dev/ram0 vga=normal rw selinux=0 unattended
echo ‘Loading initial ramdisk …’
initrd /baseu1.initrd.cgz
}

set timeout=10 は、起動メニューの表示を10秒でtimeoutして、ブートの処理に進めるための設定です。
linux行とinitrd行の引数には、それぞれカーネルとRAMイメージのパスを指定します(/var/lib/tftpbootがtopディレクトリなので、/var/lib/tftpboot/baseu1.kernel と /var/lib/tftpboot/baseu1.initrd.cgz 参照されます。
unattended は、ReaRのリカバリー処理を自動的にスタートするための指定です。

リカバリー開始

うちのサーバ(ホスト baseu1)は安価なミニPCなので、BMCが付いていません。よって、IPMI経由でブート順序を変更して、電源ONというスマートな方法ができません。代わりに、自分でBIOS画面を操作して、ブート順序でPXE bootを最上位に設定してから、Save & Exit して起動します。

コンソールの画面は、PXEブート可能なメディアを検索して、存在することが確認できたと言っています。Rocky8.9をリカバリーしたときと全く同じ画面です(当たり前か..)。

NBP file のダウンロードに成功して、ネットブートイメージを起動しています。

その後、grub.cfg ファイルが読み込まれると、grub.cfg の menuentry行に記載した文字列が画面に表示されます。

grub.cfg に echo コマンドで記述したメッセージが画面に表示されて、カーネルとRAMイメージが読み込まれています。ここから時間がちょっとかかります。

unattended を指定しているので、rear recover が自動的に実行されています。
リカバリー処理では、backup.tar.gz から、/mnt/local に仮マウントしたストレージにバックアップが復元されます。

リカバリー後のシステムにログインして確認

リカバリー後のシステムが起動したらログインしてみましょう。ファイルシステムはリカバリーされているようです。

Ubuntu Server 24.04 LTSでも、PXEを利用したReaRのバックアップ・リカバリーを行うことができました。

広告主へのリンク




このブログにおける関連リンク

OSのバックアップ・リストアツールReaR(1):ReaRを使ってみた
OSのバックアップ・リストアツールReaR(2):ReaRのオプション
OSのバックアップ・リストアツールReaR(3):USBフラッシュメモリを使ったバックアップ
OSのバックアップ・リストアツールReaR(4): PXEを利用したOSのクローン
OSのバックアップ・リストアツールReaR(5):UbuntuでReaR
OSのバックアップ・リストアツールReaR(7): ReaRのトラブルシューティング
OSのバックアップ・リストアツールReaR(8): ReaRのcronは削除しよう
OSのバックアップ・リストアツールReaR(9): COPY_AS_ISって何?
OSのバックアップ・リストアツールReaR(10): ReaRの仕組みを理解する
OSのバックアップ・リストアツールReaR(11): バックアップ対象外の指定
Ubuntu Server 24.04 LTS をインストールする

コメント

タイトルとURLをコピーしました