访问一个本地文件还是NFS共享文件对于客户端而言都是透明的,当文件打开的瞬间,内核会作出一个决定,如果是本地文件内核会将本地NFS共享文件内核会将NFS共享文件的所有引用传递给——》NFS客户端枢中
NFS客户端是通过TCP/IP协议及模块向NFS服务器发送RPC请求,NFS主要是用UDP
NFS服务器在端口2049接收客户端请求
当NFS共享了一个本地文件夹,然后NFS服务器接收到一个客户端请求后,NFS会将整个请求发送自身系统的能够访问本地文件的进程。
1.NFS的工作原理如下图:
NFS参数
rw Read-write,表示可读可写权限
ro Read-only,表示只读权限
sync (同步,实时)请求或吸入数据,数据同步到NFS Server的硬盘后才返回
async (异步)写入时数据会先写到内存缓冲区,只到硬盘有空档才会写入磁盘,这样可以提升写入速率,风险为若服务器挂掉或不正常关机,会损失缓冲区中未写入磁盘的数据
no_root_squash 访问NFS Server共享目录的用户如果是root,它对该共享目录具有root权限
root_squash 如果访问目录是root.则它的权限将被压缩成匿名用户
all_squash 不管访问共享目录的用户身份如何,它的权限都将被压缩成匿名用户。
anonuid 指定共享文件夹里的文件所有者的uid号:
anongid 指定共享文件夹里文件所有者的gid号:例如(rw,squash,anonuid=12306,anongid=12306)
RPC服务
1.NFS服务是一个多功能的服务,NFS服务启动后会有多个功能组件一起启动,每个组件都有一个端口号
2.RPC主要就是搜集每个NFS功能组件对应的端口号,并且返回客户端,让客户端想使用对应功能就需要先知道对应功能的端口
3.当NFS启动后会随机选用数个端口,并主动向RPC注册,因此RPC可以知道每个端口对应到了NFS党的每个功能组件。
4.RPC自己使用111端口来监听客户端请求,并回报客户端想请求那个功能组件的端口号
注意:
1.NFS启动之前一定要启动RPC,否则NFS无法向RPC注册
2.重启了RPC后之前所有注册的端口都会不见了,因此RPC启动后所有依赖RPC注册端口的服务
NFS安装和服务开启
yum install nfs-utils
NFS服务器的启动和停止
#systemctl start/stop/restart redbind.service
systemccetl start/stop/restart nfs.service
NFS自动启动
chkconfig --level 35 portmap on
#chkconfig --level 35 nfs on
查看NFS的状态
自动挂载
将/nfs_folder共享给102.168.1.0/24网段机器
服务器端
配置共享目录 #mkdir /nfs_folder
#vim /etc/exports
# nfs_folder 192.168.1.0/24(rw,no_root_squash,no_all_suqash,sync,anonuid)
启动rpc和 nfs服务 #systemctl start/stop/restart rpdind.service
##### #systemctl start/stop/restart nfs.servic
##### 导出共享目录 #exports -r
客户端
客户端查看共享目录有哪些 #showmount -e 查看共享目录输出
##### #showmount -a 显示连接上的客户端信息
客户端挂载 # mkdir /mnt/nfs
查看端口状态 #rpcinfo -p
1、进行安装
2、查看是否已经安装
3、先启动rpc服务和nfs,并查看状态
4、编辑导出共享目录 手动添加
5、保证客户端和服务器端防火墙和selinux都关闭,并且网络都是通的
6、创建挂载点即可进行挂载用mount命令查看就能看到挂载的点
7、上面这种挂载方式重启就会失效,还可以在/etc/fstab下面修改好,这样可以开机就能自动挂载
8、也可以在客户端安装autofs
在vi /etc/auto.master下指定路径
指定挂载点
启动autofs 即可自动挂载。
systemctl start autofs.service