使用pvmove迁移镜像LV时提示“Insufficient free space”错误的排查与解决请求
pvmove迁移镜像LV时提示“Insufficient free space”错误的排查与解决
看起来你遇到的是LVM处理镜像逻辑卷(LV)时的pvmove空间分配问题,我来帮你分析原因和解决办法:
问题原因
你要迁移的home/windows-persistent是一个镜像LV(从lvdisplay输出的Mirrored volumes 2可以确认),LVM在迁移镜像LV的物理段时,会创建一个临时的镜像LV(比如报错里的home/pvmove0)来完成数据迁移——这个临时LV也需要保持镜像状态,因此需要至少两个不同的物理卷(PV)来容纳它的两个镜像副本。
你执行的命令pvmove /dev/nvme0n1p2 -n home/windows-persistent /dev/nvme2n1p1只指定了一个目标PV(/dev/nvme2n1p1),LVM尝试为临时镜像的第二个副本找空间时:
/dev/nvme0n1p2仅剩余2812个空闲PE,远不够需要的57793个;/dev/nvme1n1p1完全没有空闲PE;- 你未明确指定使用
/dev/nvme3n1p1的空闲空间,导致LVM无法完成临时镜像的分配,因此抛出“Insufficient free space”错误。
解决办法
方法1:让LVM自动分配目标空间(推荐)
直接省略目标PV参数,让LVM自动利用VG中剩余的空闲空间(也就是你的两个新PV /dev/nvme2n1p1 和 /dev/nvme3n1p1)来创建临时镜像并完成迁移:
lvm> pvmove /dev/nvme0n1p2 -n home/windows-persistent
完成/dev/nvme0n1p2的迁移后,再执行同样的命令处理/dev/nvme1n1p1:
lvm> pvmove /dev/nvme1n1p1 -n home/windows-persistent
方法2:手动指定两个目标PV(可选)
如果你希望明确指定迁移的目标PV,可以同时传入两个新PV,让LVM将临时镜像的两个副本分别放置在这两个PV上:
lvm> pvmove /dev/nvme0n1p2 -n home/windows-persistent /dev/nvme2n1p1 /dev/nvme3n1p1
完成后再对/dev/nvme1n1p1执行类似命令即可。
验证迁移结果
迁移完成后,你可以通过以下命令查看home/windows-persistent的物理段分布,确认它仅存在于两个新PV上:
lvm> pvdisplay -m | grep -A 10 "windows-persistent"
备注:内容来源于stack exchange,提问作者小太郎
相关产品推荐
相关产品推荐

