LVM RAID 5 não resultando em tamanho de volume lógico esperado

2

Estou tendo um problema com o LVM RAID 5 não permitindo que eu crie um LV que use o espaço nas quatro unidades do VG. O que é particularmente irritante é que eu criei este mesmo VG / LV usando o mesmo modelo de drives há dois anos neste mesmo sistema e não me lembro de ter esse problema.

Aqui está a saída de pvs e vgs antes de tentar criar o RAID 5 LV:

Saída de 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

Saída de 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

O comando que usei da última vez para criar LV usando as mesmas unidades de modelo no mesmo sistema é:

lvcreate --type raid5 -L 8.18T -n lv_sklad01 vg_sklad01

Quando eu emito este mesmo comando mudando os nomes dos alvos VG e LV eu recebo:

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

Isso não faz sentido, pois tenho quatro unidades com capacidade de 2,73T. 4 * 2,73 = 10,92. Subtrair um para paridade me dá 8.19T, que é o tamanho do LV original que tenho neste sistema. Bater Minhas. Cabeça. Contra. Monitor. :?

Agarrando palhas, eu também tentei:

[root@sklad ~]# lvcreate --type raid5 -l 100%VG -n lv_sklad02 vg_sklad02
  Using default stripesize 64.00 KiB.
  Logical volume "lv_sklad02" created.

Isso resulta em um LV 2/3 do tamanho que eu esperava. Saída de 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

Após a emissão do comando lvcreate acima, a saída de pvs, vgs e lvs é a seguinte:

[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            

Por alguma razão, há espaço não alocado no vg_sklad02 (o VG em que estou trabalhando). O -l 100% VG não deveria ter usado todo o espaço disponível no VG?

O LV lv_sklad01 e o lv_sklad02 devem ser do mesmo tamanho que são criados a partir das mesmas unidades e, até onde me lembro, tentei usar o mesmo comando create.

Alguém tem alguma sugestão sobre o que estou fazendo de errado?

    
por LazLong 30.05.2017 / 04:29

1 resposta

1

Como eu disse na minha pergunta, eu fiz isso antes e tenho um registro de captura do que fiz para realizá-lo há dois anos. Por alguma razão, o comando idêntico lvcreate não funcionou. Para obter este LV create eu tive que especificar o número de listras usando -i 3. Então, o comando de trabalho foi:

lvcreate -i 3 --type raid5 -L 8.18T -n lv_sklad02 vg_sklad02

Eu acho que algo mudou nas atualizações das ferramentas do LVM?

UPDATE

Eles realmente fizeram uma mudança no LVM2. De 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.
<...>

É bom saber que eu não estava completamente louco. :-) Eu RTFM'd, mas não o FM certo, eu acho. : -))

    
por 30.05.2017 / 06:05

Tags