Linux虚拟机磁盘扩缩容的操作指南
引言虚拟机磁盘扩缩容需遵循“先调整底层存储虚拟机软件→ 再调整分区/逻辑卷 → 最后调整文件系统”的流程。以下按扩容和缩容两大类结合文件系统类型ext4/XFS/Btrfs和分区方案传统分区/LVM详细说明确保无歧义。一、磁盘扩容扩展容量前提已在虚拟机软件VMware/VirtualBox/KVM中扩展虚拟磁盘容量如从 20GB→40GB虚拟机处于关机或运行中部分场景需重启识别新容量。一按文件系统类型与分区方案分类1. 传统分区非LVM如/dev/sda1适用场景磁盘直接分区无LVM文件系统为 ext4/XFS/Btrfs。文件系统详细步骤验证命令ext4①重新扫描磁盘识别新容量echo 1sudo tee /sys/class/block/sda/device/rescansda为虚拟机磁盘br② **扩展分区**brsudo growpart /dev/sda 1扩展第1分区如/dev/sda1br③ **扩展文件系统**brsudo resize2fs /dev/sda1自动扩展到分区最大容量XFS①重新扫描磁盘同上②扩展分区sudo growpart /dev/sda 1③扩展文件系统需指定挂载点sudo xfs_growfs /mount_point如根分区挂载点为/则sudo xfs_growfs /lsblk /dev/sda1df -hTBtrfs①重新扫描磁盘同上②扩展分区sudo growpart /dev/sda 1③扩展文件系统需指定挂载点sudo btrfs filesystem resize max /mount_pointlsblk /dev/sda1df -hT2. LVM 逻辑卷推荐生产环境适用场景磁盘通过LVM管理物理卷PV→卷组VG→逻辑卷LV文件系统为 ext4/XFS/Btrfs。文件系统详细步骤验证命令ext4①重新扫描磁盘同上②扩展物理卷PVsudo pvresize /dev/sda2假设PV为/dev/sda2新增空间已分配③扩展逻辑卷LVsudo lvextend -l 100%FREE /dev/vg_name/lv_namevg_name为卷组名lv_name为逻辑卷名如vg0/root④扩展文件系统sudo resize2fs /dev/vg_name/lv_namepvs看PV容量lvs看LV容量df -hTXFS①重新扫描磁盘同上②扩展PVsudo pvresize /dev/sda2③扩展LVsudo lvextend -l 100%FREE /dev/vg0/root④扩展文件系统指定挂载点sudo xfs_growfs /mount_point如/pvs/lvs/df -hTBtrfs①重新扫描磁盘同上②扩展PVsudo pvresize /dev/sda2③扩展LVsudo lvextend -l 100%FREE /dev/vg0/root④扩展文件系统指定挂载点sudo btrfs filesystem resize max /mount_pointpvs/lvs/df -hT二特殊说明云虚拟机如AWS EC2底层磁盘为云盘EBS需先在云平台控制台扩展云盘再通过growpart扩展分区如NVMe磁盘/dev/nvme0n1p1。在线扩容LVMext4/XFS/Btrfs支持在线扩容无需卸载文件系统传统分区需确保分区未挂载或根分区通过Live CD操作。二、磁盘缩容减小容量风险提示缩容需先缩小文件系统再缩小分区/LV数据丢失风险极高务必先备份XFS文件系统不支持缩容需用迁移数据替代。