目录
NFS 介绍
NFS服务原理:
通信流程:
NFS 配置
安装:
配置文件:
客户端上测试服务端的连通情况
挂载
开机自挂载设置
配置文件的权限进一步解释:
exportfs 服务端重载配置文件:
mount 查看挂载的信息:
NFS = network file system 网络文件系统
基于RPC协议,RPC = remote procedure call 。 RPC存在的意义在于解决NFS服务端和客户端通信多端口并且端口不固定的问题。因为NFS的服务端和客户端通信的时候,并不是只有一个端口,且端口不固定,因此需要一个中心,来记录这些不固定的端口。
场景架构:
A机器分享数据出来,B和C分别去挂载A上面共享的数据目录。
这样 A B C 3台机的读取到的都是一样的,各自的写入别的机也都能看到。
NFS服务启动的时候,会将端口信息注册到RPC,会先启动一个 rpcbind 服务。
客户端运行NFS需要先启动一个rpc服务,客户端无须启动NFS服务。
服务端运行NFS也需要先启动一个rpc服务,然后启动NFS服务。
RPC服务:
用于获取所有NFS服务的端口,PID信息,互相的IP等,是NFS服务重要的信息中转站。会先于NFS启动。
用户在nfs客户端发出存取文件请求,向NFS服务端的RPC 的111端口发出存取的询问请求,NFS服务端找到对应端口以后通知 nfs客户端的rpc服务 ,nfs客户端获取到正确的接口并和NFS服务端建立连接。
yum install -y nfs-utils 安装(客户端、服务端命令一致,都需安装)
可见rpc会被自动安装上
vim /etc/exports
/home/nfstestdir # 设置服务端需要共享的目录
192.168.222.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
这里IP用掩码的写法共享出去的就是一个网段,则222网段下的都可以进行挂载。
rw 指read和write 读写模式
ro 指read only 只读模式
sync 指同步模式,保证内存数据实时写入磁盘。实时性强,IO速度会稍慢。
async 非同步模式,当对IO速度要求高时,这个可以提高NFS 的IO读写速度。
all_squash 指所有用户挂载完以后都映射到 用户uid=1000的身份,这个可以自己去设置。客户端上所有用户在使用NFS共享目录时都被限定为一个普通用户。
root_squash 客户端上root受到约束,被限定为某个普通用户。
anonuid / anongid 和上面选项搭配使用 ,定义为限定用户的uid和gid
no_root_squash 客户挂载NFS共享目录后,root用户不受约束,权限很大。
mkdir /home/nfstestdir
systemctl start nfs-server #启动,以前的版本也有直接叫 nfs 的
systemctl enable nfs-server #设开机启动
需要关闭一下防护墙
服务正常以后会有的进程
showmount -e 服务端IP
服务未注册情况
服务端在网段内的注册情况和共享的目录
查询出这个信息则说明服务端是可以被挂载的情况了
mount -t nfs 服务端ip:/服务端共享路径 /客户端挂载路径
-o + 挂载可加选项参数:
-onolock 不加锁
-oro 修改为只读(在已有了配置文件不同设定的情况下也能进行修改)
-oremount,ro 对于已挂载的,remount可修改某参数重新挂载为只读
-oremount,nfsserver=4 修改为版本4(不支持的版本会报错参数不可用)
/etc/fastab 的方式开机挂载
测试开机挂载设置成功没有不需要重启服务器的,只需要如下:
umount 挂载点
df -h 检查挂载点还有没有
mount -a
df -h 检查挂载点还有没有
如 按all_squash,anonuid=1000,anongid=1000 形式配置的
则从客户端上root用户在挂载的位置看新增的文件属组属主会显示为
从服务端上用户在共享位置新增的文件属组属主会正常解析为对应ID的用户名、组名
为了不影响客户端可能在进行写操作,修改了配置文件以后,可以不通过重启服务生效。
exportfs -arv
exportfs其他参数:
-a 全部挂载或卸载
-r 重新挂载
-v 显示设为共享的目录
-u 卸载某一个目录
客户端 mount
可以看到已挂载的信息:nfs版本,rw,协议等