С Linux lvm2 я могу создавать логические тома внутри VG. Когда я указываю lvcreate
команда striping / stripesize Я могу вручную распределить логические тома по всем физическим томам (как показано для Львов ниже).
Есть ли способ настроить, что lvcreate всегда будет чередоваться, и особенно, что если я создаю новые LV, они должны создаваться циклически на устройствах? (т.е. без указания физического "стартового" устройства в каждом lvcreate)
Мне нужно, чтобы это было постоянно настроено для группы томов, которая используется OpenStack Nova для эфемерных устройств. Похоже, я не могу настроить драйвер lvm, чтобы распределять их более равномерно.
Я искал способ указать это как атрибуты в VG (поскольку lvcreate говорит о наследовании распределения), но я не могу найти его в руководстве.
LV имеют политику распределения, и VG сообщает мне, что это нормально:
# vgchange vgdata --alloc normal
Volume group allocation policy is already normal
Я также искал, есть ли внутри lvm.conf политика распределения. Но есть только параметры для стратегии cling2, которая особенно удерживает сегменты близко друг к другу при расширении тома (что не является моей основной проблемой здесь).
Пример для LV с чередованием вручную и для OpenStack сгенерировал один том в системе с 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
Кстати: раньше я использовал полосатый / dev / md0, но я надеялся избавиться от этого косвенного обращения.
Это Linux 4.4.0 на Ubuntu Trusty (lvm 2.0.2.98 (2)) с KVM / nova OS Liberty.
Вы можете настроить это в /etc/lvm.conf
. Если вы установите raid_stripe_all_devices=1
по умолчанию должен быть полосатым, а не линейным. Вам также следует взглянуть на use_linear_target
.
В allocation/raid_stripe_all_devices=1
вариант в lvm.config
упомянутый Андреасом доступен только с Ubuntu Zesty, и даже тогда кажется, что чередующиеся тома по умолчанию не включаются.
По этой причине мы пропатчили ОС:
/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)
Вот и все в нашем случае:
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
Мы откроем ошибку OpenStack для этой отсутствующей настройки.