Вопрос или проблема
У меня есть сервер 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-сервера были выявлены следующие проблемы:
/etc/exports
корректно настроен и содержит запись дляhost1
.- Выполнение команды
exportfs -a
не вызывает ошибок, иcat /var/lib/nfs/etab
показывает правильные экспортируемые пути. - Команда
showmount -e
не отображаетhost1
, хотя этот хост присутствует в/etc/exports
. - При попытке монтирования на
host1
возникает ошибка:access denied by server while mounting
.
Шаги диагностики
-
Проверка конфигурации
/etc/exports
Убедитесь, что в файле нет дублирующих записей. Как видно из предоставленногоexports
, есть два идентичных пункта дляhost3
. Это может привести к несущественным проблемам при обработке. -
Перезагрузка и повторное экспортирование
После изменения конфигурации рекомендуем выполнять:systemctl restart nfs-server exportfs -a
-
Проверка доступности хостов
Убедитесь в том, чтоhost1
может видеть и пинговать NFS-сервер. Если пинг проходит, проверьте, разрешается ли имя хоста корректно. -
Проверка SELinux и файрволла
Хотя вы упомянули, что SELinux отключен и файрволл не настроен, это стоит перепроверить. Для теста выполните:setenforce 0 # временно отключает SELinux iptables -L # проверка правил файрволла
-
Анализ
showmount
Стоит обратить внимание на выводshowmount -e
. Различия при использовании IP и DNS могут указывать на проблемы с разрешением имен. Если команда с IP показываетhost1
, значит, проблема связана с DNS.
Возможные причины и решения
-
Проблемы с DNS
Еслиshowmount -e
работает корректно с IP, но не с DNS, возможно, это проблема с DNS-сервером, который не корректно разрешает имена. Проверьте настройки DNS на NFS-сервере и клиентах. Можно использоватьdig
илиnslookup
:nslookup nfs-server
-
Настройка
/etc/hosts
Добавьте IP-адрес и соответствующее имя хоста в файл/etc/hosts
на всех машинах для временного решения:<NFS-сервер IP> nfs-server
-
Отсутствие службы
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
), чтобы получить дополнительную информацию о возможных ошибках.