标签: nfs4

Windows Server 2012 R2 可以挂载 NFS 4.1 目标吗?

我们正在研究新的 AWS 功能弹性文件系统 (EFS)。警告之一是不支持 Windows Server EC2 实例(https://docs.aws.amazon.com/efs/latest/ug/gs-step-one-create-ec2-resources.html)这似乎是与 EFS 使用 NFS v4.1 的事实有关,而 Windows 服务器将不支持这一点。

但是,官方 Windows Server 2012 R2 文档指出它将支持 NFS 服务器/客户端 v4.1 ( https://technet.microsoft.com/en-us/library/jj574143(v=ws.11).aspx )

如果是这种情况,则 Windows Server 2012 R2可以挂载 EFS v4.1 目标,并且不支持 Windows 的提及是没有根据的。目前还不清楚,如果有人能明确回答,那将不胜感激。

amazon-web-services nfs4 windows-server-2012-r2

4
推荐指数
1
解决办法
5792
查看次数

客户端无法挂载:“mount.nfs4:不支持协议”

我只在服务器和客户端上运行 nfs4。我不确定最近更改了什么,但我无法再挂载以前能够挂载的导出文件系统。我刚刚将客户端计算机从 Fedora 31 升级到 32...但我发誓升级后 nfs 仍然可以立即工作。

在客户端我做:

  # mount /foo
  mount.nfs4: Protocol not supported
Run Code Online (Sandbox Code Playgroud)

尚未/etc/fstab更改。处尚未安装任何内容/foomount.nfs4我手动发出相同的结果。

在客户端使用wireshark,我可以看到绝对没有任何内容发送到nfs服务器(或从同一服务器接收)。使用 tcpdump,从客户端重新启动之前到尝试挂载之后,我在服务器端看不到任何内容。所以我猜这是一个客户端问题?

我在日志中看不到任何内容。我找不到任何东西来结束客户端安装的日志记录级别。

谁能告诉我如何发现客户正在做什么(或没有做什么)?


按照要求...

dmesg提及 nfs|NFS:

[    7.987799] systemd[1]: Starting Preprocess NFS configuration convertion...
[    7.993220] systemd[1]: nfs-convert.service: Succeeded.
[    7.993342] systemd[1]: Finished Preprocess NFS configuration convertion.
[   12.484481] RPC: Registered tcp NFSv4.1 backchannel transport module.
Run Code Online (Sandbox Code Playgroud)

fstab客户端:

foo:/ /foo nfs4 noauto,sec=sys,proto=tcp,clientaddr=xx.xx.xx.xx,port=1001  0 0
Run Code Online (Sandbox Code Playgroud)

客户端有多个IP。服务器希望掩盖它提供 nfs 的事实。为了使它更容易,它只支持 nfs4。netstat服务器上的FWIW给出(为了清晰起见进行了编辑):

Prot  R-Q S-Q  Local …
Run Code Online (Sandbox Code Playgroud)

nfs4

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

如何确定远程 NFS 共享的版本?

我在使用某些软件时遇到问题,该软件只能挂载 NFSv3 和 NFSv4 共享 - 它无法挂载 NFSv4.1 或 NFSv4.2。

由于我无权访问服务器本身,因此我无法确定正在使用的 NFS 的确切版本。

我知道 rpcinfo 命令:

rpcinfo -p server
Run Code Online (Sandbox Code Playgroud)

打印出共享的版本,如下所示:

   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
      7507    1   tcp   7507
    100024    1   udp  20049  status
    100024    1   tcp  20049  status
    100003    3   tcp   2049  nfs
    100005    1   tcp  20048  mountd
    100005 …
Run Code Online (Sandbox Code Playgroud)

linux nfs network-share nfs4

4
推荐指数
1
解决办法
1517
查看次数

automount - CentOS 6.5 上的 autofs 挂载问题

服务器 CentOS 6.5 和 Selinux 允许

我的 NFS 服务器在 /etc/exports 中共享

/home/unixmen/  10.0.0.0/24 (rw,sync,no_root_squash)
Run Code Online (Sandbox Code Playgroud)

客户端运行在另一台 CentOS 6.5 主机上,可以正常挂载。

当我尝试使用 autofs 进行自动挂载时,没有任何效果,谷歌搜索这个问题以找出根本原因,但没有成功。

我想知道我是否在做一些基本的错误..

请参阅 autofs 配置

~]$ cat /etc/auto.master
#/net -hosts
#+auto.master
/misc /etc/auto.misc
Run Code Online (Sandbox Code Playgroud)

~]$ cat /etc/auto.misc
unixmen -fstype=nfs 10.0.0.14:/home/unixmen
Run Code Online (Sandbox Code Playgroud)

我确实更改了日志级别以在 /etc/sysconfig/autofs 中进行调试,重新启动 autofs 和日志后说

Jun 27 17:20:00 ganeshh automount[12322]: mounted indirect on /misc with timeout 300, freq 75 seconds
Run Code Online (Sandbox Code Playgroud)

不确定这是否与安装问题有关

最近,我在日志中获取了这些数据

Jun 27 18:11:49 ganeshh automount[12322]: expire_proc: exp_proc = 3063937904 path /misc
Jun 27 18:11:49 ganeshh automount[12322]: expire_cleanup: got …
Run Code Online (Sandbox Code Playgroud)

nfs nfs4

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

在具有不同 UID 的服务器之间创建 NFS 共享

我的网络中有 4-5 台 Ubuntu 14.04 服务器,我想/home在它们之间共享一个公共目录。我已经设置了 nfs 服务器,并且可以在各种客户端上安装目录。但是我的问题是用户 ID。

示例:nfs服务器上的用户是 UID 1003,但在 nfs客户端上,同一用户是 UID 1002,在另一个 nfs 客户端上是 1005。

在解决这个冲突时,我有哪些选择?我在寻找选项方面进行了相当广泛的谷歌搜索,但找不到明确的答案。我是否可以将用户从一个 UID 映射到另一个,或者我是否可以手动更改所有框的 UID?

这是我的当前 /etc/exports

home 192.168.1.0/24(rw,sync,no_root_squash,no_subtree_check)

ubuntu nfs nfs4

3
推荐指数
1
解决办法
833
查看次数

如何为 nfs 配置合理的超时?

我有 nfs 挂载到远程机器上的目录。当远程机器宕机或断线时,任何在nfs(如:ls,或open file)上的命令都卡住了。

如果 nfs 目录不可用,我希望它在几秒钟内失败。

我该怎么做?

/etc/fstab我看到

<remote-host-ip>:/path/to/origin /shared/point nfs defaults 0 0
Run Code Online (Sandbox Code Playgroud)

当我运行时,mount我看到:

<remote-host-ip>:/path/to/origin on /shared/point type nfs4 (rw,relatime,vers=4.1, rsize=1048576,wsize=1048576,namelen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=<my-ip>,local_loc=none,addr=<remote-ip>)
Run Code Online (Sandbox Code Playgroud)

linux nfs timeout nfs4

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

使用 nginx 和 nfs 拒绝权限

我有两台 RHEL 7 机器。

我已经安装了 nginx 和 php-fpm 并设置了 nfs 安装。我可以毫无问题地读/写 nfs 挂载,并且我有另一个能够对其进行读写的应用程序服务器 (Apache Geronimo)。

当我安装 nginx 时,它会设置一个我在 NFS 文件服务器上创建的 nginx 用户,该用户具有相同的 uid 和 gid。

我可以使用 nginx 用户列出 nfs 客户端挂载上的文件。但是,当我尝试使用 nfs 中的 nginx 提供静态 html 或动态 php 文件时,出现权限错误:

*5 stat() "/usr/depot/repository/test.php" failed (13: Permission denied)
*5 open() "/usr/depot/repository/test.html" failed (13: Permission denied)
Run Code Online (Sandbox Code Playgroud)

此外,我在 /usr/depot/testing 下创建了具有相同权限的文件夹(只是不是 nfs),并且效果很好。

这是客户端上的安装信息。

xxx.xxx.xxx.xxx:/mnt/repository on /usr/depot/repository type nfs4 (rw,nosuid,nodev,noexec,relatime,vers=4.0,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=xxx.xxx.xxx.xxx,local_lock=none,addr=xxx.xxx.xxx.xxx)
Run Code Online (Sandbox Code Playgroud)

我看不出这个设置有什么问题,所以我不知道为什么 nginx 无法从 nfs 共享中读取文件。

更新

好的,我刚刚禁用了 SELinux 重启并修复了它。现在的问题是如何配置 SELinux 以便 nginx 可以访问远程服务器。

nginx nfs nfs4

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

如何使用/etc/export.d/?

如何使用/etc/export.d/导出文件系统?

我正在尝试通过 nfs 导出 sge 单元的配置。但是,导出似乎不起作用。

# cat /etc/exports.d/sge-example.com
/opt/sge/example.com 192.0.2.0/24(ro)
# exportfs -rv
exportfs: No file systems exported!
# strace exportfs -rv 2>&1
execve("/usr/sbin/exportfs", ["exportfs", "-rv"], [/* 27 vars */]) = 0
brk(NULL)                               = 0x55d9bfde2000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb67e9e0000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=28419, ...}) = 0
mmap(NULL, 28419, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fb67e9d9000
close(3)                                = 0
open("/lib64/libwrap.so.0", O_RDONLY|O_CLOEXEC) = …
Run Code Online (Sandbox Code Playgroud)

nfs nfs4 centos7

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

nfs4_disable_idmapping 参数到底有什么作用?

我一直在 NFSv4 中尝试用户/组 ID 映射(翻译)。我想要实现的是基于名称的 ID 转换,它独立于服务器和客户端上的实际 UID/GID。

许多指南和文章提到,要使 ID 映射正常工作,您必须在客户端模块和服务器模块中将nfs4_disable_idmapping参数设置为0(又名 N) 。但是,我没有找到任何有关此参数的具体用途的信息或文档。nfsnfsd

作为实验,我配置了 NFSv4 服务器和客户端(使用sec=krb5),并故意将这些参数保留为其默认值(禁用映射)。我可以验证服务器上是否禁用了映射:

$ cat /sys/module/nfsd/parameters/nfs4_disable_idmapping 
Y
Run Code Online (Sandbox Code Playgroud)

并在客户端上:

$ cat /sys/module/nfs/parameters/nfs4_disable_idmapping 
Y
Run Code Online (Sandbox Code Playgroud)

我在服务器上创建了用户bob(uid=1002)and ,在客户端上创建了用户and 。正如您所看到的,UID 不匹配,但是用户仍然映射正确。用户在服务器上创建的文件被视为由服务器拥有,反之亦然。sam(uid=1001)bob(uid=1003)sam(uid=1004)bobbob

此外,如果我查看客户端上的日志:

nfsidmap[1874]: key: 0x322c739a type: uid value: bob@home.lan timeout 600                                            
nfsidmap[1874]: nfs4_name_to_uid: calling nsswitch->name_to_uid                                                      
nfsidmap[1874]: nss_getpwnam: name 'bob@home.lan' domain 'home.lan': resulting localname 'bob'                       
nfsidmap[1874]: nfs4_name_to_uid: nsswitch->name_to_uid returned 0                                                   
nfsidmap[1874]: nfs4_name_to_uid: final return value is 0       
Run Code Online (Sandbox Code Playgroud)

并在服务器上: …

ubuntu nfs nfs4

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

如何在 CentOS 上设置 pNFS

我正在研究创建 PB 存储阵列的不同方法。一种看起来很有趣的选项是 pNFS;但是,我无法找到有关如何设置它的详细信息。

如何在 CentOS 6.6 服务器上设置 pNFS?如何指定哪些服务器充当元数据服务器,哪些充当数据服务器?

nfs4

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

NFS4 ID 映射

当前使用 NFS4 idmapping。如果我手动将 NFS 服务器上的文件“ /sys/module/nfsd/parameters/nfs4_disable_idmapping”更新为“ N ”并刷新缓存,UID 和 GID 将正确显示在 NFS 客户端上。问题是在重新启动时似乎将此文件更改回“ Y

解决方案“尝试在服务器上强制使用数字 ID:echo "options nfs nfs4_disable_idmapping=1" > /etc/modprobe.d/nfs.conf 并重新启动 NFS 服务器。 ”似乎没有帮助。我什至试过 nfs4_disable_idmapping=0

nfs nfs4

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

NFS 共享上的 Docker 卷 - 空目录

我们的业务应用程序在两个节点(节点 1 和节点 2)上运行 Docker Swarm 部署。

应用程序需要一个卷来存储持久数据。由于尚不清楚容器部署在哪里(节点 1 或节点 2),并且应用程序的两个容器可能应该在两个节点上运行,因此我们需要一个解决方案来为所有节点提供共享卷。

为了共享卷,我们使用以下 /etc/exports 文件在第三个节点 3 上设置 NFS 服务器:

/srv          *(rw,sync,anonuid=1000,anongid=1000,all_squash,subtree_check,crossmnt,fsid=root)
Run Code Online (Sandbox Code Playgroud)

(我使用 anonuid/gid 为导出中的每个文件显式设置 node3 系统中已知用户的用户信息。 all_squash 用于确保所有访问用户的所有文件权限都重写给该本地用户)

在我们的 docker-compose.yml 中,我们使用以下设置来包含卷:

volumes:
  nfs-data:
    driver: local
    driver_opts:
      type: nfs
      o: nfsvers=4,addr=node3.example.com,rw,nolock,soft
Run Code Online (Sandbox Code Playgroud)

我们现在遇到了一个问题,容器只是不想启动,错误消息是:

failed to copy file info for /var/lib/docker/volumes/MY_CONTAINER_nfs-data/_data: failed to chown /var/lib/docker/volumes/MY_CONTAINER_nfs-data/_data: lchown /var/lib/docker/volumes/MY_CONTAINER_nfs-data/_data: operation not permitted
Run Code Online (Sandbox Code Playgroud)

经过一番挖掘后,我发现问题在于 Node3 服务器上导出的 NFS 目录上的初始空文件夹。一旦我放入一个空文件,节点 1 和节点 2 中的容器启动就完全正常。

有人对此有解释吗?

nfs share nfs4 docker

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