我遇到了 LVM RAID 5 问题,它不允许我创建使用 VG 中所有四个驱动器空间的 LV。特别令人恼火的是,两年前我在同一个系统上使用相同型号的驱动器创建了同样的 VG/LV,我不记得遇到过这个问题。
这是我尝试创建 RAID 5 LV 之前的 pvs 和 vgs 的输出:
pvs 的输出:
PV VG Fmt Attr PSize PFree
/dev/sda1 vg_sklad02 lvm2 a-- 2.73t 2.73t
/dev/sdb1 vg_sklad01 lvm2 a-- 2.73t 0
/dev/sdc1 vg_sklad02 lvm2 a-- 2.73t 2.73t
/dev/sdd1 vg_sklad01 lvm2 a-- 2.73t 0
/dev/sde1 vg_sklad01 lvm2 a-- 2.73t 0
/dev/sdf1 vg_sklad02 lvm2 a-- 2.73t 2.73t
/dev/sdg1 vg_sklad02 lvm2 a-- 2.73t 2.73t
/dev/sdh1 vg_sklad01 lvm2 a-- 2.73t 0
/dev/sdi2 vg_bootdisk lvm2 a-- 118.75g 40.00m
/dev/sdj2 vg_bootdisk lvm2 a-- 118.75g 40.00m
vgs的输出:
VG #PV #LV #SN Attr VSize VFree
vg_bootdisk 2 2 0 wz--n- 237.50g 80.00m
vg_sklad01 4 1 0 wz--n- 10.92t 0
vg_sklad02 4 0 0 wz--n- 10.92t 10.92t
我上次在同一系统上使用同一型号的驱动器创建 LV 时使用的命令是:
lvcreate --type raid5 -L 8.18T -n lv_sklad01 vg_sklad01
当我发出相同的命令并更改 VG 和 LV 目标名称时,我得到:
lvcreate --type raid5 -L 8.18T -n lv_sklad02 vg_sklad02
Using default stripesize 64.00 KiB.
Rounding up size to full physical extent 8.18 TiB
Insufficient free space: 3216510 extents needed, but only 2861584 available
这没有意义,因为我有四个驱动器,容量为 2.73T。4 * 2.73 = 10.92。减去一个奇偶校验,我得到 8.19T,这是我在该系统上拥有的原始 LV 的大小。我的头撞在显示器上。:?
为了避免这种情况,我还尝试了:
[root@sklad ~]# lvcreate --type raid5 -l 100%VG -n lv_sklad02 vg_sklad02
Using default stripesize 64.00 KiB.
Logical volume "lv_sklad02" created.
这导致 LV 大小为我预期的 2/3。lvs 的输出:
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv_root vg_bootdisk rwi-aor--- 102.70g 100.00
lv_swap vg_bootdisk rwi-aor--- 16.00g 100.00
lv_sklad01 vg_sklad01 rwi-aor--- 8.19t 100.00
lv_sklad02 vg_sklad02 rwi-a-r--- 5.46t 0.18
发出上述 lvcreate 命令后,pvs、vgs 和 lvs 的输出如下:
[root@sklad ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda1 vg_sklad02 lvm2 a-- 2.73t 0
/dev/sdb1 vg_sklad01 lvm2 a-- 2.73t 0
/dev/sdc1 vg_sklad02 lvm2 a-- 2.73t 0
/dev/sdd1 vg_sklad01 lvm2 a-- 2.73t 0
/dev/sde1 vg_sklad01 lvm2 a-- 2.73t 0
/dev/sdf1 vg_sklad02 lvm2 a-- 2.73t 0
/dev/sdg1 vg_sklad02 lvm2 a-- 2.73t 2.73t
/dev/sdh1 vg_sklad01 lvm2 a-- 2.73t 0
/dev/sdi2 vg_bootdisk lvm2 a-- 118.75g 40.00m
/dev/sdj2 vg_bootdisk lvm2 a-- 118.75g 40.00m
[root@sklad ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg_bootdisk 2 2 0 wz--n- 237.50g 80.00m
vg_sklad01 4 1 0 wz--n- 10.92t 0
vg_sklad02 4 1 0 wz--n- 10.92t 2.73t
[root@sklad ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv_root vg_bootdisk rwi-aor--- 102.70g 100.00
lv_swap vg_bootdisk rwi-aor--- 16.00g 100.00
lv_sklad01 vg_sklad01 rwi-aor--- 8.19t 100.00
lv_sklad02 vg_sklad02 rwi-a-r--- 5.46t 2.31
由于某种原因,vg_sklad02(我正在处理的 VG)中有未分配的空间。-l 100%VG 不应该使用 VG 中的所有可用空间吗?
LV lv_sklad01 和 lv_sklad02 应该具有相同的大小,因为它们是从相同的驱动器创建的,并且据我记得,我尝试使用相同的创建命令。
有人对我做错的事情有什么建议吗?
答案1
正如我在问题中所说,我以前做过这个,并且有一份两年前完成此操作的捕获日志。出于某种原因,相同的 lvcreate 命令不起作用。要创建此 LV,我必须使用 -i 3 指定条带数。因此,有效的命令是:
lvcreate -i 3 --type raid5 -L 8.18T -n lv_sklad02 vg_sklad02
我猜测 LVM 工具更新时发生了一些变化?
更新
他们确实对 LVM2 进行了更改。来自 rpm -q --changelog lvm2
* Fri Jul 29 2016 Peter Rajnoha <[email protected]> - 7:2.02.162-1
<...>
- Add allocation/raid_stripe_all_devices to reinstate previous behaviour.
- Create raid stripes across fixed small numbers of PVs instead of all PVs.
<...>
很高兴知道我没有完全疯掉。:-) 我读了 FM,但我想不是正确的 FM。:-))