CentOS8のxfsdumpでのダンプリストア

(参考URL)
https://chidipy.jpn.com/server/other/xfs_efi_backuprestore.html

今回はOS領域を含むディスクを空のディスクにxfsdumpでバックアップを取得し、
xfsrestoreで同一VMへのリストアを試してみました。
xfsrestoreではdump後に作成されたファイルは残ってしまいますので、
dump前に確認用ファイルを作成し、dump後に削除する手順としました。

1.ディスク構成
/dev/sda:OS領域含むディスク(UEFIブート:Standard Partition)
/dev/sda1 2048 1953791 1951744 953M EFI System
/dev/sda2 1953792 3905535 1951744 953M Linux filesystem
/dev/sda3 3905536 11716607 7811072 3.7G Linux swap
/dev/sda4 11716608 41940991 30224384 14.4G Linux filesystem

/dev/sdb:空のディスク

2.事前作業
2-1.空のディスク/dev/sdbをxfsでフォーマットしてマウントテストします。

# fdisk -l

Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: A5C77C76-8D82-4733-8279-D47E103BAC4C

Device        Start      End  Sectors  Size Type
/dev/sda1      2048  1953791  1951744  953M EFI System
/dev/sda2   1953792  3905535  1951744  953M Linux filesystem
/dev/sda3   3905536 11716607  7811072  3.7G Linux swap
/dev/sda4  11716608 41940991 30224384 14.4G Linux filesystem


Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes



# mkfs -t xfs /dev/sdb

meta-data=/dev/sdb               isize=512    agcount=4, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=2621440, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0


# mkdir /mnt/backup
# mount /dev/sdb /mnt/backup
# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        1.9G     0  1.9G   0% /dev
tmpfs           1.9G     0  1.9G   0% /dev/shm
tmpfs           1.9G  8.6M  1.9G   1% /run
tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda4        15G  1.4G   14G  10% /
/dev/sda2       947M  165M  783M  18% /boot
/dev/sda1       952M  6.8M  945M   1% /boot/efi
tmpfs           378M     0  378M   0% /run/user/0
/dev/sdb         10G  104M  9.9G   2% /mnt/backup


2-2.ボリューム構成情報のバックアップ
下記コマンドで取得して端末にDLして下さい。

LANG=C fdisk -l > /tmp/`hostname`_fdisk.txt
LANG=C df -T > /tmp/`hostname`_df.txt
LANG=C blkid > /tmp/`hostname`_blkid.txt



2-3.確認用のファイルを作成

touch /root/test.txt

2-4.xfsdumpのインストール

yum install xfsdump

Downloading Packages:
(1/2): attr-2.4.48-3.el8.x86_64.rpm             634 kB/s |  68 kB     00:00
(2/2): xfsdump-3.1.8-2.el8.x86_64.rpm           1.6 MB/s | 332 kB     00:00


2-5.UEFI領域のバックアップ
UEFI領域のバックアップはtarコマンドで取得します(ファイルシステムがvfatなので)

tar -cvf /mnt/backup/boot_efi.tar /boot/efi


2-6.xfsdumpでOSディスクのバックアップ

xfsdump -l0 - /dev/sda2 | gzip -c > /mnt/backup/sda2.boot.dump.gz
xfsdump -l0 - /dev/sda4 | gzip -c > /mnt/backup/sda4.root.dump.gz

xfsdump: Dump Status: SUCCESS

(仮想15GB:約1分)


2-7.確認用ファイルの削除
rm /root/test.txt

3.リストア
インストールCDからブートする(rescueモード)

TroubleShooting -> Rescue a CentOS Linux system を選択

ファイルシステムを/mnt/sysiamge以下にマウントするか?を聞かれるが、マウントしない。「skip:3」を選択

キーボードを日本語配列にする

localectl set-keymap jp106

ディスク情報の確認
fdisk -l | more

バックアップ用ディレクトリ作成
mkdir /backup

バックアップ用ディレクトリに空のディスク(/dev/sdb)をマウント

mount /dev/sdb /backup

マウントされたことを確認
df -h

リストア
一番最初に復旧させる/にマウントするファイルシステムを/restoreにマウントしリストアする。
その後、復旧させる/bootなどにマウントするファイルシステムを
/restore/boot(/をリストアことによって復活している)マウントしてリストアする。他も同様に順にリストアする。

mkdir /restore
mount -t xfs /dev/sda4 /restore
cd /restore
gzip -dc /backup/sda4.root.gz | xfsrestore - ./

(16sec)
mount -t xfs /dev/sda2 /restore/boot
cd /restore/boot
gzip -dc /backup/sda2.boot.dump.gz | xfsrestore - ./

mount -t vfat /dev/sda1 /restore/boot/efi
cd /restore
tar -xvf /backup/boot_efi.tar
sync;sync;sync

ブート設定準備
mount -t proc proc /restore/proc
mount --bind /dev  /restore/dev
mount -t sysfs sysfs /restore/sys

リストア先パスにchrootする
chroot /restore

grub2ブート設定ファイルの再作成
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

同期
sync;sync;sync

レスキューモードを終了
exit

サーバ起動後に確認用のファイルが存在することを確認

ls -la  /root/test.txt

5.まとめ
xfsrestoreではdump後に作成されたファイルは残ってしまいますので、
dump前に確認用ファイルを作成し、dump後に削除する手順としました。
xfsrestoreでもバックアップ後のファイルを残さない方法を調べようと思います。

Comments are closed.