更多信息:

更多信息:

我的错误是:

mount.nfs4: access denied by server while mounting fileserver:/export/path/one

我的问题是:

详细的日志信息在服务器上的哪里(在systemd下)?

更多信息:

我问了一个类似的问题从 AskUbuntu 上的 Ubuntu 客户端角度来看。我这个问题的重点是 Arch Linux 服务器。特别是,我正在服务器上查找日志以帮助我理解问题。

这是背景:

我们的小型 LAN 正在运行 Arch Linux NFS v4 文件服务器。我们有几个运行 Ubuntu 15.10 和 16.04 的客户端。我们有一个运行 Ubuntu 14.04 的客户端。 14.04客户端将无法连接到文件服务器。其他都连接正常。所有客户端上的设置均相同。所有客户端都列在服务器上的 /etc/exports 中。

我需要在Arch linux服务器上找到更详细的错误信息。但是,journalctl 不显示与 nfs 相关的任何内容,也不包含与 nfs 访问被拒绝错误相关的任何条目。

14.04 客户端可以 ping 文件服务器并通过 SSH 登录。用户名/ID 以及组匹配。 (我在客户端和服务器上使用相同的用户帐户/uid。它是 uid 1000。)

更多信息:

$ sudo mount -a (on client)
mount.nfs4: access denied by server while mounting fileserver:/export/path/one
mount.nfs4: access denied by server while mounting fileserver:/export/path/two

客户端可以 ping 文件服务器(反之亦然):

$ ping fileserver
PING fileserver (192.168.1.1) 56(84) bytes of data.
64 bytes from fileserver (192.168.1.1): icmp_seq=1 ttl=64 time=0.310 ms

客户端成功登录基于 LAN 的文件服务器:

$ ssh fileserver
Last login: Tue Aug 16 14:38:26 2016 from 192.168.1.2
[me@fileserver ~]$ 

文件服务器的挂载导出并rpcinfo暴露给客户端:

$ showmount -e fileserver    # on client
Export list for fileserver:
/export/path/one/ 192.168.1.2
/export/path/two/ 192.168.1.2,192.168.1.3

$ rpcinfo -p fileserver (on client)
    program vers proto   port  service
    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

这是直接挂载export时的错误:

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

    mount: fstab path: "/etc/fstab"
    mount: mtab path:  "/etc/mtab"
    mount: lock path:  "/etc/mtab~"
    mount: temp path:  "/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: timeout set for Tue Aug 16 16:10:43 2016
    mount.nfs4: trying text-based options 'addr=192.168.1.1,clientaddr=192.168.1.2'
    mount.nfs4: mount(2): Permission denied
    mount.nfs4: access denied by server while mounting fileserver:/export/path/one

答案1

看起来根本问题已由 @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    # clear all flags to stop logging them
$ rpcdebug -m nfsd -s auth proc  # set the auth and proc flags instead of logging all flags

答案2

我在客户端和服务器 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: Protocol not supported

我对 NFS4 没有太多经验;显然您不应该在 mount 命令中包含 NFS 根路径。这最终起作用并安装了卷:

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

相关内容