前言
本文中的虚拟机/云主机镜像以qcow2为例,其它格式的镜像,方法类似。
一、qcow2镜像准备
1、进入RomOS
这里的ROMOS指的是类似LiveCD、WinPE的内存操作系统。
关闭需要志出为qcow2格式的虚拟机/物理机,并以pxe或cdrom或U盘方式重启动,并使用LiveCD镜像进行引导。
2、在RomOS安装支持软件包
安装支持工具软件包
yum install -y libguestfs-tool libguestfs-devel lvm2 cloud-utils nfs-utils
3、导出磁盘数据到qcow2格式镜像文件
qemu-img convert -p -c -O qcow2 /dev/sda /images/image.qcow2 
注意:存储镜像的目录,建议挂载NFS、Samba进行存储。
二、LVM格式恢复
如果qcow2的镜像在制作时,分区使用的是LVM方式分区,需要按LVM的逻辑来进行调整。
1、恢复qcow2到硬盘
# 清空已有的分区信息dd if=/dev/zero of=/dev/sda bs=1k count=512qemu-img convert -f qcow2 -O raw images.qcow2 /dev/sda
注意:存储镜像的目录,建议挂载NFS、Samba等远端存储。
2、挂载LVM分区
# 激活VGPXE root@localhost:~ # vgscan   Reading volume groups from cache.  Found volume group "centos" using metadata type lvm2  PXE root@localhost:~ # vgchange -a y centos  2 logical volume(s) in volume group "centos" now active#挂载LVM的/分区到/mnt目录PXE root@localhost:~ # mount /dev/centos/root /mnt
3、调整fstab
vim /mnt/etc/fstab## /etc/fstab# Created by anaconda on Fri Aug 12 18:23:10 2022## Accessible filesystems, by reference, are maintained under '/dev/disk'# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info#/dev/mapper/centos-root /                       xfs     defaults        0 0# 注释掉/boot分区的挂载,只保留/和swap#UUID=8abae70f-0a66-4ef1-aba3-32ba743b68d7 /boot                   xfs     defaults        0 0/dev/mapper/centos-swap swap                    swap    defaults        0 0~                                                                                                                                                                                                                                            ~                                                                                            
4、调整分区表信息
# 查看磁盘信息PXE root@192.168.8.136:/data # lsblkNAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTsda           8:0    0   100G  0 disk ├─sda1        8:1    0     1G  0 part └─sda2        8:2    0    19G  0 part sr0          11:0    1   681M  0 rom  /run/initramfs/liveloop0         7:0    0 637.8M  1 loop loop1         7:1    0     5G  1 loop ├─live-rw   253:0    0     5G  0 dm   /└─live-base 253:1    0     5G  1 dm   loop2         7:2    0   512M  0 loop └─live-rw   253:0    0     5G  0 dm   /# 查看PV信息PXE root@192.168.8.136:/data # pvs  PV         VG     Fmt  Attr PSize   PFree  /dev/sda2  centos lvm2 a--  <19.00g    0 # 激活VGPXE root@192.168.8.136:/data # vgchange -a y centos  2 logical volume(s) in volume group "centos" now active#扩展文件系统PXE root@localhost:~ # growpart /dev/sda 2CHANGED: partition=2 start=2099200 old: size=39843840 end=41943040 new: size=207615967 end=209715167PXE root@localhost:~ # lsblkNAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTsda               8:0    0   100G  0 disk ├─sda1            8:1    0     1G  0 part └─sda2            8:2    0    99G  0 part   ├─centos-swap 253:2    0     2G  0 lvm    └─centos-root 253:3    0    17G  0 lvm  /mntsr0              11:0    1   681M  0 rom  /run/initramfs/liveloop0             7:0    0 637.8M  1 loop loop1             7:1    0     5G  1 loop ├─live-rw       253:0    0     5G  0 dm   /└─live-base     253:1    0     5G  1 dm   loop2             7:2    0   512M  0 loop └─live-rw       253:0    0     5G  0 dm   /# Resize PVPXE root@localhost:~ # pvresize /dev/sda2  Physical volume "/dev/sda2" changed  1 physical volume(s) resized or updated / 0 physical volume(s) not resized# 扩容PV,将剩余空间全部给到/分区PXE root@localhost:~ # lvextend -l 100%FREE /dev/centos/root  Size of logical volume centos/root changed from <17.00 GiB (4351 extents) to 80.00 GiB (20480 extents).  Logical volume centos/root successfully resized.  # 校验PXE root@localhost:~ # lsblkNAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTsda               8:0    0   100G  0 disk ├─sda1            8:1    0     1G  0 part └─sda2            8:2    0    99G  0 part   ├─centos-swap 253:2    0     2G  0 lvm    └─centos-root 253:3    0    80G  0 lvm  /mntsr0              11:0    1   681M  0 rom  /run/initramfs/liveloop0             7:0    0 637.8M  1 loop loop1             7:1    0     5G  1 loop ├─live-rw       253:0    0     5G  0 dm   /└─live-base     253:1    0     5G  1 dm   loop2             7:2    0   512M  0 loop └─live-rw       253:0    0     5G  0 dm   /
5、重启验证
