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
.
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.
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
.
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.
Tags lvm openstack linux diskmanagement