NFS
(
Network File System
,网络文件系统)是
FreeBSD
支持的文件系统中的一种,它允许网络中 的计算机(不同的计算机、不同的操作系统)之间通过TCP/IP
网络共享资源,主要在
unix
系列操作系统 上使用。在NFS
的应用中,本地
NFS
的客户端应用可以透明地读写位于远端
NFS
服务器上的文件,就像访 问本地文件一样。
NFS
服务器可以让
PC
将网络中的
NFS
服务器共享的目录挂载到本地端的文件系统中,而在本地端的 系统中看来,那个远程主机的目录就好像是自己的一个磁盘分区一样。
由于
NFS
支持的功能比较多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用
一些端口来传输数据,因此
NFS的功能所对应的端口并不固定
,而是随机取用一些未被使用的小于
1024 的端口用于传输。但如此一来就会产生客户端连接服务器的问题,因为客户端需要知道服务器端的相关 端口才能够连接。
此时就需要
RPC
(
Remote Procedure Call
,远程过程调用)的服务。由于当服务器在启动
NFS
时会 随机选取数个端口号,并主动向RPC
注册,所以
RPC
知道每个
NFS
功能所对应的端口号,
RPC
将端口号通 知给客户端,让客户端可以连接到正确的端口上去。
RPC采用固定端口号port 111来监听客户端的需求 并向客户端响应正确的端口号。
注:在启动NFS
之前,要先启动
RPC
,否则
NFS
会无法向
RPC
注册。另外,
RPC若重新启动,原来注 册的数据会消失不见,因此RPC重启后,它管理的所有服务都需要重新启动以重新向RPC注册。
RPC主程序:rpcbind
NFS主程序:nfs-utils
开放/nfs/upload目录,该目录为192.168.225.0/24网段的主机的数据段主机上传目录,并将所有该网段上传文件的所属者和所属组映射为nfs-upload,其UID和GID为2001
NFS服务端(192.168.88.138)
#yum install rpcbind -y
#yum install nfs-utils -y
#systemctl restart rpcbind
#systemctl restart nfs
#mkdir -p /nfs/upload
#vim /etc/exports
/nfs/upload 192.168.88.0/24(rw,all_squash,anonuid=2001,anongid=2001)
#exportfs -r
#chmod o+w /nfs/upload/
#showmount -e
Export list for master:
/nfsshare2 *
/nfsshare1 *
/nfs/upload 192.168.88.0/24
all_squash :任何用户访问服务器都是匿名用户访问,相当于使用nobody用户访问该共享目录。
no_all_squash :和all_squash相反,该选项默认设置
root_squash :将root用户及所属组都映射为匿名用户或用户组,为默认设置
no_root_squash :与root_squash相反
客户端:
#mkdir /data1
#mount 192.168.88.136:/nfs/upload /data1
#cd /data1
#touch file{a..b}
#ll
total 0
-rw-r--r--. 1 2001 2001 0 Oct 19 04:13 filea
-rw-r--r--. 1 2001 2001 0 Oct 19 04:13 fileb
-rw-r--r--. 1 2001 2001 0 Oct 19 04:13 filec
服务器端查看:
# cd /nfs/upload/
#ll