Centos 7 autofs mount не работает сразу после перезагрузки

Я установил autofs на Centos 7. Однако, похоже, что после перезагрузки монтировался каталог / home /, даже когда я в него вставил, потребовалось некоторое время. Успешно только после 3 попыток:

[root@localhost ~] cd /home/<user>
-bash: cd: /home/<user>: No such file or directory

и autofs включен, поэтому я ожидаю, что он запустится после перезагрузки:

[root@localhost etc]# systemctl status autofs
autofs.service - Automounts filesystems on demand
   Loaded: loaded (/usr/lib/systemd/system/autofs.service; enabled)
   Active: active (running) since Tue 2015-07-21 10:34:38 HKT; 1h 13min ago
  Process: 1379 ExecStart=/usr/sbin/automount $OPTIONS --pid-file /run/autofs.pid (code=exited, status=0/SUCCESS)
 Main PID: 1385 (automount)
   CGroup: /system.slice/autofs.service
           └─1385 /usr/sbin/automount --pid-file /run/autofs.pid

Jul 21 10:34:38 localhost.localdomain systemd[1]: Starting Automounts filesystems on demand...
Jul 21 10:34:38 localhost.localdomain automount[1385]: setautomntent: lookup(sss): setautomntent: No such file or directory
Jul 21 10:34:38 localhost.localdomain systemd[1]: Started Automounts filesystems on demand.

Вот /etc/auto.master:

/misc /etc/auto.misc
/net  -hosts
+dir:/etc/auto.master.d
/home /etc/auto.home
/san /etc/auto.san
+auto.master

/etc/auto.master:

* -fstype=nfs,rw 192.254.100.4:/home_external/user_home_local/&

/etc/auto.san:

mysql_db 192.254.100.4:/san_external/mysqldb

Я подозреваю, что по аналогичным причинам, когда mysql запускается после перезагрузки, возникает ошибка, говорящая, что он не может 'cd' в /san/mysql_db/. Но ручной перезапуск на mysql после загрузки машины работает. Есть идеи? спасибо В.М.

2 ответа

Решение

Я испытал нечто подобное.

То есть логины пользователей с автоматически подключенными домашними каталогами зависали сразу после перезагрузки, до тех пор, пока я вручную не запустил rpcbind с помощью "systemctl start rpcbind". Это со всеми последними обновлениями Cent7 на сегодняшний день.

Я обнаружил, что изменение файла модуля autofs в зависимости от rpcbind и некоторых других сервисов решило мою проблему. См. Строку "Require =network.target rpc-statd.service rpcbind.service" в блоке кода "После" ниже...

До: /usr/lib/systemd/system/autofs.service

[Unit]
Description=Automounts filesystems on demand
After=network.target ypbind.service sssd.service

[Service]
Type=forking
PIDFile=/run/autofs.pid
EnvironmentFile=-/etc/sysconfig/autofs
ExecStart=/usr/sbin/automount $OPTIONS --pid-file /run/autofs.pid
ExecReload=/usr/bin/kill -HUP $MAINPID
TimeoutSec=180

[Install]
WantedBy=multi-user.target

После: /usr/lib/systemd/system/autofs.service

[Unit]
Description=Automounts filesystems on demand
Requires=network.target rpc-statd.service rpcbind.service
After=network.target ypbind.service sssd.service

[Service]
Type=forking
PIDFile=/run/autofs.pid
EnvironmentFile=-/etc/sysconfig/autofs
ExecStart=/usr/sbin/automount $OPTIONS --pid-file /run/autofs.pid
ExecReload=/usr/bin/kill -HUP $MAINPID
TimeoutSec=180

[Install]
WantedBy=multi-user.target

Полезный совет: https://www.centos.org/forums/viewtopic.php?f=47&t=51789

Это коренная причина проблемы:

  • systemd сначала запускает sssd
  • sssd настроен как процесс разветвления в sssd. sssd не сигнализирует systemd, когда он полностью загружен. После запуска systemd считает sssd загруженным и продолжает процесс запуска.
  • В некоторых случаях может пройти некоторое время, прежде чем sssd загрузится и начнет отвечать на запросы autofs/passwd/... nss. Я видел системы, где это занимает до 5 секунд.
  • если autofs запускается до загрузки sssd, карта autofs недоступна.

Есть несколько способов исправить это:

  • чистое решение заключается в том, что sssd реализует сигнализацию systemd, чтобы он мог уведомлять systemd, когда он полностью загружен
  • попробуйте ускорить загрузку sssd. Проверьте свою конфигурацию sssd, чтобы проверить, есть ли причина, почему он загружается так медленно.
  • хакерское решение состоит в искусственном добавлении достаточной задержки перед запуском autofs. (Вот как работает предыдущий ответ. Он просто добавляет другую службу перед autofs, поэтому sssd получает еще немного времени.) В некоторых случаях этого недостаточно. Другое решение предлагается в баге https://bugzilla.redhat.com/show_bug.cgi?id=1189767. добавлять

    ExecStartPre=/bin/sleep 10
    

    к вашему sssd.unit

Другие вопросы по тегам