При старте системы перестал монтироваться /home на LVM раздел. В fstab запись в порядке. После mount /home вручную маунтиться нормально. Подскажите где искать глюк?
При исследовании выяснилось:
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 стартовали корректно.
У меня создается сомнение, что вы сами пробовали тот рецепт который предлагаете.
Специально повторил ранее проведенное исследование. Прилагаю отчет о проведенных действиях.
Эксперимент 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.
Спасибо за помощь!
lvmetad добавить в default или boot?
Согласно моим представлениям о здравом смысле как бы не в sysinit.
Посмотри ебилд на предмет сообщений: куда дэвы предлагают (полагают правильным) его ставить.
dolvm к параметрам ядра, если
dolvm к параметрам ядра, если используется initramfs собранный genkernel.
initramfs не используеться.
initramfs не используеться. Раньше нормально маунтилось.
В /etc/lvm/lvm.conf менял use_lvmetad = 0 на use_lvmetad = 1, не помогло.
в rc.log теперь: * Starting
в rc.log теперь:
* Starting lvmetad ...
* start-stop-daemon: did not create a valid pid in `/run/lvmetad.pid'
* Failed to start lvmetad
Обновил lvm на нестабильную версию, не помогло. :(
lvmetad
На версии 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 на уровень
Добавьте lvmetad на уровень запуска.
lvmetad
У меня создается сомнение, что вы сами пробовали тот рецепт который предлагаете.
Специально повторил ранее проведенное исследование. Прилагаю отчет о проведенных действиях.
Эксперимент 1. Отключено использование lvmetad
В конфигурационном файле
/etc/lvm/lvm.confСервис lvm находится в boot.
Из вывода rc-status --all
В любом случае lvmetad находится в перечне подлежащих запуску.
При загрузке видим:
Эксперимент 2. Используется lvmetad и оба сервиса находятся в boot
В конфигурационном файле
/etc/lvm/lvm.confСервисы lvm и lvmetad находятся в boot.
Из вывода rc-status boot
Заранее модифицировал скрипт
/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"Написано на коленке в целях разобраться с причинами поведения системы.
При загрузке видим:
Вывод: Создание необходимого для lvm сокета не происходит с задержкой. При переходе на уровень 3 (default) будет повторно произведена загрузка обоих сервисов: lvm и lvmetad. Причем во втором случае необходимый сокет будет создан и есть надежда что будет использоваться lvm-ом.
Данный подход неудовлетворителен по причине невозможности смонтировать том из lvm в fstab.
Эксперимент 3. Старт lvm не прерывается по причине отсутвия сокета lvmetad
В конфигурационном файле
/etc/lvm/lvm.confпо прежнемуТолько сервис lvm находится в boot.
Из вывода rc-status boot
Скрипт
/etc/init.d/lvmизменен. diff функции start() относительно исходного скрипта:При загрузке видим:
Вывод: 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 только
Похоже что на default только lvm стартует.
Спасибо за помощь! lvmetad
Спасибо за помощь!
lvmetad добавить в default или boot?
/
Согласно моим представлениям о здравом смысле как бы не в
sysinit.Посмотри ебилд на предмет сообщений: куда дэвы предлагают (полагают правильным) его ставить.
:wq
--
Live free or die