Distribui automaticamente lvm (listras) por um LVM2 VG específico no Linux

1

Com o Linux lvm2, posso criar volumes lógicos dentro de um VG. Quando especifico com o comando lvcreate striping / stripesize, posso distribuir manualmente os volumes lógicos por todos os volumes físicos (como mostrado para lvnova abaixo).

Existe uma maneira de configurar que o lvcreate sempre será distribuído e especialmente se eu criar novos LVs que eles devem ser criados por round robin nos dispositivos? (isto é, sem especificar um dispositivo "inicial" físico em cada lvcreate)

Eu preciso que isso seja configurado persistentemente para um grupo de volumes que é usado pelo OpenStack Nova para dispositivos efêmeros. Parece que não consigo configurar o driver lvm para realmente distribuí-los de maneira mais uniforme.

Eu estava procurando uma maneira de especificá-lo como atributos no VG (já que o lvcreate está falando sobre herdar alocações), mas não consigo encontrá-lo no manual.

Os LVs têm herança de política de alocação e o VG me diz que é normal:

# vgchange vgdata --alloc normal
Volume group allocation policy is already normal

Eu também estava procurando se há uma política de alocação dentro do lvm.conf. Mas existem apenas parâmetros para a estratégia cling2, que mantém os segmentos próximos quando se estende um volume (o que não é minha principal preocupação aqui).

Exemplo para um LV distribuído manualmente e para um OpenStack gerou um volume em um sistema de volume físico 4:

nvme0n1                                                               259:0    0   1.5T  0 disk
└─nvme0n1p1                                                           259:4    0   1.5T  0 part
  ├─vgdata-lvnova (dm-0)                                              252:0    0   750G  0 lvm  /srv/data
  ├─vgdata-ec3d1f0d--76f2--4cb2--af66--665dba0582b1_disk (dm-3)       252:3    0    50G  0 lvm
  ├─vgdata-ec3d1f0d--76f2--4cb2--af66--665dba0582b1_disk.swap (dm-4)  252:4    0     8G  0 lvm
  ├─vgdata-290ef35d--6d84--49cf--8d7d--3240dcd84a3e_disk (dm-5)       252:5    0    20G  0 lvm
 ...
nvme1n1                                                               259:1    0   1.5T  0 disk
└─nvme1n1p1                                                           259:5    0   1.5T  0 part
  └─vgdata-lvnova (dm-0)                                              252:0    0   750G  0 lvm  /srv/data
nvme2n1                                                               259:2    0   1.5T  0 disk
└─nvme2n1p1                                                           259:6    0   1.5T  0 part
  └─vgdata-lvnova (dm-0)                                              252:0    0   750G  0 lvm  /srv/data
nvme3n1                                                               259:3    0   1.5T  0 disk
└─nvme3n1p1                                                           259:7    0   1.5T  0 part
  └─vgdata-lvnova (dm-0)                                              252:0    0   750G  0 lvm  /srv/data

root@compute18:~# lvs --segments
  LV                                             VG     Attr      #Str Type    SSize
  lv-root                                        vg0    -wi-ao---    1 linear  223.52g
  lv-swap                                        vg0    -wi-ao---    1 linear   46.56g
  17bad6e1-41f0-4725-a74d-7a1f1df5f0b6_disk      vgdata -wi-ao---    1 linear   20.00g
  17bad6e1-41f0-4725-a74d-7a1f1df5f0b6_disk.swap vgdata -wi-ao---    1 linear    1.00g
  189585e0-9b69-4d7c-b1b4-194156312553_disk      vgdata -wi-ao---    1 linear   20.00g
...
  lvnova                                         vgdata -wi-ao---    4 striped 750.00g

BTW: Eu usei um / dev / md0 antes, mas eu esperava me livrar dessa indireção.

Este é o Linux 4.4.0 no Ubuntu Trusty (lvm 2.0.2.98 (2)) com o KVM / nova OS Liberty.

    
por eckes 09.05.2017 / 18:37

2 respostas

4

Você pode configurar isso em /etc/lvm.conf . Se você definir raid_stripe_all_devices=1 , o padrão deverá ser distribuído em vez de linear. Você também deve dar uma olhada em use_linear_target .

    
por 09.05.2017 / 19:21
0

A opção allocation/raid_stripe_all_devices=1 em lvm.config mencionada por Andreas está disponível apenas com o Ubuntu Zesty e, mesmo assim, parece não ativar volumes distribuídos por padrão.

Por esse motivo, corrigimos o sistema operacional:

/usr/lib/python2.7/dist-packages/nova/virt/libvirt/storage/lvm.py
  else:
    check_size(vg, lv, size)
-   cmd = ('lvcreate', '-L', '%db' % size, '-n', lv, vg)
+   cmd = ('lvcreate', '-i', '4','-L', '%db' % size, '-n', lv, vg)

Isso é para nosso caso:

nvme0n1                                                              259:0    0   1.5T  0 disk
└─nvme0n1p1                                                          259:4    0   1.5T  0 part
  ├─vgdata-b063d1b9--e1ac--4cab--98d8--9a2d1c71406e_disk (dm-5)      252:5    0   100G  0 lvm
  └─vgdata-b063d1b9--e1ac--4cab--98d8--9a2d1c71406e_disk.swap (dm-6) 252:6    0     8G  0 lvm
nvme1n1                                                              259:1    0   1.5T  0 disk
└─nvme1n1p1                                                          259:5    0   1.5T  0 part
  ├─vgdata-b063d1b9--e1ac--4cab--98d8--9a2d1c71406e_disk (dm-5)      252:5    0   100G  0 lvm
  └─vgdata-b063d1b9--e1ac--4cab--98d8--9a2d1c71406e_disk.swap (dm-6) 252:6    0     8G  0 lvm
nvme2n1                                                              259:2    0   1.5T  0 disk
└─nvme2n1p1                                                          259:6    0   750G  0 lvm  /srv/data
  ├─vgdata-b063d1b9--e1ac--4cab--98d8--9a2d1c71406e_disk (dm-5)      252:5    0   100G  0 lvm
  └─vgdata-b063d1b9--e1ac--4cab--98d8--9a2d1c71406e_disk.swap (dm-6) 252:6    0     8G  0 lvm
nvme3n1                                                              259:3    0   1.5T  0 disk
└─nvme3n1p1                                                          259:7    0   1.5T  0 part
  ├─vgdata-b063d1b9--e1ac--4cab--98d8--9a2d1c71406e_disk (dm-5)      252:5    0   100G  0 lvm
  └─vgdata-b063d1b9--e1ac--4cab--98d8--9a2d1c71406e_disk.swap (dm-6) 252:6    0     8G  0 lvm

# lvs --segments
  b063d1b9-e1ac-4cab-98d8-9a2d1c71406e_disk      vgdata -wi-ao---    4 striped 100.00g
  b063d1b9-e1ac-4cab-98d8-9a2d1c71406e_disk.swap vgdata -wi-ao---    4 striped   8.00g

Vamos abrir um bug do OpenStack para essa configuração ausente.

    
por 10.05.2017 / 12:24