NFS network file system 也就是网络文件系统。
NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本
NFS数据传输基于RPC协议,RPC为Remote Procedure Call的简写,译为远程过程调用。
NFS应用场景是:A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致。NFS通过网络让不同的机器之间可以彼此共享文件和目录。类似于windos通过局域网使用的共享文件夹机制。NFS挂载结构图如下:
服务端设好一个共享目录/public 后,其他有权限访问NFS服务器的客户端就可以将该目录挂载到本地,客户端对该目录的使用权限,取决于服务端对该目录的具体授权配置,比如只读。
1)首先NFS server 启动RPC服务,并开启111端口
2)server继续启动NFS服务,并向RPC注册端口信息。
3)client 启动RPC服务,向server RPC请求NFS端口信息
4)server RPC 反馈NFS 端口信息给client
5)client 通过获取的NFS端口来建立和sever NFS的连接,并进行数据传输。
总结: NFS本身不具备跨网络的通信机制,依靠RPC协议,统一管理NFS端口,从而实现正常通信。
yum install -y nfs-utils rpcbind
vim /etc/exports //加入如下内容
/home/nfstestdir 192.168.226.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
保存配置文件后,执行如下准备操作
mkdir /home/nfstestdir
chmod 777 /home/nfstestdir
systemctl start rpcbind //从前面原理中得知须先启动rpc,后启动nfs
systemctl start nfs
systemctl enable rpcbind
systemctl enable nfs
rw 读写
ro 只读
sync 同步模式,内存数据实时写入磁盘
async 非同步模式,表示把内存中的数据定期写入到磁盘
no_root_squash 客户端挂载NFS共享目录后,root用户不受约束,权限很大
root_squash 与上面选项相对,客户端上的root用户收到约束,被限定成某个普通用户
all_squash 客户端上所有用户在使用NFS共享目录时都被限定为一个普通用户
anonuid/anongid 和上面几个选项搭配使用,定义被限定用户的uid和gid
原文:http://blog.51cto.com/12606610/2114633