Shrinking the disk of an Ubuntu VM in PVE
内容提要
本文介绍在PVE中缩小Ubuntu虚拟机磁盘的步骤:先在虚拟机内压缩分区并备份,再用SystemRescueCD启动,通过GParted和lvreduce缩小卷,回到PVE执行lvresize并qm rescan,最后用gdisk修复分区表。操作复杂易丢数据,务必提前备份。
延伸解读
操作顺序与风险控制
缩小虚拟机磁盘必须严格遵循“先内后外”的顺序:先在Ubuntu内压缩文件系统并调整分区,再到PVE中缩小逻辑卷,最后回到虚拟机修复分区表。任何步骤出错都可能导致数据丢失,因此操作前务必在PVE中为虚拟机创建备份,并确认备份可用。文章特别警告,继续操作前需再次确认备份,否则可能无法挽回。
PVE层面的调整与回退
在PVE shell中,使用lvresize命令缩小逻辑卷,例如lvresize --size -96G /dev/pve/vm-100-disk-0。如果操作有误,可以立即用lvresize --size +96G恢复原大小,这为误操作提供了一次补救机会。之后执行qm rescan让PVE正确识别磁盘新大小。注意,此步骤仅调整PVE存储层,不涉及虚拟机内部文件系统。
分区表修复与验证
由于缩小操作可能导致GPT PMBR不匹配,需重启进入SystemRescue,运行gdisk /dev/sda,输入v验证分区表,再输入w写入修复。完成后用fdisk -l验证。文章提到,若分区表为MBR则无需此步,但示例虚拟机使用默认MBR,却仍出现GPT PMBR mismatch提示,说明实际环境可能混合,需根据提示处理。
Q&A
在PVE中缩小Ubuntu虚拟机磁盘的大致步骤是什么?
先在虚拟机内压缩分区并备份,再用SystemRescueCD启动,通过GParted和lvreduce缩小卷,回到PVE执行lvresize并qm rescan,最后用gdisk修复分区表。
为什么缩小虚拟机磁盘前必须备份?
因为操作复杂且容易导致数据丢失,文章多次警告继续操作可能丢失数据,务必提前备份。
缩小磁盘时在虚拟机内部需要执行哪些命令?
使用lvreduce命令压缩逻辑卷,例如:lvreduce --resizefs --size -96G /dev/ubuntu-vg/ubuntu-lv,然后使用GParted调整分区大小。
在PVE中缩小磁盘卷后如何让系统正确显示磁盘大小?
执行qm rescan命令,让PVE系统能正确显示磁盘大小。
修复分区表时遇到GPT PMBR mismatch错误怎么办?
运行gdisk /dev/sda,输入v验证修复分区表,输入w写入分区表,然后再次运行fdisk -l验证。
缩小磁盘操作中如果出错,有什么挽回措施?
在PVE中执行lvresize时如果操作有误,可以反向执行lvresize --size +96G /dev/pve/vm-100-disk-0来恢复。