我正在尝试将 lvm 上的数据迁移到两个新磁盘,并在两个磁盘之间设置镜像。我已成功将所有数据迁移到两个磁盘中的第一个,而第二个磁盘完全可用作镜像。我使用以下方法验证了这一点pvdisplay -m /dev/sd{g,h}1
--- Physical volume ---
PV Name /dev/sdg1
VG Name vg
PV Size 931.51 GiB / not usable 3.19 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 238466
Free PE 82866
Allocated PE 155600
PV UUID v2nc3j-EFBR-QpuG-xgro-Rm59-fmu6-IB3QcR
--- Physical Segments ---
Physical extent 0 to 49999:
Logical volume /dev/vg/videos
Logical extents 0 to 49999
Physical extent 50000 to 99999:
Logical volume /dev/vg/home
Logical extents 0 to 49999
Physical extent 100000 to 129999:
Logical volume /dev/vg/music
Logical extents 0 to 29999
Physical extent 130000 to 155599:
Logical volume /dev/vg/videos
Logical extents 50000 to 75599
Physical extent 155600 to 238465:
FREE
--- Physical volume ---
PV Name /dev/sdh1
VG Name vg
PV Size 931.51 GiB / not usable 3.19 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 238466
Free PE 238466
Allocated PE 0
PV UUID LuTrem-WcsZ-qw7l-2CDS-lLKI-wdq0-QEXhLf
--- Physical Segments ---
Physical extent 0 to 238465:
FREE
然后,当我尝试镜像home
逻辑卷时,它说我没有足够的空间。我使用了lvconvert -m1 vg/home
,输出为:
Insufficient suitable allocatable extents for logical volume : 50000 more required
Unable to allocate extents for mirror(s).
这让我很困惑,因为看起来第二个磁盘上有足够的空间可以镜像。我是不是做错了什么?或者有没有办法明确地告诉 LVM 将镜像的每个分支放在哪里?我使用的是 lvm2。
答案1
您没有足够的空间用于镜像日志。默认将镜像日志放在磁盘上(在单独的 PV 中)。请参阅https://bugs.launchpad.net/ubuntu/+source/lvm2/+bug/121527了解更多信息。
答案2
我知道这是一个老话题,但我不确定为什么其他答案链接到错误报告。不幸的是,LVM 在解释为什么它说空间不足方面做得很糟糕,但您可以通过在 lvconvert 行末尾添加“--mirrorlog core”来完全避免这种情况。这会将日志保留在内存中,而不是将其写入磁盘。
不过,需要特别声明的是:这只应用于瞬时(即磁盘迁移)事件,因为镜像日志在内存中,重启后镜像会丢失。我使用这个是因为当 SAN 设备超出保修期时,我们必须将它们从一个框架迁移到另一个框架,并且我在同步完成后会断开旧镜像。如果您想要一个永久的镜像解决方案,我建议使用 mdadm,或者为镜像日志设置另一个卷(我相信它必须在自己的 VG 中,但我可能错了)。或者,如果您的基础设施支持,您可以使用硬件 RAID。