1.NFS的共享流程
1.客户端首先找到NFS服务器上的rpc-bind服务,这个服务会高速客户到底有没有NFS共享,如果有的话rpc-bind会带客户去寻找mountd服务 2.mountd服务告诉客户到底能不能使用NFS共享,如果可以就直接带客户去找NFS服务 rpc-bind------->mountd-------->nfs
所以客户端要共享磁盘中的数据的时候,此时服务端的三个服务都必须开启
rpc-bind mountd nfs
2.什么是NFS
NFS是Network File System的缩写,即网络文件系统,一种使用于分散式文件系统的协定,由Sun公司开发 是FreeBSD支持的文件系统中的一种,它允许网络中的计算机通过TCP/IP共享资源 功能是通过网络让不同的机器,不同的操作系统能够彼此分享数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据 是在类Unix系统间实现磁盘文件共享的一种方法 NFS的基本原则是 允许不同的客户端及服务端通过一组RPC分享相同的文件系统 它是独立于操作系统,允许不同硬件及操作系统的系统共同进行文件的分享 RPC服务,主要是NFS共享时候负责通知客户端,服务器的NFS端口号是什么的,是一个中间服务。
3.NFS的优点
节省本地储存空间,将常用的数据存在放一台NFS服务器上,且可以通过网路访问,那么本地终端将可以减少自身储存空间的使用 用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上且可以在网络上被使用 一些存储设备如软驱,CDROM和Zip(高储存密度的磁盘驱动器与磁盘)等都可以在网络上被别的机器使用 可以减少整个网络中可移动介质设备的数量
4.实验环境搭建
开启desktop和server虚拟机
分别配置网络,yum源,更改主机名,desktop 172.25.254.115做客户端,server172.25.254.215做服务端
在server上搭建NFS服务器
搭建nfs服务器,使nfs服务器的目录可以挂载在客户端本地,并且可以在本地修改
yum install -y nfs-utils 安装nfs服务
systemctl start nfs-server
在火墙中加入nfs服务
别忘记添加rpc-bind和mountd服务否则还是不能使用nfs服务
nfs服务器自动挂载和自动卸载
以下所有操作都在客户端进行
yum install antofs -y 安装可以实现自动挂载文件系统的服务
systemctl start autofs 开启服务 systemctl enable autofs 设置开机启动
从开启了autofs这个服务后,系统就有/net这个目录
ls发现什么都没有 cd 172.25.254.215进入服务器 ls 能够看到172.25.254.215共享的/westos_nfs目录
cd westos_nfs df 发现已经自动挂载
cd 出去,df依然挂载,没有自动卸载,原因:因为配置文件中写的默认停留时间是300s
vim /etc/sysconfig/autofs修改停留时间为3s
重启autofs服务 再次cd进入/net/172.25.254.215/westos_nfs 然后cd 出,等待3秒,发现自动卸载了
如何改变自动挂载的目录,不想在/net下自动挂载
在客户端115上,想将服务端共享的目录/westos_nfs自动挂载到/mnt/yty目录下,如何实现?
cd /mnt/yty 可见是不存在的
vim /etc/auto.master 编辑自动挂载的主策略文件
/mnt为目的挂载目录的上一级目录,/etc/auto.nfs为子策略文件
编辑子策略文件 /etc/auto.nfs
yty为最终挂载目录,172.25.254.215:/westos_nfs为挂载源地址
systemctl restart autofs 重启服务
在客户端测试
退出3秒后,自动卸载
cd /mnt/yty 再次挂载 mount 查看挂载类型
可以看出是读写挂载,vers=4,如何设置自动挂载类型?
vim /etc/auto.nfs
重启服务
cd /mnt/yty 可以看到已经改变挂载类型ro只读挂载和vers=3
配置nfs服务器
在服务端215
在server中创建一个/westos_nfs目录作为共享目录,在/westos_nfs中创建文件
编辑nfs的配置文件,/etc/exports,/westos_nfs *(sync) 表示将/westos_nfs这个目录共享给所有客户
exportfs -rv 表示刷新查看共享目录
重启nfs-server服务
在客户端115
yum install nfs-utils -y 安装可以使用nfs的软件 showmount -e 172.25.254.215查看远程共享的文件
可以看到/westos_nfs
mount /172.25.254.215:/westos_nfs /mnt 挂载到本地
尝试去建立一个file4,发现不能建立,因为是只读
umount /mnt 卸载
在服务端215
vim /etc/exports 修改成为读写方式共享
exportfs -rv 刷新
在115客户端
这时候已经是读写分享了,卸载再挂载,再次touch file4 发现报错变了,变成了权限不允许
这时候是服务允许了,但是文件系统不允许,在服务端215给一个777的权限/westos_nfs,这时候再次touch file4 就成功建立了
ll 发现客户端root用户上传默认是以nfsnobody 匿名用户上传
回到215服务端
vim /etc/exports
anonuid=1001,anongid=1001,意思为,指定客户端的用户身份(uid,gid)为服务端已经存在的用户身份,身份是服务端的身份,和客户端无关。 exportfs -rv 刷新
在客户端115
卸载,再次挂载,创建文件file5 发现file5的所属用户是1001,所属组也是1001
在客户端显示的是1001,但是在服务端,显示的是westos,因为1001用户是服务端的westos用户
在215服务端
vim /etc/exports
exportsfs -rv 刷新
在客户端
卸载,挂载,然后建立file6,发现所属用户和用户组都是root
no_root_squash这个参数表示,当客户端使用超级用户挂载时,不转换身份,身份仍是超级用户
在服务端
vim /etc/exports
exportfs -rv 刷新
在客户端
卸载,挂载,创建file7
发现file7的所属用户和组又成了1001,all_squash表示,转变所有客户端的用户身份为服务器用户(指定的用户,此处为1001)
在115客户端
用vim /etc/master主策略文件和vim /etc/auto.nfs子策略文件将215上的/westos_nfs重新自动挂载到/mnt/yty目录下 umount /mnt su - student 挂载,创建file8
发现用student用户创建的文件file8也属于服务端的1001
在服务端查看
ll /westos_nfs file9属于westos用户