一、NFS工作原理
NFS原理:相当于一块网络硬盘被多个PC挂载,如何获得网络磁盘的端口号?
首先NFS是一个共享目录,例,他共享了data目录,这时候客户端通过IP远程挂载这个目录,也需要知道NFS的端口号。
二、NFS工作流程
举例对应关系:RPC--->中介、客户端---->租客、NFS服务--->房源
1、启动RPC服务
2,启动NFS服务,同时向RPC服务注册,告诉他哪些端口对外开放。
3、客户端直接找本地RPC服务获取NFS的端口号。客户端得RPC先找服务端得RPC先要一个端口号。服务端得端口号监听111端口。
4、客户端tcp三次握手连接到NFS服务
三、NFS服务端的设置
1、安装软件包
【1.1】nfs-utils NFS服务的主程序
【1.2】rpcbind rpc的主程序
2、启动rpcbind service rpcbind start
3、启动NFS服务 service nfs start
4、创建配置文件,路径为:/etc/exports 这个文件是真实存在的,但是里面没有内同
【4.1】vim /etc/exports
【4.2】写:/data 192.168.200.0/24(rw,sync) 网段和小括号之间不要空格
【4.3】说明:(1)、/data 模拟NFS共享目录的路径
(2)、192.168.200.0/24 模拟允许200网段这个ip可以挂载到共享目录下
(3)、rw 可读可写权限
(4)、sync 实时同步
5、重启nfs服务 service nfs reload
6、查看NFS的配置规则--能否挂载
【6.1】showmount -e 如果没有马上出信息则需要加ip showmount -e localhost
7、给共享目录更改属主与属组 chown nfsnobody.nfsnobody /data
8、本地挂载测试 mount 192.168.200.150:/data /tmp
如果不报错说明配置成功
以上服务端可实现本地文件实时共享
四、客户端设置
1、安装软件包
【1.1】nfs-utils NFS服务的主程序
【1.2】rpcbind rpc的主程序
2、客户端挂载,把服务端的data目录挂载到本机的/tmp目录下 mount 192.168.200.150:/data /tmp
3、设置开机自启动挂载 echo "mount 192.168.200.150:/data /tmp" >> /etc/rc.local
五、命令说明
1、rw 可读可写权限
2、ro 只读权限
3、async 数据太大时可等会在同步(一般不用)
4、anonuid 指定共享文件的uid号(匿名)
5、anongid 指定共享文件的gid号(匿名)
6、all-squash 修改权限,一律降级为程序用户
注:只要修改过配置文件就要重启nfs服务
六、NFS高可用架构
读写分离,主NFS挂载Web服务器后,由Web服务器远程写数据给主NFS,然后NFS在将数据目录挂载到备份1,在由bei'fen和备份2的两个服务器上,在由备份服务器1和2负责给Web服务器读取,叫做远程写本地读,可分摊NFS的压力,读不可以远程,因为带宽受不了。
七、小提示:
NFS在/etc/fstab里配置开机自动挂载失败了。为什么?
因为/etc/fstab会优先于网络被Linux系统加载。网络没启动时,执行fstab会导致无法连接NFS服务器端,从而无法实现开机挂载。
解决方法:
1.开启开机自启动netfs服务,将挂载命令放入/etc/fstab里可以实现开机挂载
2.将nfs客户端挂载命令放在/etc/rc.local中