pvresize是唯一能安全同步更新pv元数据的命令,仅刷新lvm对已扩容设备的认知;需先在平台扩容磁盘并用partprobe或blockdev重读分区表,再执行pvresize /dev/sdx,最后用pvs验证psize更新。

物理磁盘扩容后,pvresize 是唯一能安全、直接同步更新 PV 元数据的命令——它不修改数据,只刷新 LVM 对底层设备实际容量的认知。
先确认底层扩容已完成
pvresize 不会帮你扩大磁盘或分区,它只响应“已经变大”的设备。必须确保以下两步已执行完毕:
- 在虚拟化平台(如 VMware、Proxmox)或物理服务器上,已将磁盘容量调大(例如从 100G → 150G)
- 系统内核识别到新大小:运行 partprobe 或 blockdev --rereadpt /dev/sdX(如
blockdev --rereadpt /dev/sdb),再用 lsblk 验证分区大小是否已更新(例如/dev/sdb1显示为 150G 而非旧的 100G)
运行 pvresize 同步 PV 容量
命令极简,通常无需参数:
- 对整个物理卷(如基于分区):
pvresize /dev/sdb1 - 对整块磁盘作为 PV:
pvresize /dev/sdb - 若不确定设备路径,可省略目标,让 pvresize 扫描所有已知 PV:
pvresize(慎用,仅限明确环境)
执行后,LVM 会自动读取设备当前大小,并更新 PV 的元数据中记录的 PSize 和 PFree 值。用 pvs 或 pvdisplay 即可看到 PSize 已变为新容量。
验证是否生效并衔接后续步骤
同步成功后,新增空间会立即反映在卷组中:
- 运行
vgs,观察 VG 的 VFree 是否增加(即新增的未分配空间) - 若需扩展逻辑卷,接着用
lvextend -l +100%FREE /dev/vgname/lvname - 最后一步不可跳过:根据文件系统类型执行扩容(
resize2fs /dev/vgname/lvname或xfs_growfs /mount/point),否则df -h不会显示新空间
常见失败原因与规避方式
pvresize 报错,基本指向三个方向:
- 设备未重读分区表:partprobe 未执行,或内核缓存未刷新;可尝试重启 udev 或重启机器(生产环境优先用 blockdev)
- 底层设备仍被占用:例如该 PV 正用于 swap、LVM cache 或 dm 设备;先停用相关服务或设备
-
误对未扩容的设备执行:pvresize 对未变大的设备无副作用,但若误操作缩容(用了
--setphysicalvolumesize),可能触发拒绝操作或数据风险——除非明确缩容,否则永远不要加该参数











