OSのバックアップ・リストアツールReaR(3): USBフラッシュメモリを使ったバックアップ

Relax-and-Recover

OSのバックアップ・リストアツールReaR(1):ReaRを使ってみた では、バックアップしたISOイメージをDVDに焼いて、そこからリカバリするという方法を試しました。DVD-ROMは安価ですし、OSのインストール作業でも使い慣れているので、初心者には最も簡易な方法と言えます。

但し、DVD-ROMは単層で4.7GB、2層でも8.5GBしか格納できないので、バックアップ対象の容量がこのサイズを超える場合に対応できません。このような場合は、USBフラッシュメモリを使いましょう。USB 3.2規格 64GBでも1000円程度で購入できます。

USBの規格にはいろいろありますが、容量が大きい分、高速なものを選ぶことをお勧めします(もちろん、サーバ側のUSB portがその規格に対応していないと意味がないですが)。USB 3.1とUSB 3.2で、バックアップ・リカバリを試しましたが、3.2のほうが早かったです。

USBフラッシュメモリを使うための準備

USBフラッシュメモリをReaRのバックアップ・リカバリで使うための準備作業は、(1)USBフラッシュメモリのデバイス名の確認 と (2)フォーマット です。

USBフラッシュメモリのデバイス名を確認しよう

とりあえず、バックアップ対象のサーバのUSBポート(どこでも良い)に、USBフラッシュメモリを差してみましょう。
うちで使っているサーバ(ミニPC)は、GMKtec NucBox3 です (※ 2024/5月時点では、ウチのやつよりも新しいモデルになっています)

USBフラッシュメモリのデバイス名の確認方法は、2つあります。
ひとつ目は、/var/log/messages に出力されたメッセージから確認する方法です。
差し込んだタイミングで以下のようなメッセージが記録されます。KIOXIA(キオクシア)の16GBフラッシュメモリを差し込んだので、製造者(Manufacturer)のKIOXIAと実効容量として14.4GiBあることが確認できます。
さて肝心のデバイス名ですが、「sd 2:0:0:0: [sdb] Attached SCSI removable disk」というメッセージに注目して下さい。sdb というSCSIのリムーバブルディスクとして割り当てられた、と言っていますので、デバイス名は sdb であることが分かります。

Apr 22 16:54:57 base1 kernel: usb 1-5: new high-speed USB device number 3 using xhci_hcd
Apr 22 16:54:57 base1 kernel: usb 1-5: New USB device found, idVendor=30de, idProduct=6544, bcdDevice= 1.00
Apr 22 16:54:57 base1 kernel: usb 1-5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Apr 22 16:54:57 base1 kernel: usb 1-5: Product: TransMemory
Apr 22 16:54:57 base1 kernel: usb 1-5: Manufacturer: KIOXIA
Apr 22 16:54:57 base1 kernel: usb 1-5: SerialNumber: 0022CFF6BDFCC7118324CF61
Apr 22 16:54:57 base1 kernel: usb-storage 1-5:1.0: USB Mass Storage device detected
Apr 22 16:54:57 base1 kernel: scsi host2: usb-storage 1-5:1.0
Apr 22 16:54:57 base1 kernel: usbcore: registered new interface driver usb-storage
Apr 22 16:54:57 base1 kernel: usbcore: registered new interface driver uas
Apr 22 16:54:58 base1 kernel: scsi 2:0:0:0: Direct-Access KIOXIA TransMemory 1.00 PQ: 0 ANSI: 4
Apr 22 16:54:58 base1 kernel: sd 2:0:0:0: Attached scsi generic sg1 type 0
Apr 22 16:54:58 base1 kernel: sd 2:0:0:0: [sdb] 30274560 512-byte logical blocks: (15.5 GB/14.4 GiB)
Apr 22 16:54:58 base1 kernel: sd 2:0:0:0: [sdb] Write Protect is off
Apr 22 16:54:58 base1 kernel: sd 2:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
Apr 22 16:54:58 base1 kernel: sdb: sdb1 sdb2
Apr 22 16:54:58 base1 kernel: sd 2:0:0:0: [sdb] Attached SCSI removable disk

2つ目は、lsblkコマンドで確認する方法です。
以下は、我が家のサーバ base1 にUSBフラッシュメモリを差して、lsblkを実行した出力です。sda1~4は内蔵SSDの各パーティションのデバイス名です。sdbがUSBフラッシュメモリのデバイス名です。この例では、既にUSBフラッシュメモリをフォーマット済なので、sdb1とsdb2も表示されています。

[root@base1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 238.5G 0 disk
+-sda1 8:1 0 200M 0 part /boot/efi
+-sda2 8:2 0 1G 0 part /boot
+-sda3 8:3 0 32G 0 part [SWAP]
+-sda4 8:4 0 205.3G 0 part /
sdb 8:16 1 14.4G 0 disk
+-sdb1 8:17 1 400M 0 part
+-sdb2 8:18 1 14G 0 part

USBフラッシュメモリで起動できるようにフォーマットしよう

このUSBフラッシュメモリをレスキューディスクとしても使用するので、起動できる仕様でフォーマットしましょう。ReaRにはフォーマットのためのコマンドも用意されています。EFIに対応したレスキューディスクを作成するためのオプションを付けて以下のように実行します。

rear -- --efi /dev/<デバイス名>

base1ではUSBフラッシュメモリのデバイス名がsdbなので、以下の通り実行します。フォーマットを実行する前に、YesかNoかを尋ねてくるので、Yesを入力して下さい(Yesを入力しないと、300秒後にNoが入力されたとみなされて処理は中断されます)。

[root@base1 ~]# rear format -- --efi /dev/sdb
USB device /dev/sdb is not formatted with ext2/3/4 or btrfs filesystem
Type exactly 'Yes' to format /dev/sdb with ext3 filesystem
(default 'No' timeout 300 seconds)
Yes

Yesを入力するとフォーマットが開始されます。16GBのUSBフラッシュメモリのフォーマットには10分以上の時間を要しました。
フォーマットが完了したら、先程のlsblkコマンドを再度実行してみて下さい。sdb2というデバイスが作成されていることが確認できます。

USBフラッシュメモリをフォーマットする際の注意

このようにしてReaRバックアップ用のUSBフラッシュメモリをフォーマットした訳ですが、このままバックアップを行うと、以下のエラーが発生することがありました。

ERROR: Failed to copy initrd to /tmp/rear-efi.vjjSkBwgu0//EFI/BOOT/initrd.cgz

ログファイル /var/log/rear/rear-<hostname>.log (base1の場合は /var/log/rear/rear-base1.log) を見ると、原因となる以下のエラーを確認することができました。

cp: error writing '/tmp/rear-efi.vjjSkBwgu0//EFI/BOOT/initrd.cgz': No space left on device

ここで、/tmp/rear-efi.vjjSkBwgu0 は /dev/sdb1 のマウントポイントでして、要するに/dev/sdb1の容量が足りないよ、と言っています。ReaRのバックアップ処理中(もしくは、ReaRのバックアップがエラーで終了した後)は /dev/sdb1がマウントされているので、 lsblk を実行することでもマウントポイントを確認することができます(以下のように表示される)。

[root@base1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 238.5G 0 disk
+-sda1 8:1 0 200M 0 part /boot/efi
+-sda2 8:2 0 1G 0 part /boot
+-sda3 8:3 0 32G 0 part [SWAP]
+-sda4 8:4 0 205.3G 0 part /
sdb 8:16 1 14.4G 0 disk
+-sdb1 8:17 1 400M 0 part /tmp/rear-efi.vjjSkBwgu0
+-sdb2 8:18 1 14G 0 part

400MBじゃあ足りないってことなんですね。。。
このsdb1に割り当てる 400MB というサイズは、ReaRのデフォルトの設定ファイル /usr/share/rear/conf/default.conf の中で USB_UEFI_PART_SIZE変数で定義されています。

USB_UEFI_PART_SIZE=”400″

400で足りないのだから、/etc/rear/local.conf の中でUSB_UEFI_PART_SIZE変数 を以下の通り、800に再定義してしまいましょう。

USB_UEFI_PART_SIZE=”800″

これで800Mの sdb1 領域を、フォーマット時に作成することができます。
/etc/rear/local.conf にこの定義を追加した後、再度、「rear format — –efi /dev/sdb」を実行してフォーマットを行って下さい。尚、ReaRのバックアップでエラーが発生した後は、/dev/sdb1がマウントされたままになっていてフォーマットができないので、アンマウントしてからフォーマットを再実行して下さい。上記の例では、/dev/sdb1は /tmp/rear-efi.vjjSkBwgu0 にマウントされているので、アンマウントするコマンドは以下の通りとなります。

[root@base1 ~]# umount /tmp/rear-efi.vjjSkBwgu0

バックアップ前の準備

ReaRのバックアップでISOイメージを作成するときに、grub2-efi-x64-modules.noarch がインストールされていないとエラーになりましたが、今回も追加で syslinux-extlinux を以下の通りインストールする必要がありました。

[root@base1 ~]# dnf -y install syslinux-extlinux

これをインストールしていないと、USBフラッシュメモリへのバックアップで以下のエラーが発生します。

ERROR: Executable extlinux is missing! Please install syslinux-extlinux or alike

ついでに言うと、もうひとつ以下の謎のエラーが発生しました。なんでバックアップでnameserverが必要なんだよ、とつっこみたくなりますが。。。

ERROR: No nameserver or only loopback addresses in /tmp/rear.jcnG6VWgyzMLfty/rootfs/etc/resolv.conf, specify a real nameserver via USE_RESOLV_CONF

DNSサーバを以下のように登録したら、エラーは出なくなりました。

[root@base1 ~]# nmcli c m enp3s0 ipv4.dns 8.8.8.8
[root@base1 ~]# nmcli c up enp3s0

USBフラッシュメモリにバックアップ

今回のバックアップ・リカバリの方針は、以下の通りです。
・ USBフラッシュメモリにバックアップする
・ リカバリー時は、USBフラッシュメモリをレスキューディスクとして起動する

バックアップのイメージを図示すると以下のようになります。USBフラッシュメモリに作成されたパーティションは、バックアップ・リカバリ時に /tmp配下の一時ディストリにマウントされてアクセスされます。/dev/sdb1にはレスキューシステムが作成されます。

そういう訳で、/etc/rear/local.conf では以下のように定義します。

OUTPUT=USB
OUTPUT_URL=usb:///dev/disk/by-label/REAR-000
BACKUP=NETFS
BACKUP_URL=usb:///dev/disk/by-label/REAR-000
USB_UEFI_PART_SIZE=”800″

それぞれの変数の意味は、以下のページを参照して下さい

OSのバックアップ・リストアツールReaR(2):ReaRのオプション
ReaR(Relax-and-Recover)のオプションは多くはないものの、似たようなオプションが多くてよく分からん!! ということで基本的なオプションの意味を調べてみました。Relax-and-Recoverのオプションを正しく理解することで、バックアップとリストア(リカバリ)がどのように行われるのかを理解することができます。まずは、Relax-and-RecoverのOUTPUT,OUTPUT_URL,BACKUP,BACKUP_URL の4つの変数を抑えておきましょう。

以下のコマンドでバックアップを開始します。

[root@base1 ~]# rear -v mkbackup

[root@base1 ~]# rear -v mkbackup
Relax-and-Recover 2.6 / 2020-06-17
Running rear mkbackup (PID 34743)
Using log file: /var/log/rear/rear-base1.log
Running workflow mkbackup on the normal/original system
Using backup archive '/tmp/rear.dwyTi9N1wgBXJR7/outputfs/rear/base1/20240117.2152/backup.tar.gz'
Using UEFI Boot Loader for Linux (USING_UEFI_BOOTLOADER=1)
Using autodetected kernel '/boot/vmlinuz-4.18.0-477.10.1.el8_8.x86_64' as kernel in the recovery system
Creating disk layout
Overwriting existing disk layout file /var/lib/rear/layout/disklayout.conf
Using guessed bootloader 'EFI' (found in first bytes on /dev/sda)
Verifying that the entries in /var/lib/rear/layout/disklayout.conf are correct …
Creating recovery system root filesystem skeleton layout
To log into the recovery system via ssh set up /root/.ssh/authorized_keys or specify SSH_ROOT_PASSWORD
Trying to find what to use as UEFI bootloader…
Trying to find a 'well known file' to be used as UEFI bootloader…
Using '/boot/efi/EFI/redhat/grubx64.efi' as UEFI bootloader file
Copying logfile /var/log/rear/rear-base1.log into initramfs as '/tmp/rear-base1-partial-2024-01-17T21:52:50+09:00.log'
Copying files and directories
Copying binaries and libraries
Copying all kernel modules in /lib/modules/4.18.0-477.10.1.el8_8.x86_64 (MODULES contains 'all_modules')
Copying all files in /lib*/firmware/
Testing that the recovery system in /tmp/rear.dwyTi9N1wgBXJR7/rootfs contains a usable system
Creating recovery/rescue system initramfs/initrd initrd.cgz with gzip default compression
Created initrd.cgz with gzip default compression (537607747 bytes) in 66 seconds
GRUB2 modules to load: fat part_gpt xfs
Saved /var/log/rear/rear-base1.log as rear/base1/20240117.2152/rear-base1.log
Writing MBR of type msdos to /dev/sdb
Making backup (using backup method NETFS)
Creating tar archive '/tmp/rear.dwyTi9N1wgBXJR7/outputfs/rear/base1/20240117.2152/backup.tar.gz'
Archived 935 MiB [avg 7097 KiB/sec] OK
Archived 935 MiB in 136 seconds [avg 7045 KiB/sec]
Exiting rear mkbackup (PID 34743) and its descendant processes …
Running exit tasks

Running exit tasks が出力されればバックアップ終了です。出力の中に「error:」を含むメッセージがあったら、エラーが発生しています。
バックアップする容量が大きい場合は、バックアップ時間はひたすら長いです。。耐えましょう(笑)。

USBフラッシュメモリからリカバリする

USBフラッシュメモリからレスキューイメージを起動するので、BIOS画面で、boot順序の1番目をUSBフラッシュメモリにしておくことを忘れないで下さい。

その後の操作は、DVDからリカバリする場合の手順と同じで以下の通りです。

・レスキューイメージが起動したらrootでログイン(パスワードは不要)
・「rear recover」を実行して、リカバリを実行
・リカバリが完了したら、reboot する。
(reboot後にBIOS画面でboot順序をSSDに変更するか、USBフラッシュメモリを抜くことを忘れずに)

1回目の再起動で、再ラベリングの処理が実行され、その後自動的に2回目の再起動が行われて、リカバリされたシステムが立ち上がります。

広告主へのリンク




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

OSのバックアップ・リストアツールReaR(1):ReaRを使ってみた
OSのバックアップ・リストアツールReaR(2):ReaRのオプション
OSのバックアップ・リストアツールReaR(4): PXEを利用したOSのクローン
OSのバックアップ・リストアツールReaR(5):UbuntuでReaR
OSのバックアップ・リストアツールReaR(6):UbuntuでReaR(PXE編)
OSのバックアップ・リストアツールReaR(7): ReaRのトラブルシューティング

コメント

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