Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
vvk
7 лет назад

Нежелательные вложенные lvm-маппинги

Столкнулись тут с такой проблемой, что lvm на хост-машине подцепляет volume groups с LV-шек, на которых лежат виртуальные машины kvm.

Наша конфигурация такова, что есть железные сервера, и на них крутятся виртуальные машины kvm под гипервизором proxmox. По iSCSI подключен SAN, настроен multipath. Поверх iSCSI block device настроен lvm. Под каждую виртуальную машину proxmox нарезает logical volume на этом lvm.

Суть проблемы

Когда внутри виртуалок не используется lvm, всё хорошо. Но если он там есть, то lvm с хост-машины начинает находить "вложенные" PVs. Выглядит примерно так:

# pvs
  PV                         VG      Fmt  Attr PSize   PFree  
  /dev/mapper/mpatha         vg-fast lvm2 a--   14.80t   2.21t
  /dev/mapper/mpathb         vg-slow lvm2 a--   14.00t   1.15t
  /dev/sda3                  pve     lvm2 a--    3.27t 199.99g
  /dev/vg-fast/vm-221-disk-2 docker  lvm2 a--  128.00g   2.57g
  /dev/vg-fast/vm-247-disk-2 docker  lvm2 a--   64.00g   1.29

Вот эти две нижние PV на хост-машине совершенно не нужны, это внутренняя кухня VM.

Причём, если в нескольких VM-ках есть VG с одинаковым названием, на хост-машине начинается накопление тысяч файлов в /etc/lvm/archive/ вида:

# l /etc/lvm/archive/
total 6920
drwx------ 2 root root 6684672 Oct  2 16:06 ./
-rw------- 1 root root    3072 Oct  2 16:06 docker_00095-1747040817.vg
-rw------- 1 root root    3092 Oct  2 16:06 docker_00094-2112026967.vg
-rw------- 1 root root    3092 Oct  2 16:06 docker_00093-139939991.vg
-rw------- 1 root root    3072 Oct  2 16:06 docker_00092-1873650965.vg
-rw------- 1 root root    3072 Oct  2 16:05 docker_00091-358773432.vg
-rw------- 1 root root    3092 Oct  2 16:05 docker_00090-754533553.vg
-rw------- 1 root root    3092 Oct  2 16:05 docker_00089-68775250.vg
...

Из-за этого даже могут кончиться inodes на хост-машине.

В общем, эта ситуация очень нежелательна.

Решение

В данной ситуации нам надо настроить фильтрацию нежелательных девайсов в /etc/lvm/lvm.conf, чтобы lvm не пытался сканировать LV-шки.

Для этой цели есть директива filter, но она в данном случае не работает, потому что lvm дёргается по событию от udev и там этот фильтр переопределён в командной строке.

Нам нужна директива global_filter, - она работает во всех случаях.

Итак, прописываем в lvm.conf нечто вроде:

global_filter = [ "r|vg-.*|", "r|dm-.*|", "a/.*/" ]

Здесь r работает как "remove", а a как "append". Т.е. мы фильтруем имена девайсов, которые начинаются с "vg-" и "dm-". Вам надо будет поправить "vg-" под свои названия, а "dm-" надо оставить, т.к. это все device-mapper девайсы вида /dev/dm-*.

Смотрим pvs:

~# pvs
  PV                 VG      Fmt  Attr PSize  PFree  
  /dev/mapper/mpatha vg-fast lvm2 a--  14.80t   2.21t
  /dev/mapper/mpathb vg-slow lvm2 a--  14.00t   1.15t
  /dev/sda3          pve     lvm2 a--   3.27t 199.99g

Всё стало хорошо, никаких вложенных lvm PVs не обнаруживается.

Нашлась в некоторой степени похожая проблема, но там несколько иная ситуация: https://serverfault.com/questions/678642/linux-device-mapper-maps-lvm-pv-nested-inside-lv-when-taking-snapshot

P.S.

Статья "на всякий случай", вдруг кто-то столкнётся и нагуглит. В 50/50 не участвует, т.к.на Голосе такой ЦА пока что практически нет.

14
1.303 GOLOS
На Golos с September 2017
Комментарии (2)
Сортировать по:
Сначала старые