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.72.100做客户端,server172.25.72.200做服务端
在server上搭建NFS服务器
搭建nfs服务器,使nfs服务器的目录可以挂载在客户端本地,并且可以在本地修改
yum install -y nfs-utils 安装nfs服务
在火墙中加入nfs服务
在火墙中加入nfs服务
添加rpc-bind和mountd服务否则还是不能使用nfs服务
nfs服务器自动挂载和自动卸载
以下所有操作都在客户端进行
vim /etc/exports编辑该服务的配置文件
/mnt 172.25.72.0/24(ro,sync)
表示将这台nfs服务器的/mnt这个目录挂载在本地这个网段的任何一个主机上面,并且只读,而且同步
yum install antofs -y 安装可以实现自动挂载文件系统的服务
systemctl start autofs 开启服务
systemctl enable autofs 设置开机启动
从开启了autofs这个服务后,系统就有/net这个目录
ls发现什么都没有
cd 172.25.72.200进入服务器
ls 能够看到172.25.72.200共享的/mnt目录
cd mnt
df 发现已经自动挂载
cd 出去,df依然挂载,没有自动卸载,原因:因为配置文件中写的默认停留时间是300s
vim /etc/sysconfig/autofs修改停留时间为3s
重启autofs服务
再次cd进入/net/172.25.254.215/mnt
然后cd 出,等待3秒,发现自动卸载了
如何改变自动挂载的目录,不想在/net下自动挂载
在客户端100上,想将服务端共享的目录/mnt自动挂载到/mnt/tian目录下,如何实现?
vim /etc/auto.master 编辑自动挂载的主策略文件
/mnt为目的挂载目录的上一级目录,/etc/auto.nfs为子策略文件
编辑子策略文件 /etc/auto.nfs
yty为最终挂载目录,172.25.72.200:/mnt为挂载源地址
systemctl restart autofs 重启服务
在客户端测试
退出3秒后,自动卸载
cd /mnt/yty 再次挂载
mount 查看挂载类型
可以看出是读写挂载,vers=4,如何设置自动挂载类型?
vim /etc/auto.nfs
cd /mnt/tian 可以看到已经改变挂载类型ro只读挂载和vers=3
配置nfs服务器
在服务端200
在server中创建一个/westos_nfs目录作为共享目录,在/westos_nfs中创建文件
编辑nfs的配置文件,/etc/exports,/westos_nfs *(sync) 表示将/westos_nfs这个目录共享给所有客户
exportfs -rv 表示刷新查看共享目录
重启nfs-server服务
在客户端100
yum install nfs-utils -y 安装可以使用nfs的软件
showmount -e 172.25.72.200查看远程共享的文件
可以看到/westos_nfs
mount /172.25.72.200:/westos_nfs /mnt 挂载到本地
尝试去建立一个file4,发现不能建立,因为是只读
umount /mnt 卸载
在服务端200
vim /etc/exports 修改成为读写方式共享
exportfs -rv 刷新
在100客户端
这时候已经是读写分享了,卸载再挂载,再次touch file4 发现报错变了,变成了权限不允许
这时候是服务允许了,但是文件系统不允许,在服务端200给一个777的权限/westos_nfs,这时候再次touch file4 就成功建立了
ll 发现客户端root用户上传默认是以nfsnobody 匿名用户上传
回到200服务端
vim /etc/exports
anonuid=1001,anongid=1001,意思为,指定客户端的用户身份(uid,gid)为服务端已经存在的用户身份,身份是服务端的身份,和客户端无关。
exportfs -rv 刷新
在客户端100
卸载,再次挂载,创建文件file5
发现file5的所属用户是1001,所属组也是1001
在客户端显示的是1001,但是在服务端,显示的是westos,因为1001用户是服务端的westos用户
在200服务端
vim /etc/exports
exportsfs -rv 刷新
在客户端
卸载,挂载,然后建立file6,发现所属用户和用户组都是root
no_root_squash这个参数表示,当客户端使用超级用户挂载时,不转换身份,身份仍是超级用户
在服务端
vim /etc/exports
exportfs -rv 刷新
在客户端
卸载,挂载,创建file7
发现file7的所属用户和组又成了westos,all_squash表示,转变所有客户端的用户身份为服务器用户(指定的用户,此处为westos)
在100客户端
用vim /etc/master主策略文件和vim /etc/auto.nfs子策略文件将200上的/westos_nfs重新自动挂载到/mnt/tian目录下
umount /mnt
su - student
挂载,创建file8
在服务端查看
ll /westos_nfs file8属于westos用户