===== Ошибка автозапуска службы nfs-server.service - exportfs: Failed to resolve в CentOS Linux 7.2 =====
При перезагрузке файлового **NFS**-сервера на базе **CentOS Linux 7.2** служба **nfs-server** не стартует, хотя настроена на автоматический запуск. Соответсвенно NFS-клиентам недоступны NFS-шары с этого файлового срвера.
При этом ручной запуск службы **nfs-server** происходит успешно.
После перезагрузки сервера, если заглянуть в текущий статус службы то увидим то, что она не запущена и ошибку типа "//exportfs: Failed to resolve..."//
# service nfs-server status
Redirecting to /bin/systemctl status nfs-server.service
● nfs-server.service - NFS server and services
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service;enabled;vendor preset:disabled)
Active: failed (Result: exit-code) since Fri 2016-09-09 10:03:12 MSK; 28min ago
Process: 1955 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=1/FAILURE)
Sep 09 10:02:35 systemd[1]: Starting NFS server and services...
Sep 09 10:03:12 exportfs[1955]: exportfs: Failed to resolve OVIRT1.dom.com
Sep 09 10:03:12 systemd[1]: nfs-server.service:control process exited, code=exited status=1
Sep 09 10:03:12 systemd[1]: Failed to start NFS server and services.
Sep 09 10:03:12 systemd[1]: Unit nfs-server.service entered failed state.
Sep 09 10:03:12 systemd[1]: nfs-server.service failed.
Проблема может быть связана с тем, что в процессе загрузки служба **nfs-server.service** пытается запуститься до того, как закончена полная инициализация сети, и соответственно из-за ошибки разрешения имени из файла **/etc/exports** служба не стартует.
Для решения этой проблемы можно использовать разные методы.
**Метод №1**\\
Включить службу **NetworkManager-wait-online**, в случае если в вашей системе используется **NetworkManager** :
# systemctl enable NetworkManager-wait-online.service
**Метод №2**\\
Отредактировать конфигурационный файл службы **/usr/lib/systemd/system/nfs-server.service**, добавив в секцию **[Unit]** строки:
[Unit]
...
After=network-online.target
Wants=network-online.target
Requires=network-online.target
...
После этого выполняем команду:
# systemctl daemon-reload
Эти методы можно пробовать использовать как раздельно так и вместе.
После применения методов несколько раз перезагружаем сервер и убеждаемся в том, что каждый раз служба **nfs-server** запускается автоматически при загрузке системы.
Если ничего не помогает, то можно попробовать поставить жёсткий "костыль", а именно добавить в конец файла **/etc/rc.d/rc.local** проверку наличия сети путём отсылки ping, и как только сеть появится - запускать службу.
Этот фрагмент добавим в файл **/etc/rc.d/rc.local** (в переменную checkip вставьте IP другого сервера, например шлюза):
sleep 10
checkip="10.1.0.1"
if [ -z "$(systemctl status nfs-server.service | grep 'Active: active')" ]; then
while ! ping -c 1 -W 1 $checkip; do
# Waiting for gateway ip - network interface might be down..."
sleep 1
done
sleep 10
systemctl start nfs-server.service
fi
И не забудем сделать исполняемым файл
# chmod +x /etc/rc.d/rc.local
=== Дополнительные источники информации ===
[[https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/|freedesktop.org wiki - Running Services After the Network is up]]
----
{{:user:blogroot.png?50&nolink |}} Автор первичной редакции:\\ [[user:blogroot|Алексей Максимов]] \\ Время публикации: 09.09.2016 11:10
{{tag>Linux CentOS "CentOS 7.2" NFS nfs-server NetworkManager NetworkManager-wait-online exportfs}}
~~DISCUSSION~~