前言
本文中的虚拟机/云主机镜像以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、重启验证
