CentOS8をddでバックアップリストアしてみました

今回はOS領域を含むディスクを空のディスクにddでバックアップを取得し、
ddでの同一VMへのリストアを試してみました。
試験環境はUEFIブートでLVMの構成ですが、ddはデバイス単位でデータをイメージ化するので、
BIOSブートでも非LVM構成でも関係無くバックアップ/リストアが出来ます。
ディスク全体(空の領域含む)のバックアップなので、バックアップのサイズはxfsdumpよりも大き目になります。

1.ディスク構成

/dev/sda:OS領域含むディスク(UEFIブート:LVM)
/dev/sda1 2048 616447 614400 300M EFI System
/dev/sda2 616448 2713599 2097152 1G Linux filesystem
/dev/sda3 2713600 11102207 8388608 4G Linux swap
/dev/sda4 11102208 41940991 30838784 14.7G Linux LVM

/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: 5BDCB5EC-63A3-4E2E-A675-037C02A02A90

Device        Start      End  Sectors  Size Type
/dev/sda1      2048   616447   614400  300M EFI System
/dev/sda2    616448  2713599  2097152    1G Linux filesystem
/dev/sda3   2713600 11102207  8388608    4G Linux swap
/dev/sda4  11102208 41940991 30838784 14.7G Linux LVM


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




Disk /dev/mapper/cl-root: 14.7 GiB, 15787360256 bytes, 30834688 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


/dev/sdbをxfsでフォーマットします。
# 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


マウント用のディレクトリ/mnt/backupを作成
# mkdir /mnt/backup

/dev/sdbのマウント
# 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   17M  1.9G   1% /run
tmpfs                1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/cl-root   15G  9.4G  5.3G  64% /
/dev/sda2            976M  137M  773M  16% /boot
/dev/sda1            300M  6.8M  294M   3% /boot/efi
tmpfs                378M     0  378M   0% /run/user/0
/dev/sdb              10G  104M  9.9G   2% /mnt/backup

アンマウント
# umount /mnt/backup


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

LANG=C fdisk -l > /tmp/`hostname`_fdisk.txt
LANG=C df -T > /tmp/`hostname`_df.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

ddでOS領域含むディスク(/dev/sda)のバックアップ

dd if=/dev/sda bs=64k status=progress | gzip -c > /backup/sda.ddimg.gz

(仮想20GBで約10分)

バックアップファイルの確認
ls -la /backup

(約8GBのファイルが出来上がっていました)

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

再起動かかる

サーバ起動後に確認用のファイルを作成

touch /root/test.txt

4.リストア
インストール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

ddでOS領域含むディスク(/dev/sda)をリストア
gunzip -c /backup/sda.ddimg.gz | dd of=/dev/sda bs=64k status=progress

(仮想20GBで約5分)

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

再起動かかる

サーバ起動後に確認用のファイルが無いことを確認

ls -la  /root/test.txt

5.まとめ
ddではディスクをパーティション含めて丸ごとバックアップ出来るので、
同じ筐体に戻す際にはUUIDなどの編集も必要無く簡単にリストアできます。
ファイルシステム単位でのxfsdump/restoreと比較すると操作量も少なくて済みますのでお勧めです。

Comments are closed.