标签: nfs4

了解 NFS4(Linux 服务器)

我对 Linux 上的 NFS4 有点困扰。一些“外面”的信息似乎与其他信息冲突,而其他信息似乎很难找到。所以这里有几件事引起了我的注意,希望有人能对此有所了解。

这个问题只关注没有 Kerberos 等的 NFS4。

1. 出口

手册exports页中关于 /etc/exports 结构的信息不明确。

引用自exports(5)

此外,每一行在路径名后可能有一个或多个默认选项规范,形式为破折号(“-”)后跟选项列表。

选项列表仅用于该行上的所有后续导出。

“仅在该行上进行后续导出”是什么意思?

1.2fsid=0不再需要了?

当我在 linux-nfs 列表上发现一条评论指出不再需要 fsid=0时,我正在搜索 fsid 。现在我很困惑,我是否需要 nfs4 或不需要它?!

2.非导出目录仍可挂载

假设我有以下树:

/exp
/exp/users
/exp/distr
/exp/distr/archlinux
/exp/distr/debian
Run Code Online (Sandbox Code Playgroud)

我在这个 fstab 条目中有以下条目:

/dev/disk/by-label/users  /mnt/users  ext4  defaults  0  0
/dev/disk/by-label/distr  /mnt/distr  ext4  defaults  0  0
/mnt/users                /exp/users  none  bind      0  0
/mnt/distr                /exp/distr  none  bind      0  0
Run Code Online (Sandbox Code Playgroud)

而我的出口正是这样的:

/exp       192.168.1.0/24(fsid=0,rw,async,no_subtree_check,no_root_squash)
/exp/distr 192.168.1.0/24(rw,async,no_subtree_check,no_root_squash)
Run Code Online (Sandbox Code Playgroud)

exportfs -arv显示: …

nfs nfs4

27
推荐指数
1
解决办法
2万
查看次数

Linux 的安全网络文件系统:人们在做什么?

NFSv3 很普遍,但默认的安全模型是... quaint。CIFS 可以使用 Kerberos 身份验证,但如果没有 POSIX 语义,它就无法启动。AFS 从未对线路上的流量进行加密,它是 krb4 — 基本上是一个死项目。花哨的新实验文件系统要么永远不会实现,要么专注于速度(如果幸运的话,还有数据可靠性)——例如,Lustre 使用与 NFSv3 相同的客户端信任模型。对于家庭使用,sshfs 非常好用,但这肯定不能扩展。

当然还有 NFSv4,sec=krb5p。理论上很好,但十年后,它似乎在现实世界中令人不安地未使用。Linux 客户端刚刚删除了实验标签。如果你看看 EMC Celerra、Isilon 等,它们都是 NFSv3。(Celerra 支持 NFSv4,但它确实隐藏在文档中。Isilon 显然致力于将 RPCGSS 支持添加到 FreeBSD,所以也许它即将到来,但现在还没有。)我什至不能将这篇文章标记为“nfsv4”,因为我我是新来的,那将是一个新标签

所以,真的。你们都在做什么?

security linux network-filesystem posix nfs4

26
推荐指数
2
解决办法
7360
查看次数

NFS v3 与 v4

我想知道为什么 NFS v4 会比 NFS v3 快得多,以及 v3 上是否有任何可以调整的参数。

我挂载文件系统

sudo mount  -o  'rw,bg,hard,nointr,rsize=1048576,wsize=1048576,vers=4'  toto:/test /test
Run Code Online (Sandbox Code Playgroud)

然后运行

 dd if=/test/file  of=/dev/null bs=1024k
Run Code Online (Sandbox Code Playgroud)

我可以读取200-400MB/s 但是当我将版本更改为vers=3,重新安装并重新运行 dd 时,我只能得到90MB/s。我正在读取的文件是 NFS 服务器上的内存文件。连接的两端都是 Solaris 并且有 10GbE 网卡。我通过在所有测试之间重新安装来避免任何客户端缓存。我曾经dtrace在服务器上看到以衡量通过 NFS 提供数据的速度。对于 v3 和 v4,我更改了:

 nfs4_bsize
 nfs3_bsize
Run Code Online (Sandbox Code Playgroud)

从默认的 32K 到 1M(在 v4 上我用 32K 达到了 150MB/s)我试过调整

  • nfs3_max_threads
  • clnt_max_conns
  • nfs3_async_clusters

提高 v3 的性能,但不行。

在 v3 上,如果我运行四个并行dd,吞吐量从 90MB/s 下降到 70-80MBs,这让我相信问题出在某些共享资源上,如果是这样,那么我想知道它是什么以及我是否可以增加它资源。

获取窗口大小的 dtrace 代码:

#!/usr/sbin/dtrace -s
#pragma D option quiet
#pragma D option …
Run Code Online (Sandbox Code Playgroud)

solaris nfs solaris-10 nfs4

11
推荐指数
1
解决办法
7074
查看次数

Ceph 和 NFS 在共享文件存储方面有什么区别?

有人可以向我解释一下,与 NFS 相比,Ceph 是什么?

从共享文件存储的角度来看?使用 Ceph 代替 NFS 的附加价值是什么?

nfs nfs4 ceph

11
推荐指数
1
解决办法
5992
查看次数

NFSv4 无法在不运行 rpcbind 的情况下为 nfsd 设置任何套接字

根据Red Hat 文档,不再需要“rpcbind”:

由于协议支持已合并到 v4 协议中,NFSv4 与 portmap、rpc.lockd 和 rpc.statd 守护进程没有交互。NFSv4 侦听众所周知的 TCP 端口 2049,这消除了端口映射交互的需要。挂载和锁定协议已合并到 V4 协议中,从而无需与 rpc.lockd 和 rpc.statd 交互。服务器上仍然需要 rpc.mountd 守护进程,但不涉及任何在线操作。

但是,当“rpcbind”服务未运行时,我无法启动 NFS 恶魔:

# service nfs start
Starting NFS services:                                     [  OK  ]
Starting NFS quotas: Cannot register service: RPC: Unable to receive; errno = Connection refused
rpc.rquotad: unable to register (RQUOTAPROG, RQUOTAVERS, udp).
                                                           [FAILED]
Starting NFS mountd:                                       [  OK  ]
Starting NFS daemon: rpc.nfsd: writing fd to kernel failed: errno 111 (Connection refused)
rpc.nfsd: …
Run Code Online (Sandbox Code Playgroud)

redhat nfs rpc nfs4

8
推荐指数
1
解决办法
1万
查看次数

如何识别哪个NFS客户端产生磁盘IO?

我们的池服务器磁盘 100% 繁忙。

我检查iotop并确定这nfsd是消耗磁盘 IO 的顶级进程。

我需要进一步缩小范围,并想确定使用服务器的哪个 NFS 客户端是/负责此磁盘 IO 瓶颈。我该如何进行?

在此处输入图片说明

在此处输入图片说明

nfs nfs4

8
推荐指数
1
解决办法
3728
查看次数

如何在centos上使用nfs4挂载多个文件夹?

我试图让 nfs4 在这里工作。

机器 1(服务器)我有一个文件夹,其中有 2 个我试图独立共享的其他文件夹。/共享/文件夹1 /共享/文件夹2

问题是,我似乎无法弄清楚如何在客户端上独立安装文件夹。

(机器 1 - 服务器)/etc/exports:

/var/shared/folder1 192.168.200.101(rw,fsid=0,sync)
/var/shared/folder2 192.168.200.101(rw,fsid=0,sync)
Run Code Online (Sandbox Code Playgroud)

...

exportfs -ra
Run Code Online (Sandbox Code Playgroud)

...

exportfs

/var/shared/folder1
                   192.168.200.101
/var/shared/folder2
                   192.168.200.101
Run Code Online (Sandbox Code Playgroud)

(机器 2 - 客户端)/etc/fstab:

192.168.200.201:/folder1/ /home/nfsmnt/folder1 nfs4 rw 0 0
Run Code Online (Sandbox Code Playgroud)

...

mount /home/nfsmnt/folder1
mount.nfs4: 192.168.200.201:/folder1/ failed, reason given by server: No such file or directory
Run Code Online (Sandbox Code Playgroud)

文件夹在那里。我很乐观。我认为我缺少一些简单的东西,但我完全缺少它。

似乎 fstab 中应该有一种方法可以告诉 nfs 我要挂载服务器上的哪个文件夹。但是我只能找到对看起来像根安装点(例如192.168.1.1:/)的引用,我认为它是由服务器上的导出处理的。但即使在导出中设置了文件夹,似乎也没有明显的方式来挑选和选择安装哪个。

是否无法将同一服务器的不同文件夹挂载到客户端的不同挂载点?

任何帮助表示赞赏。


编辑:

服务器上的错误日志显示如下:

/var/shared/folder1 and /var/shared/folder2 have same filehandle for 192.168.200.101, using first
Run Code Online (Sandbox Code Playgroud)

不确定这意味着什么或如何更改它。谷歌搜索似乎只能提供有关 nfs 安全性的信息。

linux nfs centos nfs4

7
推荐指数
1
解决办法
2万
查看次数

在 FreeBSD 上,Kerberised NFSv4 的权限没有生效

我目前正在尝试在 FreeBSD 上设置 NFSv4 服务器。我在其他 Unices(Solaris 和 Linux)上有丰富的经验,但我对 FreeBSD 还很陌生。

我的目标是实现以下目标:

  • 从 FreeBSD 系统提供的文件
  • 唯一的安全模型应该是krb5p
  • 客户端是 Linux (Ubuntu) 和 OSX

目前,我已经设法进行设置,以便我需要一个有效的 TGT 才能访问文件系统。尝试访问这些文件后,我可以klist在客户端上运行,并且可以看到nfs/domainname主体已被检索。这表明 NFS 挂载的 Kerberos 部分是正确的。

我的问题是所有客户端访问仍然使用nobody用户执行。当我这样做时,我可以看到权限ls -l。即使用户映射工作正常,但除非nobody有权对文件执行任何操作,否则我的权限被拒绝。

这是来自客户端的示例交互(在本例中为 Ubuntu,但在 OSX 中也会发生同样的情况)。在这个例子中,/export/shared/testshare是来自 FreeBSD 服务器的共享目录:

(我已将实际域名更改为domain,并将 Kerberos 领域名称更改为REALM

$ kinit
Password for elias@REALM:
$ klist
Ticket cache: FILE:/tmp/krb5cc_1000_GBjtDP
Default principal: elias@REALM

Valid starting       Expires              Service principal
09/02/2013 09:40:47  10/02/2013 09:40:44  krbtgt/REALM@REALM
$ …
Run Code Online (Sandbox Code Playgroud)

freebsd nfs kerberos nfs4

7
推荐指数
1
解决办法
1526
查看次数

NFS 服务器可以限制 NFS 客户端可以使用的磁盘空间量吗?

假设在具有 100GB 分区的服务器 A 中,用户创建一个 NFS 导出目录。在服务器B中,用户挂载NFS共享来使用它。

在服务器A中,NFS服务器可以限制NFS客户端可以使用的磁盘空间量吗?或者客户端始终能够使用完整的可用磁盘空间?

linux nfs nfs4

7
推荐指数
1
解决办法
2万
查看次数

如何在 Linux 中的 NFSv4 挂载上使用 POSIX ACL?

我最近将 Linux 文件服务器从仅提供 NFS v3 转换为还提供 NFS v4。我们所有的客户都高兴地开始自动使用 NFS v4。不幸的是,这有效地破坏了少数使用它们的用户的 ACL 管理,因为他们习惯的 POSIX 工具不再有效。(更差,ls不再指示具有 ACL 的文件,因此它们比以前更隐蔽。)

我收到了不想学习新工具的用户的反对,因为我们的存储系统更改了软件(加上文件服务器实际上将 ACL 作为 POSIX ACL 存储在磁盘上,所以过渡到 NFSv4 ACL 感觉有点傻,每个系统都涉及运行 Linux 的某些变体)。

对于不想学习 NFSv4 ACL 的用户,我可以强制客户端使用 NFS v3,但是有没有办法运行 NFS v4 客户端但 POSIX ACL 程序可以工作?最好不要偏离发行版的标准存储库太远。

客户端正在运行 Fedora。(目前他们在 Fedora 23 上,但他们得到了很多升级,Fedora 每六个月左右发布一次。)服务器在 Linux 上运行 Scientific Linux 7 和 ZFS。

nfs access-control-list nfs4

7
推荐指数
1
解决办法
2080
查看次数