一、什么是NFS网络文件系统?
1、什么是NFS?
NFS 就是 Network FileSystem 的缩写,最早之前是由sun 这家公司所发展出来的。 它最大的功能就是可以透过网络,让不同的机器、不同的操作系统、可以彼此分享个别的文件。可以简单的将他看做是一个文件服务器!这个 NFS 服务器可以让你的 PC 来将网络远程的 NFS 服务器分享的目录,挂载到本地端的机器当中, 在本地端的机器看起来,那个远程主机的目录就好像是自己的一个磁盘分区槽一样 (partition)!NFS在文件传送或信息传送过程中依赖于RPC协议。
2、什么是RPC?
RPC(Remote Procedure Call)——远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。NFS 服务器在启动的时候就得要向 RPC 注册,所以 NFS 服务器也是一种 RPC server!
二、Linux环境下,NFS服务器的配置
服务器(170):
1、下载软件并且启动服务
yum install nfs-utils
systemctl start nfs
2、配置与NFS服务器相关的防火墙策略
firewall-cmd --list-all ##查看防火墙策略
firewall-cmd --permanent --add-service=nfs ##将nfs服务加入火墙白名单
firewall-cmd --permanent --add-service=rpc-bind ##客户端访问时随即分配端口
firewall-cmd --permanent --add-service=mountd ##火墙允许远程挂载
firewall-cmd --reload ##火墙重新加载策略
3、设定nfs共享方式
vim /etc/exports
/redhatlinux *(ro,sync) ##共享目录 所有挂载点同步更新、只读挂载
4、刷新文件及重启,使设定共享方式生效。
exportfs -rv
5、测试
客户端(120):
mount 172.25.254.170:/redhatlinux /mnt/nfs
这里因为我们服务器的共享方式设定为只读,因此没有写权限,不能完成创建文件的操作
三、客户端auto触发式挂载
默认自动挂载:
1、下载服务软件启动服务
yum install autofs.x86_64 -y ##下载软件
systemctl start autofs ##启动服务
2、测试
cd /net/172.25.254.170/redhatlinux ##默认挂载目录,默认300秒不操作,自动卸载
ls
进入路径后,会自动挂载,默认退出目录后300秒,自动卸载
更改默认卸载目录时间:
1、更改配置文件及重启服务
vim /etc/sysconfig/autofs ##7.0版本,7.0以上为/etc/autofs
TIMEOUT=3 ##默认卸载时间更改为三秒
systemctl restart autofs.service
2、测试
分析:进入目录后,自动挂载,退出目录三秒后查询,已经卸载了。这样会节约服务端和客户端的系统资源
更改默认挂载目录
我们可以看到默认的挂载目录可能不太方便我们的工作,而这个目录是可以更改的
1、更改子配置文件auto.master
vim /etc/auto.master
添加:
/opt /etc/auto.redhat ##/opt为最终挂载点的所有父级目录,/etc/auto.redhat为手动创建的子配置文件
2、创建子配置文件auto.redhat
vim /etc/auto.redhat
redhat 172.25.254.170:/redhatlinux ##redhat为最终的挂载点的最后一级目录
3、重启服务
systemctl restart autofs
4、测试
cd /opt/redhat
ls
四、nfs的有关参数
1、对某个用户特殊权限
服务器(170):
vim /etc/exports
/redhatlinux *(ro,sync) 172.25.254.120(rw,sync) ##设置所有人只读挂载,170读写挂载
exportfs -rv ##使设定生效
测试:
cd /opt/redhat
ls
touch file2
ls
需要注意的是,这里服务器的本地文件系统的权限需要777,否则客户端即使读写挂载也不能创建或者删除文件
2、设置创建文件保持文件所有者,所有组。
服务器:
vim /etc/exports
/redhatlinux *(ro,sync) 172.25.254.120(rw,sync,no_root_squash)
exportfs -rv
测试:
客户端:
cd /opt/redhat
touch file3
ll