基于lvm快照迁移系统 (/目录)
简化版
- 确保vg有剩余空间
- 确保新系统下面两个文件不要被覆盖
/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_snapshot
的 LV
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 |
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