NFS(Network File System)即网络文件系统,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样,也就是说客户端PC可以挂载NFS服务器所提供的目录并且挂载之后这个目录看起来如同本地的磁盘分区一样,可以使用cp、cd、mv、rm及df等与磁盘相关的命令。
NFS原理
NFS Server服务器上设定/data目录被分享,而客户端可以通过internet将/data目录挂载到本地的挂载点(常用mnt)后,客户端就可以进入挂载点目录进行文件的读写。NFS客户端所开放的端口是随机的我们不知道,那该怎么办呢?那是不是就不能进行数据传输了呢?
RPC服务:RPC(Remote Procedure Call)即远程过程调用。RPC 最主要的功能就是在指定每个 NFS 功能所对应的 port number ,并且回报给客户端,让客户端可以连结到正确的port上去。
执行顺序:1(注册端口)--à2(达成协议)-à3(直接建立联系)--à4(达成协议)--à5(建立连接)
那为啥rpc能够找到对应的port呢?
这是因为当服务器在启动NFS时会随机取用数个port,并且主动的向RPC注册,因此RPC可以知道每个NFS的port对应的NFS功能,然后RPC又是固定使用port111来监听客户端的需求并汇报客户端的正确的port。
portmap:主要是把RPC程序号转化为Internet的端口号。只在第一次建立连接时候帮助网络应用程序找到正确的port,当当双方正确连接时,端 口就和应用绑定,portmap就无用。相当于媒婆。
配置文件
/etc/exports
格式
输出目录 客户端 选项 [访问权限,用户映射,其他]
输出目录: 需要共享的目录路径
客户端: 服务的用户对象
选项: 共享的权限,紧跟客户端列
例:
cat /etc/exports
/data * (ro) #共享/data目录,*代表所有客户机,(ro)权限为只读 ro 只读 rw 读写
服务搭建:
服务器配置:
1、编辑配置文件:
vim /etc/exports
/data * (rw)
创建共享目录:
mkdir /data
创建文件:
touch xixi
touch hahaha
启动服务:
关闭防火墙和selinux
service iptables stop
setenforce 0
显示共享目录状态:
客户端配置: