NFS-общий ресурс на CentOS 7 не удается автоматически монтировать.

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

У меня свежая установка 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 может быть сложной задачей, особенно если оно не работает так, как ожидалось, несмотря на правильную ручную настройку. Рассмотрим проблему более детально и предложим решение.

Фокус на настройки

Ваше описание конфигурации автозагрузки содержит несколько ключевых моментов:

  1. Файл /etc/auto.master:

    /-       /etc/auto.nfsshare
  2. Файл /etc/auto.nfsshare:

    /tests/nfsshare -fstype=nfs,credentials=/etc/credentials.txt 192.168.254.105:/srv/nfsshare
  3. Файл /etc/credentials.txt:

    user=user
    password=password

Анализ журнала

Логи указывают на проблему с чтением файла конфигурации, что часто связано с форматом файла. Кроме того, сообщение об ошибке "90B blob data" намекает на невозможность правильного разбора строки в конфигурации.

Ожидания и проблемы

Вы ожидаете, что ls -l /tests/nfsshare покажет содержимое директории, но вы получаете ошибку "No such file or directory". Это говорит о том, что автомонтирование не произошло.

Решение

  1. Проверка формата файла:
    Автоматический монтировщик autofs может столкнуться с проблемами при работе с файлами, которые не в ASCII формате. Убедитесь, что файл /etc/auto.nfsshare сохранен именно в ASCII. Для этого откройте его в текстовом редакторе, например, vi, и сохраните с правильными настройками.

  2. Проверка конфигурации NFS:
    Обычно NFS не требует ввода логина и пароля, если это не особая ситуация. Скорее всего, указание credentials=/etc/credentials.txt излишне для NFS и может вызывать недоразумение. Попробуйте убрать эту часть из конфигурации и проверить, работает ли автомонтирование.

  3. Системные юниты 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 или систему после внесения изменений для применения новых настроек.

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

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