このページでは、ファームウェアとしてUEFIを使用し、Linuxにてxfsファイルシステムを使用しているときのシステムバックアップリストア方法について記載しています。
xfsdumpを使用してファイルシステムイメージでバックアップしているので、OS付属のコマンドのみでバックアップリストアを実現し、aclやselinuxにも対応できます。(aclやselinuxの場合は権限の箇所を適時読み替えてください)
OS標準機能のみでバックアップリストアをしてみたい貧乏人もしくは玄人変人向けです。安全に確実に安定性を求めたバックアップをしたい人は大人しく製品を使用してください。このページを真似して損害が発生しても筆者は一切責任を負いません。
(こんな苦労しなくてもClonezillaというオープンソースもあります。clonezillaによるバックアップリストアはこちら)
(この方法を記載するにあたり検証した環境は、KVMベースの仮想マシンに、OSはRocky Linux10です。RHEL10でも通用するはずです。以下のような構成です。)
# uname -a
Linux test-rocky10-uefi 6.12.0-55.12.1.el10_0.x86_64 #1 SMP PREEMPT_DYNAMIC Fri May 23 17:41:02 UTC 2025 x86_64 GNU/Linux
# cat /etc/redhat-release
Rocky Linux release 10.0 (Red Quartz)
# fdisk -l
Disk /dev/vda: 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: B5C52B43-490F-44EF-8D66-47F2ADD8D3EC
Device Start End Sectors Size Type
/dev/vda1 2048 1230847 1228800 600M EFI System
/dev/vda2 1230848 3327999 2097152 1G Linux extended boot
/dev/vda3 3328000 41940991 38612992 18.4G Linux LVM
# df
ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置
/dev/mapper/rl-root 17141760 2146124 14995636 13% /
devtmpfs 4096 0 4096 0% /dev
tmpfs 994724 0 994724 0% /dev/shm
efivarfs 256 61 190 25% /sys/firmware/efi/efivars
tmpfs 397892 5648 392244 2% /run
tmpfs 1024 0 1024 0% /run/credentials/systemd-journald.service
/dev/vda2 983040 281500 701540 29% /boot
/dev/vda1 609596 8518 601078 2% /boot/efi
tmpfs 1024 0 1024 0% /run/credentials/[email protected]
tmpfs 198944 4 198940 1% /run/user/0
# pvdisplay
--- Physical volume ---
PV Name /dev/vda3
VG Name rl
PV Size 18.41 GiB / not usable 2.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 4713
Free PE 0
Allocated PE 4713
PV UUID EeZFjN-qa34-nFdm-LoGW-auyN-gfx0-GdsDkA
# vgdisplay
--- Volume group ---
VG Name rl
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 18.41 GiB
PE Size 4.00 MiB
Total PE 4713
Alloc PE / Size 4713 / 18.41 GiB
Free PE / Size 0 / 0
VG UUID IkwOs2-m9sE-7Tg1-MI3L-Mnvy-K1ya-2OQ596
# lvdisplay
--- Logical volume ---
LV Path /dev/rl/swap
LV Name swap
VG Name rl
LV UUID GyrSIY-93ao-fsKM-oPO3-OVGM-Y5oz-xWVlqg
LV Write Access read/write
LV Creation host, time test-rocky10-uefi, 2025-07-19 00:51:48 +0900
LV Status available
# open 1
LV Size 2.00 GiB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
--- Logical volume ---
LV Path /dev/rl/root
LV Name root
VG Name rl
LV UUID Cd3qzZ-PuBz-9uKw-roe9-D6yl-bhxa-LX4sHg
LV Write Access read/write
LV Creation host, time test-rocky10-uefi, 2025-07-19 00:51:48 +0900
LV Status available
# open 1
LV Size 16.41 GiB
Current LE 4201
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
# mount | egrep "(xfs|fat)"
/dev/mapper/rl-root on / type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)
selinuxfs on /sys/fs/selinux type selinuxfs (rw,nosuid,noexec,relatime)
/dev/vda2 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)
/dev/vda1 on /boot/efi type vfat (rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,shortname=winnt,errors=remount-ro)
以下の条件がそろっていることを前提とします。
ところで、ファームウェアはBIOSかUEFIかどっち?はfdisk -lコマンドで1番目のパーティションタイプを参照すれば分かります。
# fdisk -l /dev/vda
Device Start End Sectors Size Type
/dev/vda1 2048 4095 2048 1M BIOS boot
/dev/vda2 4096 2101247 2097152 1G Linux extended boot
/dev/vda3 2101248 83884031 81782784 39G Linux LVM
# gdisk -l /dev/vda
Number Start (sector) End (sector) Size Code Name
1 2048 411647 200.0 MiB EF00 EFI System Partition
2 411648 1435647 500.0 MiB 0700
3 1435648 3907028991 1.8 TiB 8E00
UEFI領域とその他の領域でバックアップ方法が異なります。バックアップはNFSに保存します。
UEFI領域のバックアップはtarコマンドで取得します(ファイルシステムがvfatであるので)。
# sync #念のため
# cd /
# tar cf <NFS上の任意ディレクトリ>/<任意のファイル名> /boot/efi
# sync
# cd /
# tar cf /backup/boot_efi.tar /boot/efi
マウントしているローカルディスクの全ファイルシステム(/tmp以外)をバックアップします。
# sync #念のため
# xfsdump -l 0 - <ファイルシステムデバイスファイルパス> | gzip -c > /<NFS上の任意ディレクトリ>/<バックアップイメージ名>
# sync
# xfsdump -l 0 - /dev/vda2 | gzip -c > /backup/boot.dump.gz
# xfsdump -l 0 - /dev/rl/root | gzip -c > /backup/root.dump.gz
あとで泣かないように、パーティション構造、lvm構造とかも記録しておきます。
# sfdisk -d /dev/vda > /<NFS上の任意ディレクトリ>/sfdisk_-d_dev_vda
# vgcfgbackup -f /<NFS上の任意ディレクトリ>/vgcfgbackup
# fdisk -l > /<NFS上の任意ディレクトリ>/fdisk_<デバイス名>.txt
# df > /<NFS上の任意ディレクトリ>/df.txt
# cat /etc/fstab > /<NFS上の任意ディレクトリ>/fs.txt
# pvdisplay > /<NFS上の任意ディレクトリ>/lv.txt
# vgdisplay > /<NFS上の任意ディレクトリ>/vg.txt
# lvdisplay > /<NFS上の任意ディレクトリ>/vp.txt
# mount > /<NFS上の任意ディレクトリ>/mount.txt
# fdisk -l > /backup/fdisk_-l
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
# gdisk -l /dev/vda > /backup/gdisk
# df > /backup/df
# pvdisplay > /backup/pvdisplay
# vgdisplay > /backup/vgdisplay
# lvdisplay > /backup/lvdisplay
# mount > /backup/mount
# localectl set-keymap jp106
# ifconfig eth0 192.168.1.xxx netmask 255.255.255.0
# lvm vgchagne -ay
# mkdir /backup
# mount -t nfs -o rsize=8192,wsize=8192,intr <NFSサーバーエクスポートディレクトリ> /backup
# mkdir /backup
# nfsの場合
# mount -t nfs -o rsize=8192,wsize=8192,intr 192.168.1.2:/nfs /backup
# smbfsの場合
# mount -t cifs -o vers=1.0,guest //192.168.1.2/smb /backup
# sfdisk <ディスクデバイスファイルパス> < /backup/sfdisk_-d_dev_vda
# fdisk -l #パーティションを復元できたことの確認
# fdisk -l
# sfdisk /dev/vda < /backup/sfdisk_-d_dev_vda
# fdisk -l
# mkfs.vfat -v -c -F32 -s2 <UEFI(/boot/efi)用パーティションデバイスファイルパス>
# mkfs.vfat -v -c -F32 -s2 /dev/vda1
# mkfs.xfs <boot(/boot)用パーティションデバイスファイルパス>
# mkfs.xfs /dev/vda2
# less /backup/vgcfgbackup
<vg名> {
physical_volumes {
pv0 {
id = "<pv0のuuid>"
# pvcreate --uuid "<pv0のuuid>" --restorefile /backup/vgcfgbackup <LVM用パーティションデバイスファイルパス>
# less /backup/vgcfgbackup
physical_volumes {
pv0 {
id = "vZ3hT0-qYEX-1b28-05DN-F7Id-PfK6-E1FSuR"
device = "/dev/vda3" # Hint only
status = ["ALLOCATABLE"]
# pvcreate --uuid "vZ3hT0-qYEX-1b28-05DN-F7Id-PfK6-E1FSuR" --restorefile /backup/vgcfgbackup /dev/vda3
# vgcfgrestore -f /backup/vgcfgbackup <VG名>
# pvs
# vgs
# lvs
# vgchange -ay <VG名> #これしないと/dev/以下にlvのデバイスが見えない
# vgcfgrestore -f /backup/vgcfgbackup rl
# pvs
# vgs
# lvs
# vgchange -ay rl
# mkfs.xfs <ファイルシステムデバイスファイルパス>
# mkswap <swap用パーティションデバイスファイルパス>
# mkfs.xfs /dev/rl/root
# mkswap /dev/rl/swap
# lvm vgchagne -ay
# mkdir /restore
# mount -t xfs <ファイルシステムデバイス> /restore/<従来のマウントポイント>
# cd /restore/<従来のマウントポイント>
# gzip -dc /backup/<バックアップイメージ> | xfsrestore - ./
# sync
# mount -t vfat <UEFI用パーティションデバイスファイルパス> /restore/boot/efi
# cd /restore
# tar xf <バックアップイメージ>
# sync
# mkdir /restore
# mount -t xfs /dev/rl/root /restore
# cd /restore
# gzip -dc /backup/root.dump.gz | xfsrestore - ./
#
# mount -t xfs /dev/vda2 /restore/boot
# cd /restore/boot
# gzip -dc /backup/boot.dump.gz | xfsrestore - ./
#
# mount -t vfat /dev/vda1 /restore/boot/efi
# cd /restore
# tar xf /backup/boot_efi.tar
# sync;sync;sync
# blkid <efiパーティションデバイスファイルパス>
# blkid <bootパーティションデバイスファイルパス>
# blkid <マウントしているパーティションデバイスファイルパス>
# blkid <swapパーティションデバイスファイルパス>
# vi /restore/etc/fstab
UUID=rootパーティションUUID / xfs defaults 0 0
UUID=bootパーティションUUID /boot xfs defaults 0 0
UUID=efiパーティションUUID /boot/efi vfat umask=0077,shortname=winnt 0 2
UUID=swapパーティションUUID none swap defaults 0 0
# blkid /dev/vda1
/dev/vda1: UUID="D6EF-32DC" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="32453485-efc6-4698-b727-7f22b4ac0b9f"
# blkid /dev/vda2
/dev/vda2: UUID="ff90b456-fd3f-41c4-acfb-0a2e278c0743" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="f61ef9f7-7b1f-4387-b0b1-1f58b15b5c03"
# blkid /dev/rl/root
/dev/rl/root: UUID="ef35c11c-2498-4992-91de-ac67901f4148" BLOCK_SIZE="512" TYPE="xfs"
# blkid /dev/rl/swap
/dev/rl/swap: UUID="069e0799-7f0e-410a-9635-cfc7413391a1" TYPE="swap"
# vi /restore/etc/fstab
UUID=ef35c11c-2498-4992-91de-ac67901f4148 / xfs defaults 0 0
UUID=ff90b456-fd3f-41c4-acfb-0a2e278c0743 /boot xfs defaults 0 0
UUID=D6EF-32DC /boot/efi vfat umask=0077,shortname=winnt 0 2
UUID=069e0799-7f0e-410a-9635-cfc7413391a1 none swap defaults 0 0
# blkid <swapパーティションデバイスファイルパス>
# vi /restore/boot/loader/entries/<マシンID>-<カーネルリリース番号>.conf
options root=/dev/mapper/rl-root ro resume=UUID=<スワップ領域のUUID> rd.lvm.lv=rl/root rd.lvm.lv=rl/swap rhgb quiet
# vi /restore/boot/loader/entries/<マシンID>-0-rescue.conf
options root=/dev/mapper/rl-root ro resume=UUID=<スワップ領域のUUID> rd.lvm.lv=rl/root rd.lvm.lv=rl/swap rhgb quiet
# blkid /dev/rl/swap
/dev/rl/swap: UUID="069e0799-7f0e-410a-9635-cfc7413391a1" TYPE="swap"
# vi /restore/boot/loader/entries/2e0dd30dc9c149258994175d4ef856fc-6.12.0-55.12.1.el10_0.x86_64.conf
options root=/dev/mapper/rl-root ro resume=UUID=069e0799-7f0e-410a-9635-cfc7413391a1 rd.lvm.lv=rl/root rd.lvm.lv=rl/swap rhgb quiet
# vi /restore/boot/loader/entries/2e0dd30dc9c149258994175d4ef856fc-0-rescue.conf
options root=/dev/mapper/rl-root ro resume=UUID=069e0799-7f0e-410a-9635-cfc7413391a1 rd.lvm.lv=rl/root rd.lvm.lv=rl/swap rhgb quiet
# vi /restore/etc/sysconfig/grub
GRUB_CMDLINE_LINUX="resume=UUID=<スワップ領域のUUID> rd.lvm.lv=<VG名>/root rd.lvm.lv=<VG名>/swap rhgb quiet"
# vi /restore/boot/grub2/grub.cfg
### BEGIN /etc/grub.d/10_linux ###
insmod part_gpt
insmod xfs
search --no-floppy --fs-uuid --set=root <bootパーティション領域のUUID>
insmod part_gpt
insmod fat
search --no-floppy --fs-uuid --set=boot <EFIパーティション領域のUUID>
# vi /restore/etc/sysconfig/grub
GRUB_CMDLINE_LINUX="resume=UUID=069e0799-7f0e-410a-9635-cfc7413391a1 rd.lvm.lv=rl/root rd.lvm.lv=rl/swap rhgb quiet"
# vi /restore/boot/grub2/grub.cfg
### BEGIN /etc/grub.d/10_linux ###
insmod part_gpt
insmod xfs
search --no-floppy --fs-uuid --set=root ff90b456-fd3f-41c4-acfb-0a2e278c0743
insmod part_gpt
insmod fat
search --no-floppy --fs-uuid --set=boot D6EF-32DC
# mount -t proc proc /restore/proc
# mount --bind /dev /restore/dev
# mount -t sysfs sysfs /restore/sys
# chroot /restore
# grub2-mkconfig -o /boot/grub2/grub.cfg
# touch /.autorelabel
# sync;sync;sync #←石橋を叩きたい数だけ(笑)
# exit
# sync;sync;sync
# exit