多路径SAN环境下LVM PV扩容需先刷新底层SCSI设备尺寸:执行echo 1 > /sys/block/sdX/device/rescan和multipathd resize map mpatha,再运行pvresize /dev/mapper/mpatha同步PV元数据,最后lvextend和文件系统扩容。

在多路径 SAN 存储环境下,LVM 物理卷(PV)底层设备通常是多路径设备(如 /dev/mapper/mpatha),而非裸盘或单路径分区。当 SAN 存储侧扩容(例如 LUN 容量增加)后,Linux 主机端的多路径设备大小**不会自动更新**——即使 `multipath -ll` 显示新容量,底层 PV 所在的块设备逻辑边界仍停留在旧值,导致 `pvresize` 无法识别新增空间。必须先同步底层块设备尺寸,才能让 LVM 感知并使用扩容部分。
确认多路径设备已识别新容量
执行以下命令,检查 SAN 扩容是否已被多路径层感知:
-
multipath -ll | grep -A2 "mpatha"(替换为你的实际多路径别名),确认输出中 Size 字段已体现扩容后大小(如从 100G → 200G) -
lsblk /dev/mapper/mpatha查看 SIZE 列是否已更新;若仍是旧值,说明内核未刷新设备大小
刷新多路径设备及底层 SCSI 设备尺寸
多路径设备是基于底层 SCSI 设备(如 /dev/sdb)聚合而来。需按顺序刷新:
- 运行
echo 1 > /sys/block/<em>sdX</em>/device/rescan(sdX 是该多路径对应的真实路径盘,可通过multipath -ll中的 “dm-uuid-mpath-...” 反查:如scsi_id -g -u -d /dev/sdb对比 WWID) - 执行
multipathd resize map mpatha(强制多路径服务重读设备大小) - 验证:
blockdev --getsize64 /dev/mapper/mpatha应返回新容量字节数
在线扩展 PV 并同步到 VG/LV
底层块设备尺寸更新后,LVM 才能识别新增空间:
- 运行
pvresize /dev/mapper/mpatha—— 此命令会扫描 PV 元数据,并将新增的未分配 PE 纳入卷组空闲池 - 用
vgs或vgdisplay确认 VG 的 VFree 值已增加 - 后续可直接
lvextend -l +100%FREE /dev/vgname/lvname扩展逻辑卷,再根据文件系统类型执行resize2fs(ext4)或xfs_growfs(xfs)
常见卡点与绕过方法
若 pvresize 提示 “Physical extent size mismatch” 或 “No free extents”,说明:
- 多路径设备尚未真正刷新:重复执行
rescan+multipathd resize,必要时重启multipathd服务 - PV 创建时使用了非默认 PE 大小(如
pvcreate -s 8M):扩容时需确保新空间能被整除,否则pvresize会拒绝扩展;此时可用pvresize --setphysicalvolumesize手动对齐(慎用,需精确计算) - 文件系统已满且 LV 无空闲空间:先
lvextend分配空间,再扩文件系统,顺序不可颠倒

















