XFSのバックアップリストア

xfsファイルシステムのサーバーバックアップ・リストアをする。

バックアップ、リストアの概要

  1. NFSサーバーを構築
  2. オリジナルにて、NFSサーバーのマウント
  3. オリジナルにて、バックアップ。マウント先に保存(バックアップ)
  4. 新しい環境にて、NFSサーバーをマウント
  5. 新しい環境にて、ディスクパーティション作成
  6. 新しい環境にて、ディスクにバックアップを流し込む(リストア)
  7. ブートマネージャーでディスクを指定
  8. リブート
  • 足りないパッケージはインターネット経由または、DVDからインストールする。

Env

  • UEFI
  • XFS File System
  • Rocky Linux(Blue Onyx)

Network

  • 192.168.255.
    1. Host(Mac)
    2. NFS Server
    3. Original

Original

  • /dev/sda

NFS Server(2)

sudo yum -y update
sudo yum -y install nfs-utils firewalld
sudo echo '/nfs 192.168.255.0/24(rw,no_root_squash)' > /etc/exports
sudo mkdir -p /nfs
sudo systemctl start rpcbind nfs-server firewalld
sudo systemctl enable rpcbind nfs-server firewalld
sudo firewall-cmd --add-service=nfs --permanent
sudo firewall-cmd --reload

Backup(3)

bkdir='/backup'
mkdir -p "${bkdir}"

# Mount NFS
yum -y install nfs-utils
mount -t nfs 192.168.255.2:/nfs "${bkdir}"

# Backup /boot/efi
yum -y install tar
sync
tar cf "${bkdir}"/boot_efi.tar -C /boot ./efi

# XFS FileSystem
yum -y install xfsdump
# VG Name
vgname='rl'

# Backup Partition
gdisk -l /dev/sda > "${bkdir}/gdisk-l.txt"
df > "${bkdir}/df.txt"
cat /etc/fstab > "${bkdir}/fs.txt"

yum -y install lvm2
pvdisplay > "${bkdir}/lv-l.txt"
vgdisplay > "${bkdir}/vg.txt"
lvdisplay > "${bkdir}/vp.txt"
mount > "${bkdir}/mount.txt"

blkid > "${bkdir}/blkid.txt"
vgcfgbackup ${vgname} -f "${bkdir}"/vgcfgbackup_"${vgname}".cfg

ip a > "${bkdir}/ip-a.txt"

sync;xfsdump -l0 - /boot | gzip -c > "${bkdir}"/sda2.dump
sync;xfsdump -l0 - / | gzip -c > "${bkdir}"/root.dump

Restore(N)

DVDからブートする。TroubleShooting -> Rescue。

## Japanese keyboard setting
# localectl set-keymap jp106

ip a
ifconfig enp0s3 192.168.255.10/24
# nfs mount
mkdir /backup
mount -t nfs 192.168.255.2:/nfs /backup

sh /backup/restore.sh

restore.sh

#!/bin/sh

# /dev/sda1
sda1_uuid='5A6D-1C27'
# /dev/sda2:
sda2_uuid='654d3546-4186-44a6-b812-92435c3d1377'
# /dev/sda3:
sda3_uuid='0qyHuR-kuZJ-t6EV-xe0c-cSx5-uFUF-xTnALt'

# Initial Disk
shred -vz -n 0 /dev/sda

# Disk Partition
parted -s /dev/sda mklabel gpt
parted -s /dev/sda unit s
parted -s /dev/sda 'mkpart "EFI System Partition" fat16 2048s 1230847s'
parted -s /dev/sda set 1 boot on
parted -s /dev/sda 'mkpart primary 1230848s 3327999s'
parted -s /dev/sda 'mkpart primary 3328000s 41940991s'
parted -s /dev/sda set 3 lvm on
parted -l /dev/sda

bkdir='/backup'
rtdir='/restore'
mkdir -p ${bkdir} ${rtdir}
vgname='rl'

# FileSystem
mkfs.xfs /dev/sda2
xfs_admin -U ${sda2_uuid} /dev/sda2

mkdir ${rtdir}/boot
mount -t xfs /dev/sda2 ${rtdir}/boot
zcat "${bkdir}/sda2.dump" | xfsrestore -F - ${rtdir}/boot
sync

# PV and VG
pvcreate -u ${sda3_uuid} --restorefile "${bkdir}"/vgcfgbackup_"${vgname}".cfg /dev/sda3
vgcfgrestore -f "${bkdir}"/vgcfgbackup_"${vgname}".cfg "${vgname}"

# Active VG
vgchange -ay

# LV and SWAP
mkfs.xfs /dev/mapper/${vgname}-root
mkswap /dev/mapper/${vgname}-swap

# Restore FS
mkdir ${rtdir}/${vgname}-root
mount -t xfs /dev/mapper/${vgname}-root ${rtdir}/${vgname}-root
zcat "${bkdir}/root.dump" | xfsrestore -F - ${rtdir}/${vgname}-root
sync

# Restore /boot/efi
mkdosfs -i $(echo ${sda1_uuid} | sed 's/-//') /dev/sda1
mkdir -p "${rtdir}/boot/efi"
mount -t vfat /dev/sda1 ${rtdir}/boot/efi
cd "${rtdir}/boot"
tar xf ${bkdir}/boot_efi.tar

efibootmgr -c -d /dev/sda -p 1 -l '\EFI\rocky\shimx64.efi' -L 'Restored Rocky Linux'
sync;sync;sync
# boot後
lvmdevices --adddev /dev/sda3
y

Reference

|