我有以下情况:有4个磁盘的服务器 – 设备/dev/sdb – /dev/sde 。
每个磁盘都是物理卷,并且都在单个卷组中。
在这个卷组中,我有单个逻辑卷,跨越所有4个磁盘。
现在,我想将其迁移到更大的磁盘。 我添加了4个新驱动器(/dev/sdf - /dev/sdi) ,并将移动数据。
通常我会:
pvmove /dev/sdb /dev/sdf
等待它完成
pvmove /dev/sdc /dev/sdg
等待它完成
pvmove /dev/sde /dev/sdi
问题是 – 我可以安全地同时运行所有4个pvmoves,而不必等待每个pvmove完成?
回答参考。
不,你不能。 或者说 – 你可以安全的,但它不会工作。
为同样的lv运行第二个pvmove,最终会得到:
Skipping locked LV lv Skipping mirror LV pvmove0 All data on source PV skipped. It contains locked, hidden or non-top level LVs only. No data to move for vg
移动第二个之前,您必须等待第一个完成。
手册页说你可以,
You can run more than one pvmove at once provided they are moving data off different SourcePhysicalVolumes, but additional pvmoves will ignore any Logical Volumes already in the process of being changed, so some data might not get moved.
然而,如果你的LV跨越PV的话,那么你会得到上面显示的locking问题。 解决这个问题的方法是指定LV移动,而不是pv。
即。 pvmove lv_name pv_source pv_dest
这应该避免locking。 你不能并行化同一个LV tho。