NFS协议详解与配置实现

NFS(网络文件系统):让网络上的不同linux/unix系统机器实现文件共享

nfs本身只是一种文件系统,没有提供文件传递的功能,但却能让我们进行文件的共享,原因在于 NFS 使用RPC服务,用到NFS的地方都需要启动RPC服务,无论是NFS客户端还是服务端

nfs和rpc的关系:nfs是一个文件系统,负责管理分享的目录;rpc负责文件的传递

nfs启动时至少有rpc.nfsd和rpc.mountd2个daemon

rpc.nfsd主要是管理客户机登陆nfs服务器时,判断改客户机是否能登陆,和客户机ID信息。

Rpc.mountd主要是管理nfs的文件系统。当客户机顺利登陆nfs服务器时,会去读/etc/exports文件中的配置,然后去对比客户机的权限。

协议使用端口:

RPC:111 tcp/udp

nfsd:  2049 tcp/udp

mountd:RPC服务在 nfs服务启动时默认会为 mountd动态选取一个随机端口(32768--65535)来进行通讯 ,可以在/etc/nfsmount.conf文件中指定mountd的端口

NFS协议详解与配置实现

nfs服务器启动nfs服务时,先向rpc服务注册,然后通过rpc服务来监听客户端的请求;

客户端连接过程:

1、客户端的rpc服务向服务端的rpc服务询问nfsd和mountd的端口并测试连通性

2、客户端发送挂载请求

3、服务端根据/etc/exports配置文件确定是否允许挂载

4、挂载成功/失败

NFS服务器安装与配置

1、安装nfs-utils和nfs-utils-lib

yum install nfs-utils -y    #nfs服务的主程序包

yum install nfs-utils-lib -y    #nfs支持库

2、nfs的主配置文件为/etc/nfsmount.conf 一般默认即可,在此不做介绍

3、修改/etc/exports添加共享目录

内容格式:

共享目录        客户端(导出选项)

客户端指定方式   example  
单个IP地址   192.168.10.5  
网段  

192.168.10.0/24、192.168.10.0/255.255.255.0 、192.168.10.*

 
域名   linux.lzs.org  
指定所在域内的所有客户端   *.lzs.org  
使用通配符*指定所有   *  
导出选项   说明  
rw   读写权限  
ro   只读  
root_squash   当使用root登录时,被映射成nfsnobody(建议使用)  
no_root_squash   关闭root_squash  
all_squash   无论以什么身份登录,都映射成nfsnobody  
hide   在共享目录中不共享子目录  
nohide   共享NFS目录的子目录  

例如:

vim /etc/exports

/tmp/share      *(rw)

4、开启nfs服务

service nfs start

管理共享目录

使用exportfs命令可以共享、显示或不共享/etc/exports中定义的目录

语法格式:exportfs 选项 [目录]

选项   说明  
-a   共享或不共享/etc/exports中定义的共享目录,常与r或u一起使用  
-r   重新共享指定目录  
-u   不共享指定目录  
-o   可以指定导出选项(后面所跟的目录可以不是/etc/exports中的目录)  
-v   查看共享的目录及其导出选项  

使用showmount命令可以查看指定服务器的共享目录

语法格式:showmount -e NFS_IP

查看/var/lib/nfs/etab文件可以查看nfs服务器共享目录和导出选项的详细信息

客户端挂载nfs文件系统

mount -t nfs NFS_IP:共享目录 本地挂载点

注意要点:

1、开启nfs前要确保rpcbind服务已启动

2、服务端和客户端都要开启rpc服务

3、最好关闭iptables和selinux

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/108475e03182abb9405fe87cc6e532bf.html