PVE 虚拟机扩容磁盘(无LVM,GPT分区 + ext4文件系统,你的场景)
适用:PVE里把原有磁盘扩大容量(不是新增独立硬盘),虚拟机内是普通GPT分区、ext4,不使用LVM
示例:磁盘/dev/sda,分区/dev/sda2(以你机器为例)
⚠️ 重要前提:不是新增第二块硬盘!是放大现有这块硬盘;无LVM无法跨盘合并到根分区。
前置准备(强烈建议)
- PVE网页,对这台虚拟机创建快照,操作出错可以回滚。
- 确认虚拟机磁盘是GPT分区、ext4,无LVM。
lsblk df -T
步骤1:PVE网页端扩大磁盘容量
- 进入虚拟机【硬件】
- 选中要扩容的磁盘(你的是SCSI磁盘
sda),点击【Resize disk】 - 填入增加的容量(例如原有100G,加到300G,就填200G),确认。
步骤2:虚拟机内刷新内核识别磁盘新大小(不用重启)
# scsi磁盘 /dev/sda
echo 1 > /sys/block/sda/device/rescan
lsblk
看到磁盘总容量变成300G,但是分区
sda2依旧是100G,正常现象。
步骤3:安装growpart工具(Ubuntu/Debian)
sudo apt update
sudo apt install cloud-guest-utils -y
步骤4:扩展分区边界(修改GPT分区表,把sda2拉到磁盘末尾)
语法:
growpart 磁盘名 分区编号sudo growpart /dev/sda 2执行成功后,用下面命令校验分区大小
lsblk /dev/sda此时
/dev/sda2分区容量已经变成接近300G(分区墙已经扩大)
你之前看到的GPT PMBR size mismatch警告,growpart写入分区表时会自动修复。
步骤5:扩展ext4文件系统,填满扩大后的分区
sudo resize2fs /dev/sda2
步骤6:验证扩容结果
df -h /dev/sda2
输出里可以看到分区容量已经更新为300G,扩容完成。
常见报错&坑点
resize2fs: Nothing to do!
👉 原因:分区还没扩大,只执行resize2fs。必须先growpart,再resize2fs。growpart报错:
no space left
👉 确认磁盘名称、分区号是否写对,不要把sda写成sdb。如果是virtio磁盘(设备名是vda而不是sda)
echo 1 > /sys/block/vda/device/rescan sudo growpart /dev/vda 2 sudo resize2fs /dev/vda2
备选方案(growpart不可用时,手动fdisk,风险更高,仅兜底)
原理:删除分区,用完全相同的起始扇区重建分区,不损坏数据
sudo fdisk /dev/sda
p:打印分区,记录sda2的Start起始扇区(你的机器是4096)d,输入2,删除sda2分区n,新建分区:
- 分区号:2
- Start扇区:务必填写刚才记下的数字(4096,不能错!)
- End扇区:直接回车,占用磁盘全部剩余空间
- 分区类型默认Linux filesystem,回车
w,写入分区表,保存退出- 内核重新加载分区表后,执行
sudo resize2fs /dev/sda2
重要重申
✅ 本教程:同一块磁盘扩容,无LVM,ext4
❌ 如果是新增一块独立硬盘,无LVM不能合并到原有根分区,只能单独挂载到/data等目录。
作者:月影鹏鹏 创建时间:2026-10-15 15:41
最后编辑:月影鹏鹏 更新时间:2026-10-15 15:42
最后编辑:月影鹏鹏 更新时间:2026-10-15 15:42