Где находятся логи NFS v4 в systemd?

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

Моя ошибка:

mount.nfs4: доступ запрещен сервером при попытке монтирования fileserver:/export/path/one

Мой вопрос:

где можно найти детальную информацию в логах на сервере (под управлением systemd)?

Дополнительная информация:

Я задал похожий вопрос с точки зрения клиента Ubuntu на AskUbuntu. В этом вопросе я сосредоточен на сервере Arch Linux. В частности, я ищу логи на сервере, которые помогут мне понять проблему.

Вот предыстория:

Наш маленький локальный сегмент сети работает на сервере файлов NFS v4 под управлением Arch Linux. У нас есть несколько клиентов на Ubuntu 15.10 и 16.04. У нас есть один клиент на Ubuntu 14.04. Клиент 14.04 не может подключиться к файловому серверу. Остальные подключаются без проблем. Настройки на всех клиентах одинаковы. И все клиенты перечислены в /etc/exports на сервере.

Мне нужно найти более детальную информацию об ошибках на сервере Arch Linux. Однако journalctl не показывает ничего, связанного с nfs, и не содержит записей, касающихся ошибок доступа nfs.

Клиент 14.04 может пинговать файловый сервер, а также входить по SSH. Имя пользователя / ID, а также группа совпадают. (Я использую одну и ту же учетную запись пользователя / uid как на клиенте, так и на сервере. Это uid 1000.)

Еще больше информации:

$ sudo mount -a (на клиенте)
mount.nfs4: доступ запрещен сервером при попытке монтирования fileserver:/export/path/one
mount.nfs4: доступ запрещен сервером при попытке монтирования fileserver:/export/path/two

Клиент может пинговать файловый сервер (и наоборот):

$ ping fileserver
PING fileserver (192.168.1.1) 56(84) байт данных.
64 байта от fileserver (192.168.1.1): icmp_seq=1 ttl=64 время=0.310 мс

Клиент успешно входит в файловый сервер, находящийся в локальной сети:

$ ssh fileserver
Последний вход: Вт Авг 16 14:38:26 2016 с 192.168.1.2
[me@fileserver ~]$ 

Экспорт монтирования файлового сервера и rpcinfo доступны клиенту:

$ showmount -e fileserver    # на клиенте
Список экспортов для fileserver:
/export/path/one/ 192.168.1.2
/export/path/two/ 192.168.1.2,192.168.1.3

$ rpcinfo -p fileserver (на клиенте)
    программа версия протокол   порт  сервис
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  58344  status
    100024    1   tcp  58561  status
    100005    1   udp  20048  mountd
    100005    1   tcp  20048  mountd
    100005    2   udp  20048  mountd
    100005    2   tcp  20048  mountd
    100005    3   udp  20048  mountd
    100005    3   tcp  20048  mountd
    100003    4   tcp   2049  nfs
    100003    4   udp   2049  nfs

Это ошибка при прямом монтировании экспорта:

$ sudo mount -vvv -t nfs4 fileserver:/export/path/one /path/one/

    mount: fstab путь: "/etc/fstab"
    mount: mtab путь:  "/etc/mtab"
    mount: lock путь:  "/etc/mtab~"
    mount: temp путь:  "/etc/mtab.tmp"
    mount: UID:        0
    mount: eUID:       0
    mount: spec:  "fileserver:/export/path/one"
    mount: node:  "/path/one/"
    mount: types: "nfs4"
    mount: opts:  "(null)"
    mount: external mount: argv[0] = "/sbin/mount.nfs4"
    mount: external mount: argv[1] = "fileserver:/export/path/one"
    mount: external mount: argv[2] = "/path/one/"
    mount: external mount: argv[3] = "-v"
    mount: external mount: argv[4] = "-o"
    mount: external mount: argv[5] = "rw"
    mount.nfs4: тайм-аут установлен на Вт Авг 16 16:10:43 2016
    mount.nfs4: пытаемся текстовые параметры 'addr=192.168.1.1,clientaddr=192.168.1.2'
    mount.nfs4: mount(2): Доступ запрещен
    mount.nfs4: доступ запрещен сервером при попытке монтирования fileserver:/export/path/one

Похоже, что основная проблема была решена @pgoetz, но для потомков я отвечу на оригинальный вопрос о том, как захватить логи NFS (у меня были аналогичные проблемы, но я тоже не мог найти ответ о логировании!).


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

Общая форма: rpcdebug -m [module] -s [flags]:

  • -m [module]: это указывает модуль для логирования. Это может быть nfs, nfsd, rpc или nlm — для общих логов NFS на сервере используйте nfsd; для общих логов NFS на клиенте используйте nfs
  • -s [flags]: это устанавливает флаг(и) отладки, которые вы хотите, чтобы ядро логировало. Доступные флаги зависят от модуля

(смотрите man rpcdebug для получения дополнительной информации)

Таким образом, пример команд для начала логирования всех флагов может быть:

  • NFS сервер: rpcdebug -m nfsd -s all
  • NFS клиенты: rpcdebug -m nfs -s all

Примечание: это будет очень многословно. Флаги можно настроить, чтобы получить правильный уровень логирования, но начиная с флага all можно помочь сузить проблему.

Для меньшего количества записей в логах уберите флаг all, а затем установите конкретные флаги для отслеживания, например:

$ rpcdebug -m nfsd -c all    # удалить все флаги, чтобы перестать их логировать
$ rpcdebug -m nfsd -s auth proc  # установить флаги auth и proc вместо логирования всех флагов

У меня возникла точно такая же проблема, как на клиенте, так и на сервере Arch linux. Решение заключалось в использовании имени хоста в /etc/exports вместо IP-адреса. Я изменил это:

/srv/nfs 192.168.10(rw,fsid=root,no_subtree_check)
/srv/nfs/media 192.168.10(rw,no_subtree_check)
/srv/nfs/share 192.168.10(rw,no_subtree_check)

На это:

/srv/nfs iguana(rw,fsid=root,no_subtree_check)
/srv/nfs/media iguana(rw,no_subtree_check)
/srv/nfs/share iguana(rw,no_subtree_check)

Это привело к немного другой проблеме:

[root@iguana data]# mount -t nfs4 frog:/srv/nfs/media /data/media
mount.nfs4: Протокол не поддерживается

У меня нет большого опыта работы с NFS4; по-видимому, вы не должны включать корневой путь NFS в команду монтирования. Это наконец сработало и смонтировало том:

[root@iguana data]# mount -t nfs4 frog:/media /data/media

rpc.mountd – это компонент, отвечающий на запросы на монтирование, исходящие от ядра (NFSv4) или от клиентов (NFSv3). По умолчанию он ничего не логирует.

  • Редактируйте /etc/nfs.conf[mountd] и установите debug="auth"
  • Перезапустите nfs-mountd.service
  • Смотрите логи с помощью journalctl -u nfs-mountd

Успешная операция монтирования будет логировать:

26 июл 18:59:41 rpc.mountd[44663]: успешная аутентификация для IP 192.0.2.4 как *
26 июл 18:59:41 rpc.mountd[44663]: клиент v4.2 подключен: 0xfd56f6df66a3f20b от "192.0.2.4:919"
26 июл 18:59:41 rpc.mountd[44663]: доступ предоставлен к / для *
26 июл 18:59:41 rpc.mountd[44663]: доступ предоставлен к /srv для *
26 июл 18:59:41 rpc.mountd[44663]: доступ предоставлен к /srv/data для *

Если rpc.mountd отклоняет запрос на монтирование, то вы должны видеть причину, зафиксированную здесь.

Если вы хотите, чтобы IP-адреса регистрировались вместо имени клиента (* в моем примере выше), установите cache-use-ipaddr=y. В этом случае также имеет смысл установить ttl=3600, чтобы клиент, который продолжает обращаться к файловой системе, не вызывал чрезмерного спама в файлах логов. В этом случае операции монтирования будут выглядеть так:

10 дек 15:11:41 rpc.mountd[1410]: успешная аутентификация для IP 192.0.2.4
10 дек 15:11:41 rpc.mountd[1410]: клиент v4.2 подключен: 0xa9f64fd5675739d6 от "192.0.2.4:717"
10 дек 15:11:41 rpc.mountd[1410]: доступ предоставлен к / для 192.0.2.4
10 дек 15:11:41 rpc.mountd[1410]: доступ предоставлен к /srv для 192.0.2.4
10 дек 15:11:41 rpc.mountd[1410]: доступ предоставлен к /srv/data для 192.0.2.4

Для получения более подробной информации об этих изменениях см. статью SUSE Улучшенное логирование доступа клиентов на NFS v4 сервере.

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

Логи NFS v4 на сервере под управлением systemd: где искать

При возникновении ошибки «mount.nfs4: access denied by server while mounting fileserver:/export/path/one» может быть полезно извлечь дополнительную информацию из логов на вашем NFS-сервере под управлением Arch Linux. В данной статье мы рассмотрим, как можно найти и настроить логи для анализа проблем с NFS.

Поиск логов в системе с использованием systemd

  1. Использование journalctl: Система логирования в Arch Linux, базирующаяся на systemd, предоставляет доступ к журналам через команду journalctl. Вы можете получить доступ к логам, связанным с сервером NFS, выполнив такую команду:

    journalctl -u nfs-server.service

    Однако, как вы уже упомянули, эта команда может не вывести ничего, если не включено соответствующее логирование на стороне сервера.

  2. Активация подробного логирования:
    Для того чтобы включить детальное логирование NFS, можно воспользоваться утилитой rpcdebug. Эта утилита позволяет настраивать уровень логирования для модуля NFS.

    Пример команд для активации:

    # Для настройки сервера NFS
    sudo rpcdebug -m nfsd -s all
    
    # Для настройки клиента NFS
    sudo rpcdebug -m nfs -s all

    Примечание: Обратите внимание, что это может генерировать большое количество информации, поэтому рекомендуется после определения проблемы отключить избыточное логирование, следующим образом:

    sudo rpcdebug -m nfsd -c all  # отключить все флаги

Настройка rpc.mountd для логирования аутентификации

Для того чтобы получить более подробную информацию о причинах отклонения запросов на монтирование, вы можете настроить rpc.mountd:

  1. Откройте файл конфигурации NFS:

    sudo nano /etc/nfs.conf
  2. Найдите секцию [mountd] и добавьте или измените строку:

    debug="auth"
  3. После внесения изменений перезапустите службу:

    sudo systemctl restart nfs-mountd.service
  4. Теперь вы можете отслеживать логи для этой службы с помощью:

    journalctl -u nfs-mountd.service

Анализ логов

При успешном запросе на монтирование вы должны увидеть что-то вроде:

Jul 26 18:59:41 rpc.mountd[44663]: successful authentication for IP 192.0.2.4 as *

Если запрос отклонен, вы увидите причину отказа.

Рекомендации по устранению проблем

  1. Проверьте /etc/exports: Убедитесь, что настройки в файле /etc/exports верны и ваш клиент правильно указан (например, используйте имя хоста вместо IP-адреса, как это было рассмотрено в ваших записях).

  2. Проверьте параметры аутентификации: Убедитесь, что идентификаторы пользователей и групп совпадают на клиенте и сервере. Также проверьте настройки NFS, включая параметры, такие как fsid и другие опции, которые могли повлиять на разрешение доступа.

  3. Убедитесь в доступности сетевых портов: Проверьте, что ваш брандмауэр или другие сетевые политики не блокируют необходимые порты для NFS (обычно 2049 для nfs и 111 для rpc).

Соблюдение этих рекомендаций и проверка логов помогут вам выявить и решить проблемы, возникающие при работе с NFS v4 на вашем сервере Arch Linux.

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

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