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 中的连接情况,发现已经连接到共享目录

30b3013679260b98f4762dd06aca3caa.png

访问挂载到本地的目录,就能直接访问到远程的共享目录

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 中配置要共享的目录

f49e5f53682e716a7b5d7f8a125de7d7.png

Windows 10 默认没有安装 NFS Client,需要在控制面板中安装

a18597b747b95b58d74461419d6c6d76.png

接下来打开 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 盘,就可以访问到共享目录

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐