Вопрос или проблема
Я пытаюсь настроить свою NFS-систему между моим серверным узлом и узлом-клиентом, работающим на rhel9. Они находятся на разных физических серверах в одной сети. Демон nfs-server корректно запущен на моем серверном узле, и команда showmount -e возвращает:
Список экспорта для хоста:
/mnt/name1 x.x.x.0/16
/mnt/name2 x.x.x.0/16
/mnt/name3 x.x.x.0/16
Вот файл /etc/exports на сервере:
/mnt/name1 x.x.x.0/16(rw,sync,no_root_squash,no_subtree_check)
/mnt/name2 x.x.x.0/16(rw,sync,no_root_squash,no_subtree_check)
/mnt/name3 x.x.x.0/16(rw,sync,no_root_squash,no_subtree_check)
Вот статус демона autofs на узле-клиенте:
● autofs.service - Автоматически монтирует файловые системы по запросу
Загружено: загружено (/usr/lib/systemd/system/autofs.service; включено; предустановлено: отключено)
Активно: активно (работает) с Ср 2024-06-05 16:15:16 CDT; 5 секунд назад
Основной PID: 739859 (automount)
Задачи: 5 (лимит: 98138)
Память: 3.8M
CPU: 42ms
CGroup: /system.slice/autofs.service
└─739859 /usr/sbin/automount --systemd-service --dont-check-daemon
Jun 05 16:15:16 host systemd[1]: Запуск автоматического монтирования файловых систем по запросу...
Jun 05 16:15:16 host automount[739859]: setautomntent: lookup(sss): setautomountent: запись для карты auto.master не найдена
Jun 05 16:15:16 host automount[739859]: setautomntent: lookup(sss): setautomountent: запись для карты auto_master не найдена
Jun 05 16:15:16 host systemd[1]: Запущено автоматическое монтирование файловых систем по запросу.
Вот /etc/auto.master:
/- /etc/auto.nfs-shares
Вот auto.nfs-shares:
/mnt/name1 -fstype=nfs,rw,soft x.x.x.0:/mnt/name1
/mnt/name2 -fstype=nfs,rw,soft x.x.x.0:/mnt/name2
/mnt/name3 -fstype=nfs,rw,soft x.x.x.0:/mnt/name3
На узле-клиенте, когда я выполняю mount, он возвращает, среди прочего:
/etc/auto.nfs-shares на /mnt/name1 тип autofs (rw,relatime,fd=7,pgrp=739859,timeout=300,minproto=5,maxproto=5,direct,pipe_ino=1745483)
/etc/auto.nfs-shares на /mnt/name2 тип autofs (rw,relatime,fd=7,pgrp=739859,timeout=300,minproto=5,maxproto=5,direct,pipe_ino=1745483)
/etc/auto.nfs-shares на /mnt/name3 тип autofs (rw,relatime,fd=7,pgrp=739859,timeout=300,minproto=5,maxproto=5,direct,pipe_ino=1745483)
Файлы name1, name2 и name3 отображаются, когда я использую ls /mnt/, но я не могу получить доступ к файлам из-за ошибки “нет такого файла или директории” или они пусты (в них есть тестовые файлы). Буду признателен за любые предложения.
Проверьте в /etc/sssd/sssd.conf
и убедитесь, что у вас есть
[sssd]
services = nss,pam,autofs
Без autofs
в службах я получил сообщение об ошибке:
setautomntent: lookup(sss): setautomountent: запись для карты auto.master не найдена
Ответ или решение
Конфигурация Autofs на RHEL9: Почему директории NFS остаются пустыми
При настройке системы NFS между сервером и клиентом на RHEL9 может возникнуть ситуация, когда директории, монтируемые с помощью autofs, остаются пустыми, несмотря на успешный монтирование. Давайте рассмотрим основные шаги и возможные причины этой проблемы, а также предложим решения.
Проверка конфигурации NFS
Сначала убедитесь, что ваш NFS-сервер настроен правильно:
-
Проверка экспорта: Выполните команду
showmount -e
на клиенте, чтобы убедиться, что экспорта с сервера доступны и правильны:Export list for host: /mnt/name1 x.x.x.0/16 /mnt/name2 x.x.x.0/16 /mnt/name3 x.x.x.0/16
-
Файл
/etc/exports
на сервере: Убедитесь, что ваши экспорты определены корректно. Например:/mnt/name1 x.x.x.0/16(rw,sync,no_root_squash,no_subtree_check) /mnt/name2 x.x.x.0/16(rw,sync,no_root_squash,no_subtree_check) /mnt/name3 x.x.x.0/16(rw,sync,no_root_squash,no_subtree_check)
Конфигурация Autofs на клиенте
Далее проверим конфигурацию autofs на клиенте:
-
Статус службы autofs: Убедитесь, что служба autofs активно работает:
● autofs.service - Automounts filesystems on demand Active: active (running)
-
Файл
/etc/auto.master
: Этот файл должен указывать на файл, содержащий ваши NFS-шары:/- /etc/auto.nfs-shares
-
Конфигурация
/etc/auto.nfs-shares
: Убедитесь, что у вас есть правильные записи для монтирования ваших директоров NFS:/mnt/name1 -fstype=nfs,rw,soft x.x.x.0:/mnt/name1 /mnt/name2 -fstype=nfs,rw,soft x.x.x.0:/mnt/name2 /mnt/name3 -fstype=nfs,rw,soft x.x.x.0:/mnt/name3
Проверка записи в SSSD
Поскольку вы получили сообщение об ошибке в логе autofs:
setautomntent: lookup(sss): setautomountent: entry for map auto.master not found
Это может указывать на проблему с конфигурацией SSSD.
- Файл конфигурации SSSD (
/etc/sssd/sssd.conf
): Убедитесь, что в нем присутствует строка:[sssd] services = nss,pam,autofs
Если
autofs
отсутствует, добавьте его и перезапустите службу SSSD:sudo systemctl restart sssd
Дополнительные проверки
-
Проверка сетевого соединения: Убедитесь, что клиент может подключаться к серверу NFS. Выполните команду
ping
к IP-адресу сервера. -
Проверка прав доступа: Убедитесь, что у клиентского пользователя есть право доступа к директориям NFS. Перепроверьте разрешения на сервере.
-
Логи NFS: Ознакомьтесь с логами на сервере (
/var/log/messages
илиjournalctl -xe
), чтобы найти любые сообщения об ошибках, касающиеся NFS.
Заключение
Проблемы с пустыми директориями при использовании autofs и NFS на RHEL9 часто возникают из-за неправильной конфигурации autofs или проблем с правами доступа. Убедитесь, что каждая часть системы правильно настроена и связана, и вы сможете успешно получить доступ к вашим монтируемым директориям.
Если проблема сохраняется даже после выполнения всех вышеперечисленных шагов, может потребоваться более глубокая диагностика конфигурации NFS и autofs, а также консультация с сетевым или системным администратором для решения специфичных проблем.