バックアップディスクから起動で簡単、完璧バックアップを実現する

1.はじめに

以前「起動ディスクの入れ替え」について書きましたが、今度はこれを応用して、バックアップディスクから起動することにチャレンジしてみました。これが実現すればバックアップは非常に簡単に実現できることになり、万一の備えも万全になります。

2023/03/27 追記

手順を詳細に記述し直しました。

2.第1回目のバックアップと起動ドライブの修正

(1)バックアップディスクには通常の起動ディスクと同じようにEFIパーティションを作って、FAT32によるフォーマット、残りは ext4 によるフォーマットを行っておくこと。ディスク構成は、以下のような具合です。

なお、バックアップディスクは実用的スピード、安定性を考えると、ミラーリングできるUSB3接続の外部ディスクが良いかと思います。

Number Start (sector) End (sector) Size Code Name
1 2048 1050623 512.0 MiB EF00 EFI system partition
2 1050624 3906926591 1.8 TiB 8300 Linux filesystem

(2)/(rootパーティション)を /backup ディレクトリにマウントして rsyncによるフルバックを実施しします。

$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda      8:0    0 232.9G  0 disk 
├─sda1   8:1    0   512M  0 part /boot
└─sda2   8:2    0 232.4G  0 part /
sdc      8:32   0   1.8T  0 disk 
├─sdc1   8:33   0   512M  0 part 
└─sdc2   8:34   0   1.8T  0 part /backup

※ /backupにマウントした/dev/sdc2にフルバックアップする場合のコマンドです。マウントポイントは各自のシステムに合わせてください。参考:ArxhWiKi

$ sudo rsync -aHAXxS –numeric-ids –delete –exclude={“/etc/boot/“,”/dev/“,”/proc/“,”/sys/“,”/tmp/“,”/run/“,”/mnt/“,”/media/“,”/lost+found”,”/backup/“,”/backup2/“,”/home/*/.gvfs”,”/swapfile”} / /backup &> /dev/null

(3)/backup/etc/fstab の編集

バックアップドライブにある /etc/fstab を編集して、このドライブからの起動に備えます。

まずは、追加するパーティションのUUIDを調べます。

$ sudo blkid

/dev/sdc2: UUID="042fac8f-a3df-439a-b7c6-331e49c8a271" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="Linux" PARTUUID="42885221-1041-4050-9c4f-c5b56f21aa6b"
/dev/sdc1: UUID="D2B4-DA0A" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI" PARTUUID="b21f1260-b9b8-432d-b442-fd9a5f9dde97"
/dev/sda2: UUID="49b8eabf-f628-426d-ace5-c9b47afc22d1" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="Linux" PARTUUID="9415a39b-e861-4796-919a-98c6ba05bfd2"
/dev/sda1: UUID="B841-8505" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI" PARTUUID="e95a18fd-bc39-41a6-ac0a-ff8cced8a0c7"

青のアンダーラインは従来のパーティション、今回追加するのは赤のアンダーラインのパーティションです。

$ sudo nano /backup/etc/fstab

# <file system> <dir> <type> <options> <dump> <pass>
# /dev/sdc2
UUID=042fac8f-a3df-439a-b7c6-331e49c8a271	/		ext4		rw,relatime	0 1

# /dev/sdc1
UUID=D2B4-DA0A	/boot	vfat	rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro   0 2

オプション類もそのまま


※ 一度は /etc/fstab もバックアップから除外せずバックアップしましたが、二度目からはその設定をバックアップディスク用に修正し、 /etc/fstab が バックアップによって上書きされないよう、バックアップの対象から除外してあります。

$ sudo rsync -aHAXxS –numeric-ids –delete –exclude={“/etc/fstab”,”/etc/boot/“,”/dev/“,”/proc/“,”/sys/“,”/tmp/“,”/run/“,”/mnt/“,”/media/“,”/lost+found”,”/backup/“,”/backup2/“,”/home/*/.gvfs”,”/swapfile”} / /backup &> /dev/null

※ 実際にはこのコマンドを crontab に登録して、定期実行しています。

3.Archlinux起動ディスクからの起動

UEFIの起動画面からUSBディスク(ArchLinuxの起動ディスク)を選択して保存、再起動します。コマンドプロンプトになったら

# mkdir -p /mnt/boot/efi

# mount /dev/sdc2 /mnt

# mount /dev/sdc1 /mnt/boot/efi

# arch-chroot /mnt

※ 正常にマウントしたようでも、arch-chroot後は /boot/efi にマウントされていることが確認できないことが何度かありました。以下のようになっていなければなりません。この場合はシステムを一旦落として、10秒以上経過してから電源を入れてUSBディスクを選択してマウントをやり直してください。

$ lsblk

sdc 8:32 0 1.8T 0 disk
├─sdc1 8:33 0 512M 0 part /boot/efi
└─sdc2 8:34 0 1.8T 0 part /

# grub-install –target=x86_64-efi –efi-directory=/boot/efi /dev/sdc

# grub-mkconfig /boot/grub/grub.cfg

# exit

# umount -R /mnt

# reboot

5.バックアップディスクからの起動

UEFI画面での起動ドライブの修正は不要で、そのまま起動するのを待っていればバックアップディスクから起動しました。

バックアップ先も外部のドライブ、そしてミラーリングできるドライブだったら完璧?私のところでは10数年前?に購入したHDC2-Uシリーズがこの機能を果たしています。USB2.0でも最初こそ時間はそこそこかかりますが、2回目以降は修正した分だけが更新されていくので、1分程度で終了。通常の作業に支障になりません。

ちなみにメインのドライブが故障して新規のドライブに今の環境を取り戻すには、このバックアップディスクから起動しておいて、新しく使用するメインのドライブを領域確保、フォーマット、マウントしたら、rsync で逆書き込み(※)すれば一気にデータが戻ります。その後は arch-chroot /mntに移動してgrub-install grubi-mkconfig と grub を作成すれば、新規のディスクから立ち上がります。

※ / から /mnt へ rsyc で実行します。コマンドの内容は以下のとおりです。

$ sudo rsync -aHAXxS –numeric-ids –delete –exclude={“/etc/fstab”,”/etc/boot/“,”/dev/“,”/proc/“,”/sys/“,”/tmp/“,”/run/“,”/mnt/“,”/media/“,”/lost+found”,”/backup/“,”/backup2/“,”/home/*/.gvfs”,”/swapfile”} / /mnt &> /dev/null

コメント

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