目录

1. 环境

2. NFS介绍

3. 下载安装服务端

4. 客户端安装

5. 测试

6. Window上挂载NFS


1. 环境

CentOS7.6

以2台机器为例,服务端:172.20.32.219   客户端:172.20.32.218

2. NFS介绍

 NFS(Network File System):它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。

NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利;

NFS一般用来存储共享视频,图片等静态数据。

RPC(Remote Procedure Call)——远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。NFS 服务器在启动的时候就得要向 RPC 注册,所以 NFS 服务器也是一种 RPC server。.

3. 下载安装服务端

1) 安装NFS和rpc,服务端和客户端必须软件nfs-utils

# yum -y install nfs-utils

nfs 客户端需要的包 nfs客户端安装_服务端

2) 启动服务端的nfs和rpcbind服务,并设置开机启动

注意:先启动rpc服务,再启动nfs服务。

# systemctl start rpcbind          #先启动rpc服务

# systemctl enable rpcbind      #设置开机启动

# systemctl start nfs

# systemctl enable nfs

# systemctl status nfs

nfs 客户端需要的包 nfs客户端安装_服务端_02

3) 服务端创建共享目录,编辑配置文件

# mkdir /public               //首先创建共享目录

# vim /etc/exports          修改服务端配置文件/etc/exports

如果有网段限制增加如下一行:  /public 172.20.32.0/24(rw,no_root_squash,insecure,sync) 

任意IP访问增加如下一行:    /public *(rw,no_root_squash,insecure,sync)

参数值

内容说明

rw

ro

该目录分享的权限是rw可擦写 (read-write) 或ro只读 (read-only),但最终能不能读写,还是与文件系统的 rwx及身份有关

sync

async

sync 代表数据会同步写入到内存与硬盘中,async 则代表数据会先暂存于内存当中,而非直接写入硬盘

no_root_squash

root_squash

客户端使用 NFS 文件系统的账号若为 root 时,客户端 root 的身份会由 root_squash 的设定压缩成 nfsnobody,如此对服务器的系统会较有保障。但如果你想要开放客户端使用 root 身份来操作服务器的文件系统,那么这里就得要开 no_root_squash 才行

all_squash

不论登入 NFS 的使用者身份为何, 他的身份都会被压缩成为匿名用户,通常也就是 nobody(nfsnobody)

anonuid

anongid

anon 意指 anonymous (匿名者) 前面关于 *_squash 提到的匿名用户的 UID 设定值,通常为 nobody(nfsnobody),但是你可以自行设定这个 UID 的值!当然,这个 UID 必需要存在于你的 /etc/passwd 当中!anonuid 指的是 UID 而 anongid 则是群组的 GID

 

 

 

注意 :如果在启动了NFS之后又修改了/etc/exports,可以用exportfs 命令来使改动立刻生效,该命令格式如下:

# exportfs -rv   //重新共享所有目录并输出详细信息

# exportfs -au   //卸载所有共享目录

-a 全部挂载或卸载 /etc/exports中的内容
  -r 重新读取/etc/exports 中的信息 ,并同步更新/etc/exports、/var/lib/nfs/xtab
  -u 卸载单一目录(和-a一起使用为卸载所有/etc/exports文件中的目录)
  -v 在export的时候,将详细的信息输出到屏幕上。

4) 依次重启服务端rpcbind、nfs服务

重启

# systemctl restart rpcbind

# systemctl restart nfs

查看状态

# systemctl status rpcbind

# systemctl status nfs

5) 配置服务端防火墙

# firewall-cmd --add-service=nfs --permanent

# firewall-cmd --reload

nfs 客户端需要的包 nfs客户端安装_服务器_03

6) 补充命令

# nfsstat       查看NFS的运行状态

# rpcinfo       查看rpc执行信息,可以用于检测rpc运行情况的工具,利用rpcinfo -p 可查看出RPC开启的端口所提供的程序

# showmount

-a  显示已经于客户端连接上的目录信息
  -e  IP或者hostname 显示此IP地址分享出来的目录

4. 客户端安装

启动客户端nfs服务(客户端可以不启动rpcbind服务),挂载服务端nfs目录

# yum install -y nfs-utils     //安装nfs服务

# systemctl start nfs

# mount -t nfs 172.20.32.219:/public /mnt         //挂载服务端public目录

解释: -t nfs  指定要挂载的设备上的文件系统类型

            /mnt 挂载到本地目录

如果客户端需要卸载共享目录,可使用

# umount /mnt

5. 测试

客户端查看一下挂载情况

# df -Th

nfs 客户端需要的包 nfs客户端安装_服务端_04

注意:在服务端及客户端分别写入数据,发现只能在服务端对/public目录进行读写,而在客户端只能读取。因为都是使用root账户进行操作的,在客户端看到的root是指服务端的root而并非客户端的root。在服务端将/nfs目录的权限设置为7(chmod 777 -R  文件夹的绝对路径),但这并不严谨,不是我们想要达到的目标。   

# touch 1.txt     //客户端创建文件写入内容

# echo "NFS Client wirte">/mnt/1.txt

nfs 客户端需要的包 nfs客户端安装_nfs 客户端需要的包_05

这时, 我们就可以通过客户端操作NFS服务端的共享目录。

6. Window上挂载NFS

1) 在win7控制面板下开启nfs功能

nfs 客户端需要的包 nfs客户端安装_服务端_06

2) 挂载NFS服务端共享目录:    mount \\172.20.32.219\public x:

nfs 客户端需要的包 nfs客户端安装_服务器_07

如果挂载发生网络错误-53的解决方法:

由于NFS服务器有一个”在非安全模式工作(允许更高的端口号)“的选项。Windows NFS客户端经常使用的是大的端口号。需要在NFS服务端添加insecure选项,如: /public *(rw,no_root_squash,insecure,sync)

3) 查看

nfs 客户端需要的包 nfs客户端安装_服务端_08

如果需要卸载共享目录: umount x:

nfs 客户端需要的包 nfs客户端安装_nfs 客户端需要的包_09