Вопрос или проблема
У меня свежая установка Centos 7. Я не могу автоматически примонтировать NFS-расшаренную папку, расположенную на 192.168.254.105:/srv/nfsshare
с клиента Centos.
Тем не менее, ручное монтирование работает идеально.
/etc/auto.master был полностью закомментирован для упрощения задачи, за исключением следующей строки:
/- /etc/auto.nfsshare
/etc/auto.nfsshare содержит следующую строку:
/tests/nfsshare -fstype=nfs,credentials=/etc/credentials.txt 192.168.254.105:/srv/nfsshare
/etc/credentials.txt содержит:
user=user
password=password
Ожидаемое поведение заключается в том, что при выполнении ls -l /tests/nfsshare
я увижу несколько файлов из каталога /srv/nfsshare моего файлового сервера.
Но этого не происходит. Вместо этого ничего не отображается.
Логи из sudo journalctl –unit=autofs.service показывают это при запуске (включен режим отладки):
Nov 20 00:25:38 localhost.localdomain systemd[1]: Starting Automounts filesystems on demand...
Nov 20 00:25:38 localhost.localdomain automount[21204]: Starting automounter version 5.0.7-48.el7, master map auto.master
Nov 20 00:25:38 localhost.localdomain automount[21204]: using kernel protocol version 5.02
Nov 20 00:25:38 localhost.localdomain automount[21204]: lookup_nss_read_master: reading master files auto.master
Nov 20 00:25:38 localhost.localdomain automount[21204]: parse_init: parse(sun): init gathered global options: (null)
Nov 20 00:25:38 localhost.localdomain automount[21204]: spawn_mount: mtab link detected, passing -n to mount
Nov 20 00:25:38 localhost.localdomain automount[21204]: spawn_umount: mtab link detected, passing -n to mount
Nov 20 00:25:38 localhost.localdomain automount[21204]: lookup_read_master: lookup(file): read entry /-
Nov 20 00:25:38 localhost.localdomain automount[21204]: master_do_mount: mounting /-
Nov 20 00:25:38 localhost.localdomain automount[21204]: automount_path_to_fifo: fifo name /run/autofs.fifo--
Nov 20 00:25:38 localhost.localdomain automount[21204]: lookup_nss_read_map: reading map file /etc/auto.nfsshare
Nov 20 00:25:38 localhost.localdomain automount[21204]: parse_init: parse(sun): init gathered global options: (null)
Nov 20 00:25:38 localhost.localdomain automount[21204]: spawn_mount: mtab link detected, passing -n to mount
Nov 20 00:25:38 localhost.localdomain automount[21204]: spawn_umount: mtab link detected, passing -n to mount
Nov 20 00:25:38 localhost.localdomain automount[21204]: mounted direct on /tests/nfsshare with timeout 300, freq 75 seconds
Nov 20 00:25:38 localhost.localdomain automount[21204]: do_mount_autofs_direct: mounted trigger /tests/nfsshare
Nov 20 00:25:38 localhost.localdomain automount[21204]: st_ready: st_ready(): state = 0 path /-
Nov 20 00:25:38 localhost.localdomain systemd[1]: Started Automounts filesystems on demand.
Следующее появляется в моих логах, когда я пытаюсь принудительно смонтировать nfs-расшаренную папку через ls -l /tests/nfsshare:
Nov 20 00:48:05 localhost.localdomain automount[22030]: handle_packet: type = 5
Nov 20 00:48:05 localhost.localdomain automount[22030]: handle_packet_missing_direct: token 21, name /tests/nfsshare, request pid 22057
Nov 20 00:48:05 localhost.localdomain automount[22030]: attempting to mount entry /tests/nfsshare
Nov 20 00:48:05 localhost.localdomain automount[22030]: lookup_mount: lookup(file): looking up /tests/nfsshare
Nov 20 00:48:05 localhost.localdomain automount[22030]: lookup_mount: lookup(file): /tests/nfsshare -> -fstype=nfs,credentials=/etc/credenti...fsshare
Nov 20 00:48:05 localhost.localdomain automount[22030]: parse_mount: parse(sun): expanded entry: -fstype=nfs,credentials=/etc/credentials.tx...fsshare
Nov 20 00:48:05 localhost.localdomain automount[22030]: parse_mount: parse(sun): gathered options: fstype=nfs,credentials=/etc/credentials.txt
Nov 20 00:48:05 localhost.localdomain automount[22030]: [90B blob data]
Nov 20 00:48:05 localhost.localdomain automount[22030]: dev_ioctl_send_fail: token = 21
Nov 20 00:48:05 localhost.localdomain automount[22030]: failed to mount /tests/nfsshare
Nov 20 00:48:05 localhost.localdomain automount[22030]: handle_packet: type = 5
Nov 20 00:48:05 localhost.localdomain automount[22030]: handle_packet_missing_direct: token 22, name /tests/nfsshare, request pid 22057
Nov 20 00:48:05 localhost.localdomain automount[22030]: dev_ioctl_send_fail: token = 22
Кроме того, ls -l /tests/nfsshare фактически выдает ошибку:
ls: cannot access nfsshare/: No such file or directory
Как я могу исправить эту проблему? Как уже было сказано, ручное монтирование расшаренной папки работает нормально.
ИЗМЕНИТЬ: по запросу, вывод ls -la /etc/auto.nfsshare
-rw-r--r--. 1 root root 99 Nov 20 00:25 /etc/auto.nfsshare
У меня была такая же проблема.
Конфигурация в порядке, но каталога не существует, хотя кажется, что он создан.
Решением в моем случае было то, что файл был UTF-8, который autofs не может прочитать (поэтому вы видите сообщение Blob в логах).
Пересоздайте файл и убедитесь, что он в формате ascii.
После изменения всё заработало безупречно.
Я пока не сталкивался с NFS-расшаренным доступом, защищенным по имени пользователя/паролю.
В любом случае, вы можете использовать возможности systemd здесь (пример для базового NFS-расшаренного каталога, который вы хотите смонтировать в /tests/nfsshare).
192.168.254.105:/srv/nfsshare /tests/nfsshare nfs users,_netdev,x-systemd.automount 0 0
Ответ или решение
Автомонтирование NFS-раздела на CentOS 7 может быть сложной задачей, особенно если оно не работает так, как ожидалось, несмотря на правильную ручную настройку. Рассмотрим проблему более детально и предложим решение.
Фокус на настройки
Ваше описание конфигурации автозагрузки содержит несколько ключевых моментов:
-
Файл
/etc/auto.master
:/- /etc/auto.nfsshare
-
Файл
/etc/auto.nfsshare
:/tests/nfsshare -fstype=nfs,credentials=/etc/credentials.txt 192.168.254.105:/srv/nfsshare
-
Файл
/etc/credentials.txt
:user=user password=password
Анализ журнала
Логи указывают на проблему с чтением файла конфигурации, что часто связано с форматом файла. Кроме того, сообщение об ошибке "90B blob data" намекает на невозможность правильного разбора строки в конфигурации.
Ожидания и проблемы
Вы ожидаете, что ls -l /tests/nfsshare
покажет содержимое директории, но вы получаете ошибку "No such file or directory". Это говорит о том, что автомонтирование не произошло.
Решение
-
Проверка формата файла:
Автоматический монтировщик autofs может столкнуться с проблемами при работе с файлами, которые не в ASCII формате. Убедитесь, что файл/etc/auto.nfsshare
сохранен именно в ASCII. Для этого откройте его в текстовом редакторе, например,vi
, и сохраните с правильными настройками. -
Проверка конфигурации NFS:
Обычно NFS не требует ввода логина и пароля, если это не особая ситуация. Скорее всего, указаниеcredentials=/etc/credentials.txt
излишне для NFS и может вызывать недоразумение. Попробуйте убрать эту часть из конфигурации и проверить, работает ли автомонтирование. -
Системные юниты Systemd:
Вы можете использоватьsystemd
для автоматического монтирования NFS, что продемонстрировано в примере:192.168.254.105:/srv/nfsshare /tests/nfsshare nfs users,_netdev,x-systemd.automount 0 0
Добавьте эту строку в
/etc/fstab
, чтобы попытаться монтировать NFS с использованием возможностейsystemd
.
Финал
Решение проблем с автомонтированием NFS требует внимания к деталям конфигурации и журнала. Проверив форматы файлов и, при необходимости, удалив избыточные опции, вы сможете успешно настроить автомонтирование NFS на CentOS 7. Не забудьте перезапустить сервис autofs
или систему после внесения изменений для применения новых настроек.