window如何访问Linux通过NFS共享的目录?

打印 上一主题 下一主题

主题 908|帖子 908|积分 2724

关于NFS全部你想知道的都记录在这里了

网络文件系统(Network File System)是一种分布式文件系统协议,可让您通过网络共享远程目录。使用NFS,您可以在系统上挂载远程目录,并像对待本地文件一样使用远程盘算机上的文件。
默认情况下,NFS协议未加密,并且与Samba差别,它不提供用户名密码身份验证。而是通过客户端IP地点进行验证。
零、先阐明具体环境

  1. Windows 10专业版 1909,18363.778
  2. VMware Workstation Pro 15.5.0
  3. VMware 安装 CentOS 7.7,最小化安装,ip为: 192.168.1.32, hostname: pxecentos7
复制代码
这里下载 CentOS 7.7 安装包ISO文件,942MB
注意Vmware的虚拟机网络,要选择 【桥接模式】,这样其它机子才能访问到虚拟机。
一、CentOS安装设置NFS服务

1. 安装NFS

  1. yum -y install nfs-utils rpcbind
复制代码
其它类似Ubuntu等(基于Debian的发行版),这样安装:
  1. sudo apt-get install nfs-kernel-server nfs-common
复制代码
补充阐明1:根据Redhat官网阐明 Chapter 8. Network File System (NFS),CentOS 7.4 以后,支持 NFS v4.2 不再需要 rpcbind 了,但是如果客户端只支持 NFC v3 则需要 rpcbind 这个服务。 CentOS 7.4之前的系统,只支持到 NFS v4.1。还要注意,NFS v2已经不被支持。
补充阐明2:旧版本的portmap服务,从CentOS 7开始,已经被替换为rpcbind服务。网上有些文章设置NFS还是用的portmap,在这里建议统一使用rpcbind。
补充阐明3:rpcbind监听111端口,nfs监听2049端口。可以使用rpcinfo -p localhost指令查看。
2. 设置NFS

修改设置文件(刚安装时这个设置文件是不存在的,新建一个就好)
  1. vi /etc/exports
复制代码
修改内容为:
  1. /var/www/html  *(ro)
  2. /data  192.168.1.27(rw)
  3. /public 192.168.1.0/24(rw,async,no_root_squash)
复制代码
这里设置了3个共享,此中/var/www/html任何人都可以访问,只读。
此中/data限定只有ip为192.168.1.27的机子能访问,可以读也可以写。
此中/public限定内网,ip范围为192.168.1.0—192.168.1.255的机子能访问,可以读也可以写。
注意exports设置文件有非常严格的格式要求,目录名后必须要有空格(几个空格不要紧)。但是 *号,或者ip地点背面,不允许出现空格,必须紧接着出现小括号(),小括号里是权限参数。
权限参数阐明:
  1. rw    :read-write,可读可写
  2. ro    :read-only,只读
  3. sync  :同步,文件同时写入硬盘和内存
  4. async :异步,文件暂存于内存,而不是直接写入硬盘
  5. no_root_squash  :NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。很显然开启这项是不安全的。
  6. root_squash     :NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,拥有匿名用户权限,通常他将使用nobody或nfsnobody身份
  7. all_squash :不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都是拥有匿名用户权限
  8. anonuid    :匿名用户的UID值,可以在此处自行设定
  9. anongid    :匿名用户的GID值。
复制代码
3. 启动NFS

就这么一个设置文件,轻松搞定,可以启动NFS了
  1. systemctl start rpcbind
  2. systemctl start nfs-server
复制代码
设置CentOS开机自动启动NFS
  1. systemctl enable rpcbind
  2. systemctl enable nfs-server
复制代码
4. 题目解决


  • 启动rpcbind失败,使用systemctl status rpcbind查看状态,说是 ipv6题目。 因为我是内网使用的,不必用到 ipv6,那可以直接关掉它。
  1. vi /etc/systemd/system/sockets.target.wants/rpcbind.socket
复制代码
注释掉下面这两行内容(加#号)
  1. # ListenStream=[::]:111
  2. # ListenDatagram=[::]:111
复制代码
重载一下再启动,这样就OK了
  1. systemctl daemon-reload
  2. systemctl restart rpcbind
  3. systemctl restart nfs-server
复制代码
5. 有用的管理工具

完成设置,成功启动NFS服务后,可以使用exportfs实用程序进行管理,而无需重新启动NFS服务
查看当前设置为NFS共享的目录及其状态 exportfs -v
  1. [root@pxecentos7 ~]# exportfs -v
  2. /data           192.168.1.27(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
  3. /public         192.168.1.0/24(async,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
  4. /var/www/html   <world>(sync,wdelay,hide,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)
复制代码
在修改设置文件后,重新导出目录,而无需重新启动NFS服务 exportfs -arv
  1. [root@pxecentos7 ~]# exportfs -arv
  2. exporting 192.168.1.27:/data
  3. exporting 192.168.1.0/24:/public
  4. exporting *:/var/www/html
复制代码
6. 测试NFS连接

先本机挂载测试一下NFS服务是否正常:
  1. #显示指定IP全部共享的目录
  2. showmount -e localhost
  3. #将远程磁盘挂载到本地/mnt/public目录
  4. mount -t nfs 192.168.1.32:/public /mnt/public
  5. #查看是否加载成功
  6. df -hT
  7. umount  /mnt/public
复制代码
如果本机正常了,那就再换另外一台内网的呆板测试一下:
  1. showmount -e 192.168.1.32
  2. clnt_create: RPC: Unable to receive
复制代码
如果是上面这个错误提示,阐明是防火墙拦截了。看下一步【防火墙设置】
7. 防火墙设置

如果Firewalld正在运行,请允许NFS服务,否则其它客户端无法访问:
  1. firewall-cmd --zone=public --permanent --add-service={rpc-bind,mountd,nfs}
  2. firewall-cmd --reload
  3. #需要启用SELinux boolean:
  4. setsebool -P nfs_export_all_rw 1
复制代码
阐明: NFS客户端不需要打开防火墙,只有服务器需要设置。因为客户端是请求发起方,只要网络能连接到服务端即可。
二、Linux客户端访问NFS服务

1. 同样是安装NFS

  1. yum -y install nfs-utils rpcbind
复制代码
其它类似Ubuntu等(基于Debian的发行版),安装NFS文件系统的程序包名称为 nfs-common
  1. sudo apt-get install nfs-common
复制代码
2. 加载NFS共享目录

  1. mount -t nfs 192.168.1.32:/public /mnt/public
复制代码
自动加载方式1

编辑 /etc/fstab,添加下面一行
  1. 192.168.1.32:/public    /mnt/public     nfs       defaults,timeo=900,retrans=5,_netdev        0 0
复制代码
由于修改了 /etc/fstab,需要重新加载 systemctl。
  1. systemctl daemon-reload
复制代码
再执行mount就全部加载就好了
  1. mount -a
复制代码
自动加载方式2 【推荐使用】

将加载下令,写到 rc.local 开机启动脚本中去
  1. echo 'mount -t nfs 192.168.1.32:/public /mnt/public
  2. ' >> /etc/rc.d/rc.localchmod +x /etc/rc.d/rc.local
复制代码
推荐使用方式2,因为改fstab方式,如果加载失败,有大概导致CentOS开机失败。
三、Win10客户端访问NFS服务

1. Win10安装NFS客户端

打开 控制面板 —> 程序 —> 启用或关闭Windows功能
也可以用【Win+R】运行,复制输入以下下令:
  1. OptionalFeatures
复制代码


如上图,将 NFS相关的这三项,全部打上勾,确定。安装完成。
2. 访问NFS目录

安装好后就能在Windows的下令行,使用 showmount 和 mount 下令访问NFS服务器了。
  1. C:\Users\OdinXu> showmount -e 192.168.1.32
  2. Exports list on 192.168.1.32:
  3. /data                              192.168.1.27
  4. /public                            192.168.1.0/24
  5. /var/www/html                      *
  6. C:\Users\OdinXu> mount \\192.168.1.32\public  X:
  7. X: is now successfully connected to \\192.168.1.32\public
  8. The command completed successfully.
复制代码
showmount下令参数和Linux的一样。 mount下令有些差别,不是使用一个目录作为挂载点,而是使用一个未使用的盘符。好比下令行最后一个 X: 表现将远程NFS目录,映射为Windows本地的一个磁盘X盘。也可以使用其它英文字母 A–Z
映射成功后如下图:


使用完后,可以用umount下令卸载磁盘映射。
  1. C:\Users\OdinXu> umount X:
复制代码
单独输入 mount 不带任何参数,可以列出当前全部已经加载(映射)的NFS目录。
3. 只读题目

访问NFS正常,但是只能读,不能写,不能创建目录。
先确认/etc/exports设置文件内容,是否为 rw 再确认目录权限,试试777:
  1. chmod 777 /public/
复制代码
4. Win10访问NFS存在中文乱码题目

缘故原由是Linux通常是UTF-8编码,而Windows自带的NFS客户端工具,不停不升级支持UTF-8,从而导致中文表现乱码。这绝对是Windows的锅。
详见mount --help阐明:
  1. -o lang=euc-jp|euc-tw|euc-kr|shift-jis|big5|ksc5601|gb2312-80|ansi
复制代码
解决方法1

使用第三方开源工具 GitHub - cbodley/ms-nfs41-client: NFSv4.1 Client for Windows
64位Windows下载安装这个: ms-nfs41-client-setup-x64.exe
32位Windows下载安装这个: ms-nfs41-client-setup-x86.exe
安装好后,这样用:
  1. nfs_mount X: 192.168.1.32:/public
复制代码
解决方法2 【不推荐使用】

  1. 2020/5/5 修改为不推荐使用
  2. 因为用了这个设置后,我用招商银行专业版,出现乱码。改回来就恢复正常。
  3. 还是使用上面的解决方法1吧。
复制代码
用【Win+R】运行,复制输入以下下令:
  1. intl.cpl
复制代码


如上图,在打开的“区域”功能界面,选择“管理”标签 —> 更改系统区域设置 —> 勾选中“Beta版:使用Unicode UTF-8提供全球语言支持” —> 确定 —> 重启Windows系统。
这样操作之后,中文表现就一切正常了。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

反转基因福娃

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表