LVM RAID 5 未达到预期的逻辑卷大小

LVM RAID 5 未达到预期的逻辑卷大小

我遇到 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。奇偶校验减去 1 得到 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.
<...>

很高兴知道我并没有完全疯。 :-) 我是 RTFM,但我猜不是正确的 FM。 :-))

相关内容