NFS,全称是 Network File System,用于在不同的服务器之间建立文件共享的通道,使得从其他服务器上访问共享目录时,就如同访问服务器自己本地的文件夹一样方便,这在分布式系统上得到广泛的应用。比如, k8s 集群,就会采用 NFS 来实现共享存储
在需要开放共享的机器上,启动一个 NFS Server,需要访问共享的机器上,用 NFS Client 挂载共享目录到本地目录上,就能够直接打开本地目录进行读写
在不同操作系统上安装 NFS Server
- Mac OS
Mac 默认安装了 NFS Server,使用如下命令检查 nfsd 的启动状况
$ sudo nfsd status
nfsd service is enabled
nfsd is running (pid 19394, 8 threads)
如果没有开启,执行下列指令启动
$ sudo nfsd enable
$ sudo nfsd start
- Linux Centos 7
$ yum install nfs-utils -y
- Windows 10
安装一个 NFS Server 应用
https://www.hanewin.net/nfs-e.htm
在不同操作系统上设置共享目录
- Mac OS
配置共享目录,通过编辑 /etc/exports
$ sudo vi /etc/exports
$ cat /etc/exports
V4: / -sec=sys
/Users/mac/nfs-share -alldirs -maproot=root:wheel -network=192.168.0.0 -mask=255.255.0.0
其中/Users/mac/nfs-share
是要开放共享的目录,默认是可读写,如果只让可读,加入参数 -ro
接下来,依次执行检查配置状态,重启服务,查看挂载状态的指令
# 检查配置状态
$ sudo nfsd checkexports
exports:1: got host/group with no directory?: /Users/mac/nfs-share
# 重启服务
$ sudo nfsd restart
# 查看挂载状态
$ showmount -e
Exports list on localhost:
/Users/mac/nfs-share 192.168.0.0
最后可以看到,已经把刚刚设置的共享目录挂载上去了,接下来本地验证一下
先以客户端的身份检查 IP 地址下的挂载情况
$ showmount -e 192.168.31.103
Exports list on 192.168.31.103:
/Users/mac/nfs-share 192.168.0.0
该 IP 地址下存在一个共享的目录,于是客户端将这个目录挂载到本地的目录上
$ sudo mount -t nfs -o nolock,nfsvers=3,vers=3 192.168.31.103:/Users/mac/nfs-share /Users/mac/demo
没有报错,就表示成功了,通过查看 Finder 中的连接情况,发现已经连接到共享目录
访问挂载到本地的目录,就能直接访问到远程的共享目录
- Linux
Centos 上跟 Mac 的操作方式是有一些不同的地方
首次下载 nfs-util 后,需要先重启 rpcbind 服务
$ systemctl restart rpcbind
配置共享目录到 /etc/exports
,然后更改共享目录的所有者,并重启 NFS Server 服务
# 编辑共享目录, * 表示共享给所有 IP 的服务器,rw 表示可读写
# 常用的是配置成同一个局域网内的服务器 192.168.1.0/24
$ vim /etc/exports
$ cat /etc/exports
/home/nfs-share *(rw,sync,all_squash)
# 更改共享目录的所有者,nfsnobody 用户组是 nfs-util 安装包创建的
$ chown -R nfsnobody:nfsnobody /home/nfs-share
# 重启服务
$ systemctl restart nfs-server
接下来在客户端上进行连接测试,这里我们就在本地进行,如果在其他的机器,也需要先安装 nfs-util
查看共享服务器上的目录,并挂载 NFS 共享目录到本地目录
# 查看共享目录
$ showmount -e 192.168.1.3
Export list for 192.168.1.3:
/home/nfs-share *
# 挂载共享目录
$ mount -t nfs 192.168.1.3:/home/nfs-share /home/nfs-data
这样访问本地的 /home/nfs-data
即可
- Windows 10
启动在上一步安装的 haneWIN NFS Server
,在 Edit-Preferences-Exports
中配置要共享的目录
Windows 10 默认没有安装 NFS Client,需要在控制面板中安装
接下来打开 cmd 命令行窗口,输入挂载命令
> mount 192.168.71.64:/d/test-nfs G:
G: 现已成功连接到 192.168.71.64:/d/test-nfs
命令已成功完成。
这里要注意两点:
- 书写共享目录路径时,不能写成 Windows 盘符的路径,即:D:\test-nfs,而是参考 NFS Server 中 Exports 界面下的路径,写成
/d/test-nfs
,Mac 或者 Linux 访问 Windows 也是如此 - Windows 只能挂载到一个
未经使用
的盘符上,而不是某个具体的目录下,如上图中的 G:
访问任务管理器中的 G 盘,就可以访问到共享目录