Вы здесь

При старте перестал монтироваться раздел LVM.

При старте системы перестал монтироваться /home на LVM раздел. В fstab запись в порядке. После mount /home вручную маунтиться нормально. Подскажите где искать глюк?

dolvm к параметрам ядра, если используется initramfs собранный genkernel.

initramfs не используеться. Раньше нормально маунтилось.
В /etc/lvm/lvm.conf менял use_lvmetad = 0 на use_lvmetad = 1, не помогло.

в rc.log теперь:

* Starting lvmetad ...
* start-stop-daemon: did not create a valid pid in `/run/lvmetad.pid'
* Failed to start lvmetad

Обновил lvm на нестабильную версию, не помогло. :(

На версии lvm2-2.02.109, при поднятом значении use_lvmetad = 1 в /etc/lvm/lvm.conf,
столкнулся с проблемой, описанной в https://bugs.gentoo.org/show_bug.cgi?id=521960.

При исследовании выяснилось:
1. lvm2 при старте в runlevel/boot пытаеся соединиться с сокетом lvmetad, выдавая предупреждение:
/run/lvm/lvmetad.socket: connect failed: ...
При этом попытка lvm2 стартовать lvmetad не проходит, попытки подождать пока стартует lvmetad (до 30 сек) ни к чему не привели.
Возможно, это связано со следующе проблемой https://bugzilla.redhat.com/show_bug.cgi?id=813766.
2. Не смотря на то что lvm2-2.02.109 жалуется на отсуствие сокета он стартует и работает, возможно, без поддержки lvmetad. При этом lvmetad может достартовать на уровне 3.
3. Версия lvm2-2.02.103 при похожих условиях, выдав предупреждения, не стартует.
4. При установке use_lvmetad = 0, lvmetad не поднимается и версии lvm2-2.02.109 и lvm2-2.02.103 стартовали корректно.

Судя по приведенному changelog: http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/sys-fs/lvm2/ChangeLog?view=markup,
в версии lvm2-2.02.110 значение use_lvmetad по умолчанию будет равно 1.

Добавьте lvmetad на уровень запуска.

У меня создается сомнение, что вы сами пробовали тот рецепт который предлагаете.

Специально повторил ранее проведенное исследование. Прилагаю отчет о проведенных действиях.

Эксперимент 1. Отключено использование lvmetad

В конфигурационном файле /etc/lvm/lvm.conf

use_lvmetad=0

Сервис lvm находится в boot.
Из вывода rc-status --all

Runlevel: boot
...
 lvm                                                               [  started  ]
...
Dynamic Runlevel: needed
 lvmetad                                                           [  started  ]

В любом случае lvmetad находится в перечне подлежащих запуску.
При загрузке видим:

 * Starting lvmetad ...                                                   [ ok ]
 * Setting up the Logical Volume Manager ...                              [ ok ]
...
INIT: Entering runlevel: 3
 * Starting lvmetad ...                                                   [ ok ]

Эксперимент 2. Используется lvmetad и оба сервиса находятся в boot

В конфигурационном файле /etc/lvm/lvm.conf

use_lvmetad=1

Сервисы lvm и lvmetad находятся в boot.
Из вывода rc-status boot

Runlevel: boot
...
 lvmetad                                                            [  started  ]
 lvm                                                                [  started  ]
...

Заранее модифицировал скрипт /etc/init.d/lvm. diff функции start():

***************
*** 39,44 ****
--- 39,55 ----
                        modprobe dm-mod 2>/dev/null
                fi
                if [ -d /proc/lvm ] || dm_in_proc ; then
+                       /bin/mount | /bin/grep -i run
+                       ebegin "Wait lvmetad start"
+                       for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 endwait; do
+                               [ -S /run/lvm/lvmetad.socket ] && break
+                               if [ "$i" == "endwait" ]; then
+                                       eerror "Failed to wait lvmetad"
+                                       return 1
+                               fi
+                               einfo "sleep $i"
+                               /usr/bin/sleep 1
+                       done
                        ebegin "Setting up the Logical Volume Manager"
                        #still echo stderr for debugging
                        lvm_commands="#! ${lvm_path} --config '${config}'\n"

Написано на коленке в целях разобраться с причинами поведения системы.

При загрузке видим:


* Mounting /run ...
* /run/openrc: creating directory
* /run/lock: creating directory
* /run/lock: correcting owner
...
* Starting lvmetad ... [ ok ]
tmpfs on /run type tmpfs (rw,nosuid,nodev,relatime,size=815904k,mode=755)
* Wait lvmetad start ...
* sleep 1
* sleep 2
....
* sleep 29
* sleep 30
* Failed to wait lvmetad
* ERROR: lvm failed to start
* Checking local filesystems ...
....
* Mounting local filesystems ...
mount: special device /dev/vg/mystorage does not exist
* Some local filesystem failed to mount [ !! ]
* Configuring kernel parameters ... [ ok ]
...
INIT: Entering runlevel: 3
* Starting lvmetad ... [ ok ]
tmpfs on /run type tmpfs (rw,nosuid,nodev,relatime,size=815904k,mode=755)
* Wait lvmetad start ...
* Setting up the Logical Volume Manager ... [ ok ]
* Starting gpm ... [ ok ]

Вывод: Создание необходимого для lvm сокета не происходит с задержкой. При переходе на уровень 3 (default) будет повторно произведена загрузка обоих сервисов: lvm и lvmetad. Причем во втором случае необходимый сокет будет создан и есть надежда что будет использоваться lvm-ом.
Данный подход неудовлетворителен по причине невозможности смонтировать том из lvm в fstab.

Эксперимент 3. Старт lvm не прерывается по причине отсутвия сокета lvmetad

В конфигурационном файле/etc/lvm/lvm.conf по прежнему

use_lvmetad=1

Только сервис lvm находится в boot.
Из вывода rc-status boot

Runlevel: boot
...
 lvm                                                                [  started  ]
...

Скрипт /etc/init.d/lvm изменен. diff функции start() относительно исходного скрипта:


***************
*** 39,44 ****
--- 39,56 ----
modprobe dm-mod 2>/dev/null
fi
if [ -d /proc/lvm ] || dm_in_proc ; then
+ /bin/mount | /bin/grep -i run
+ ebegin "Wait lvmetad start"
+ for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 endwait; do
+ [ -S /run/lvm/lvmetad.socket ] && break
+ if [ "$i" == "endwait" ]; then
+ eerror "Failed to wait lvmetad"
+ break
+ #return 1
+ fi
+ einfo "sleep $i"
+ /usr/bin/sleep 1
+ done
ebegin "Setting up the Logical Volume Manager"
#still echo stderr for debugging
lvm_commands="#! ${lvm_path} --config '${config}'\n"

При загрузке видим:


* Starting lvmetad ... [ ok ]
tmpfs on /run type tmpfs (rw,nosuid,nodev,relatime,size=815904k,mode=755)
* Wait lvmetad start ...
* sleep 1
* sleep 2
...
* sleep 29
* sleep 30
* Failed to wait lvmetad
* Setting up the Logical Volume Manager ...
/run/lvm/lvmetad.socket: connect failed: No such file or directory
WARNING: Failed to connect to lvmetad. Falling back to internal scanning. [ ok ]
* Checking local filesystems ...
...
INIT: Entering runlevel: 3
* Starting lvmetad ... [ ok ]
* Starting gpm ... [ ok ]
...

Вывод: lvm стартует не соединившись с сокетом lvmetad. При этом доступен для монтирования в fstab том lvm. На стадии 3 повторно запускается lvmetad.

Взаимодействуют ли lvm и lvmetad неизвестно.
Именно об этой ситуации сообщается в багтрекере RedHat - о проблемах при раннем запуске lvmetad:Bug 813766 - Do not try to use lvmetad during early system init stage (Homepage:http://sources.redhat.com/lvm2/)

воспользоваться столь редко используемой технологией (lvm). Неужто никто не пользуется lvm и не сталкивался с похожими проблемами?

Пока в ручную монтирую, жду когда поправят. :)

поднятие lvm и lvmetad происходит на уровне default и монтирование уже после старта системы?

Просьба!
Если кто еще пользуется lvm, расскажите как, где и в каком порядке вы стартуете сервисы, на каком этапе монтируете lv?

Похоже что на default только lvm стартует.

Спасибо за помощь!
lvmetad добавить в default или boot?

micbal написал:
Спасибо за помощь!
lvmetad добавить в default или boot?

Согласно моим представлениям о здравом смысле как бы не в sysinit.
Посмотри ебилд на предмет сообщений: куда дэвы предлагают (полагают правильным) его ставить.

:wq
--
Live free or die