NFS сервер не экспортирует хост, присутствующий в /etc/exports

Вопрос или проблема

У меня есть сервер NFS, работающий на CentOS 7.2, и у меня есть проблема с одним (путем/хостом клиента), указанным в моем /etc/exports, который должен быть экспортирован и не экспортируется…

Мой файл /etc/exports:

/mnt/data/ host1(rw,all_squash,anonuid=1001,anongid=1001)
/mnt/data/ host2(rw,all_squash,anonuid=1001,anongid=1001)
/mnt/data/ host3(rw,all_squash,anonuid=1001,anongid=1001)
/mnt/data/ host3(rw,all_squash,anonuid=1001,anongid=1001)

Я перезапустил свой сервер nfs и выполнил exportfs -a, поэтому вывод cat /var/lib/nfs/etab корректный:

/mnt/data   host1(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=1001,anongid=1001,sec=sys,rw,secure,root_squash,all_squash)
/mnt/data   host2(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=1001,anongid=1001,sec=sys,rw,secure,root_squash,all_squash)
/mnt/data   host3(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=1001,anongid=1001,sec=sys,rw,secure,root_squash,all_squash)
/mnt/data   host4(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=1001,anongid=1001,sec=sys,rw,secure,root_squash,all_squash)

Но когда я запускаю showmount -e, он не показывает мне host1:

/mnt/data host2 host3 host4

И на самом деле я не мог подключить /mnt/data с host1:

[root@host1 ~]# mount -a
mount.nfs: доступ запрещен сервером при подключении nfs-server:/mnt/data/

Хотя подключение с host2, 3 и 4 нормально.

PS: Для информации:

  • host1…hostn могут видеть и пинговать сервер NFS
  • SElinux был отключен для тестов
  • Нет брандмауэра ни на сервере, ни на клиенте (ВМ являются клонами друг друга)

Редактировать:

Спасибо за ваши ответы.

strace не показывает много информации:

stat("/run", {st_mode=S_IFDIR|0755, st_size=960, ...}) = 0
stat("/run/mount/utab", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
getcwd("/root", 4095)                   = 6
readlink("/root/nfs-server:", 0x7ffe3a9ee090, 4096) = -1 ENOENT (Нет такого файла или директории)
readlink("/mnt", 0x7ffe3a9edf70, 4096)  = -1 EINVAL (Недопустимый аргумент)
readlink("/mnt/data", 0x7ffe3a9edf70, 4096) = -1 EINVAL (Недопустимый аргумент)
stat("/sbin/mount.nfs", {st_mode=S_IFREG|S_ISUID|0755, st_size=113400, ...}) = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fd1b08f6b50) = 51633
wait4(-1, mount.nfs: доступ запрещен сервером при подключении nfs-server:/mnt/data/
[{WIFEXITED(s) && WEXITSTATUS(s) == 32}], 0, NULL) = 51633
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=51633, si_status=32, si_utime=0, si_stime=0} ---
close(1)                                = 0
close(2)                                = 0
exit_group(0)                           = ?
+++ завершено с 0 +++

Что я вижу по запущенным службам на стороне host1, так это то, что служба nfsv4.0-svc не запущена:

[root@host1 ~]# ps -aux --forest | grep nfs
root      1199  0.0  0.0      0     0 ?        S<   Feb15   0:00  \_ [nfsiod]

в то время как она работает на других хостах, которые успешно монтируют /mnt/data

[root@host2 ~]$ ps -ef | grep nfs
root      1296     2  0 févr.15 ?     00:00:00 [nfsiod]
root      1302     2  0 févr.15 ?     00:00:00 [nfsv4.0-svc]

Но я не знаю, является ли это причиной или следствием (т.е. nfsv4.0-svc работает, потому что монтирование прошло успешно…) : может ли это быть источником проблемы?

Извините за последний пост, который не был ответом… Я довольно нов в stackexchange.

Я наконец нашел проблему: при запуске showmount -e или showmount -e [nfs-server DNS] экспорт, который показывался, был неверным.

Но при выполнении showmount -e localhost или showmount -e [nfs-server IP] показывался правильный экспорт (с host1 внутри).

Таким образом, запуск моего монтирования на host1 с IP-адресом nfs-server решил проблему (очень жаль для нашей автоматизации клонов ВМ на основе DNS…).

Мы работаем на нашей инфраструктуре в Azure, так что, возможно, эта проблема с DNS возникает из-за этого.

Спасибо.

Алекс.

Ответ или решение

Решение проблемы с NFS-сервером на CentOS 7.2

Введение

В этой статье мы разберем проблему, связанную с NFS-сервером, который не экспортирует хост, соответствующий записи в файле /etc/exports на CentOS 7.2. Вы узнаете, как диагностировать и устранить проблему, а также возможные причины ее возникновения.

Описание проблемы

В процессе эксплуатации NFS-сервера были выявлены следующие проблемы:

  1. /etc/exports корректно настроен и содержит запись для host1.
  2. Выполнение команды exportfs -a не вызывает ошибок, и cat /var/lib/nfs/etab показывает правильные экспортируемые пути.
  3. Команда showmount -e не отображает host1, хотя этот хост присутствует в /etc/exports.
  4. При попытке монтирования на host1 возникает ошибка: access denied by server while mounting.

Шаги диагностики

  1. Проверка конфигурации /etc/exports
    Убедитесь, что в файле нет дублирующих записей. Как видно из предоставленного exports, есть два идентичных пункта для host3. Это может привести к несущественным проблемам при обработке.

  2. Перезагрузка и повторное экспортирование
    После изменения конфигурации рекомендуем выполнять:

    systemctl restart nfs-server
    exportfs -a
  3. Проверка доступности хостов
    Убедитесь в том, что host1 может видеть и пинговать NFS-сервер. Если пинг проходит, проверьте, разрешается ли имя хоста корректно.

  4. Проверка SELinux и файрволла
    Хотя вы упомянули, что SELinux отключен и файрволл не настроен, это стоит перепроверить. Для теста выполните:

    setenforce 0  # временно отключает SELinux
    iptables -L   # проверка правил файрволла
  5. Анализ showmount
    Стоит обратить внимание на вывод showmount -e. Различия при использовании IP и DNS могут указывать на проблемы с разрешением имен. Если команда с IP показывает host1, значит, проблема связана с DNS.

Возможные причины и решения

  1. Проблемы с DNS
    Если showmount -e работает корректно с IP, но не с DNS, возможно, это проблема с DNS-сервером, который не корректно разрешает имена. Проверьте настройки DNS на NFS-сервере и клиентах. Можно использовать dig или nslookup:

    nslookup nfs-server
  2. Настройка /etc/hosts
    Добавьте IP-адрес и соответствующее имя хоста в файл /etc/hosts на всех машинах для временного решения:

    <NFS-сервер IP> nfs-server
  3. Отсутствие службы nfsv4.0-svc
    Если вы наблюдаете отсутствие запущенной службы nfsv4.0-svc на host1, может потребоваться установка необходимых пакетов NFS или перезагрузка службы NFS. Проверьте, запущены ли все необходимые сервисы:

    systemctl status nfs-server

Заключение

Проблема с NFS-сервером на CentOS 7.2, когда host1 не может получить доступ к экспортируемым данным, довольно распространена и может быть вызвана множеством факторов. Важно правильно диагностировать проблему, используя предложенные шаги. После исправления конфигурации и перенастройки DNS, должен восстановиться доступ к экспортам NFS.

Если после всех вышеперечисленных действий проблема все еще сохраняется, рекомендуем просмотреть логи системных журналов (например, /var/log/messages или /var/log/syslog), чтобы получить дополнительную информацию о возможных ошибках.

Оцените материал
Добавить комментарий

Капча загружается...