基于lvm快照迁移系统 (/目录)

简化版

  1. 确保vg有剩余空间
  2. 确保新系统下面两个文件不要被覆盖

/etc/fstab
/etc/sysconfig/network-scripts/ifcfg-eth0

创建快照

lvcreate --size 15G --snapshot --permission rw -n root_snapshot /dev/centos/root

挂载快照

mkdir /mnt/snapshot
mount -o nouuid /dev/centos/root_snapshot /mnt/snapshot

打包/解包

tar czvf snapshot_archive.tar.gz -C /mnt/snapshot .
tar zxvf snapshot_archive.tar.gz -C /

更新配置

cd / && dracut -f
grub2-mkconfig -o /boot/grub2/grub.cfg


零、 Introduce

ServerA:
CentOS7.9 4c4g by vmware

一、 制作 lvm 快照

/ 创建快照, 要保证 / 所在的 VG 卷组有剩余空间

查看当前 PV VG LV 情况

4个PV: /dev/sda2 /dev/sdb1 /dev/sdb2 /dev/sdc
1个VG: centos
2个LV: root swap

VG 剩余空间为0, 需先扩容 VG 空间, 然后从 VG 中创建 名为root_snapshotLV

1.1 扩容 VG

vmware中添加一块新磁盘

识别新硬盘
for i in 0 1 2; do echo "- - -" > /sys/class/scsi_host/host$i/scan; done

将sdd添加到VG

创建分区: fdisk /dev/sdd {n p default default default t 8e w}
创建 PV: pvcreate /dev/sdd1
扩充 VG: vgextend centos /dev/sdd1

1.2 创建 lvm 快照

给逻辑卷/dev/centos/root 创建一个 15G 可读写的快照 root_snapshot
lvcreate --size 15G --snapshot --permission rw -n root_snapshot /dev/centos/root

本身也是一个LV root_snapshot

三、 基于lvm快照的系统备份、迁移

通过前面的 lvm快照, 可以将快照打包再导出到其他主机上实现系统的备份和迁移

3.1 原理解释

需要将快照挂载到一个目录之后才可以进行读写操纵

原因:

只读性质: 快照是源逻辑卷的只读副本,它记录了源逻辑卷在创建快照时的状态。因此,直接对快照进行写操作是不被允许的。通过将快照挂载到一个目录,可以在这个目录上进行写操作,而不会影响源逻辑卷。
变更记录: 挂载快照后,LVM 会使用 COW(Copy-on-Write)技术来记录对快照的所有写操作。这样可以确保源逻辑卷和快照之间的差异被正确记录,而不会影响源逻辑卷的内容。
提供访问: 将快照挂载到一个目录后,您可以访问其内容并对其进行读写操作,以查看或修改快照中的文件。这对于数据还原、备份等操作非常有用。

3.2 挂载快照

错误挂载

[root@centos7 ~]# mkdir /mnt/snapshot
[root@centos7 ~]# mount /dev/centos/root_snapshot /mnt/snapshot/
mount: wrong fs type, bad option, bad superblock on /dev/mapper/centos-root_snapshot,
missing codepage or helper program, or other error

In some cases useful info is found in syslog - try
dmesg | tail or so.
[root@centos7 ~]#

dmesg 报错日志
/dev/centos/root/dev/centos/root_snapshot的uuid相同

正确挂载
mount -o nouuid /dev/centos/root_snapshot /mnt/snapshot/

可以看到 /mnt/snapshot下面就是原来的/

3.3 打包系统

tar czvf snapshot_archive.tar.gz -C /mnt/snapshot .

3.4 迁移系统

这两个文件使用新的
/etc/fstab
/etc/sysconfig/network-scripts/ifcfg-eth0

将打包后的文件在一台空白系统上释放覆盖原来的文件
tar zxvf snapshot_archive.tar.gz -C /

3.5重建 initramfs

确保当前工作目录是 /
Ubuntu/Debian: update-initramfs -u
CentOS/RHEL: dracut -f
openSUSE: mkinitrd

3.6 更新 GRUB 配置

grub2-mkconfig -o /boot/grub2/grub.cfg

3.7 重启

reboot