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服务

mount nfs版本 mount nfs noac_mount nfs版本

在火墙中加入nfs服务

mount nfs版本 mount nfs noac_mount nfs版本_02

在火墙中加入nfs服务

mount nfs版本 mount nfs noac_服务器_03

添加rpc-bind和mountd服务否则还是不能使用nfs服务

mount nfs版本 mount nfs noac_客户端_04

nfs服务器自动挂载和自动卸载
以下所有操作都在客户端进行

vim /etc/exports编辑该服务的配置文件

mount nfs版本 mount nfs noac_客户端_05

mount nfs版本 mount nfs noac_客户端_06

/mnt 172.25.72.0/24(ro,sync)
表示将这台nfs服务器的/mnt这个目录挂载在本地这个网段的任何一个主机上面,并且只读,而且同步

mount nfs版本 mount nfs noac_mount nfs版本_07

yum install antofs -y 安装可以实现自动挂载文件系统的服务

mount nfs版本 mount nfs noac_mount nfs版本_08

systemctl start autofs 开启服务
systemctl enable autofs 设置开机启动

mount nfs版本 mount nfs noac_mount nfs版本_09

从开启了autofs这个服务后,系统就有/net这个目录

mount nfs版本 mount nfs noac_客户端_10

ls发现什么都没有
cd 172.25.72.200进入服务器
ls 能够看到172.25.72.200共享的/mnt目录

mount nfs版本 mount nfs noac_客户端_11

cd mnt
df 发现已经自动挂载

mount nfs版本 mount nfs noac_mount nfs版本_12

cd 出去,df依然挂载,没有自动卸载,原因:因为配置文件中写的默认停留时间是300s

mount nfs版本 mount nfs noac_mount nfs版本_13

vim /etc/sysconfig/autofs修改停留时间为3s

mount nfs版本 mount nfs noac_服务器_14

 

mount nfs版本 mount nfs noac_mount nfs版本_15

 

重启autofs服务
再次cd进入/net/172.25.254.215/mnt
然后cd 出,等待3秒,发现自动卸载了

mount nfs版本 mount nfs noac_客户端_16

如何改变自动挂载的目录,不想在/net下自动挂载
在客户端100上,想将服务端共享的目录/mnt自动挂载到/mnt/tian目录下,如何实现?

mount nfs版本 mount nfs noac_服务器_17

vim /etc/auto.master 编辑自动挂载的主策略文件

mount nfs版本 mount nfs noac_客户端_18

mount nfs版本 mount nfs noac_mount nfs版本_19

/mnt为目的挂载目录的上一级目录,/etc/auto.nfs为子策略文件

编辑子策略文件 /etc/auto.nfs

mount nfs版本 mount nfs noac_服务器_20

yty为最终挂载目录,172.25.72.200:/mnt为挂载源地址

systemctl restart autofs 重启服务

在客户端测试

mount nfs版本 mount nfs noac_服务器_21

退出3秒后,自动卸载

mount nfs版本 mount nfs noac_服务器_22

cd /mnt/yty 再次挂载
mount 查看挂载类型

mount nfs版本 mount nfs noac_mount nfs版本_23

可以看出是读写挂载,vers=4,如何设置自动挂载类型?

vim /etc/auto.nfs

mount nfs版本 mount nfs noac_服务端_24

cd /mnt/tian 可以看到已经改变挂载类型ro只读挂载和vers=3

配置nfs服务器
在服务端200
在server中创建一个/westos_nfs目录作为共享目录,在/westos_nfs中创建文件

mount nfs版本 mount nfs noac_客户端_25

编辑nfs的配置文件,/etc/exports,/westos_nfs *(sync) 表示将/westos_nfs这个目录共享给所有客户

mount nfs版本 mount nfs noac_客户端_26

exportfs -rv 表示刷新查看共享目录

mount nfs版本 mount nfs noac_服务器_27

重启nfs-server服务
在客户端100

yum install nfs-utils -y 安装可以使用nfs的软件
showmount -e 172.25.72.200查看远程共享的文件

mount nfs版本 mount nfs noac_服务器_28

可以看到/westos_nfs

mount /172.25.72.200:/westos_nfs /mnt 挂载到本地

mount nfs版本 mount nfs noac_客户端_29

尝试去建立一个file4,发现不能建立,因为是只读

mount nfs版本 mount nfs noac_服务端_30

umount /mnt 卸载

在服务端200

vim /etc/exports 修改成为读写方式共享

mount nfs版本 mount nfs noac_服务器_31

exportfs -rv 刷新

mount nfs版本 mount nfs noac_服务器_32

在100客户端
这时候已经是读写分享了,卸载再挂载,再次touch file4 发现报错变了,变成了权限不允许

 

mount nfs版本 mount nfs noac_服务端_33

这时候是服务允许了,但是文件系统不允许,在服务端200给一个777的权限/westos_nfs,这时候再次touch file4 就成功建立了

mount nfs版本 mount nfs noac_客户端_34

mount nfs版本 mount nfs noac_mount nfs版本_35

ll 发现客户端root用户上传默认是以nfsnobody 匿名用户上传

mount nfs版本 mount nfs noac_mount nfs版本_36

回到200服务端

vim /etc/exports

mount nfs版本 mount nfs noac_客户端_37

anonuid=1001,anongid=1001,意思为,指定客户端的用户身份(uid,gid)为服务端已经存在的用户身份,身份是服务端的身份,和客户端无关。
exportfs -rv 刷新

在客户端100

卸载,再次挂载,创建文件file5
发现file5的所属用户是1001,所属组也是1001

mount nfs版本 mount nfs noac_客户端_38

在客户端显示的是1001,但是在服务端,显示的是westos,因为1001用户是服务端的westos用户

mount nfs版本 mount nfs noac_客户端_39

在200服务端

vim /etc/exports

mount nfs版本 mount nfs noac_服务端_40

exportsfs -rv 刷新

在客户端

卸载,挂载,然后建立file6,发现所属用户和用户组都是root

mount nfs版本 mount nfs noac_服务端_41

no_root_squash这个参数表示,当客户端使用超级用户挂载时,不转换身份,身份仍是超级用户

在服务端

vim /etc/exports

mount nfs版本 mount nfs noac_服务端_42

exportfs -rv 刷新

在客户端

卸载,挂载,创建file7

mount nfs版本 mount nfs noac_服务器_43

发现file7的所属用户和组又成了westos,all_squash表示,转变所有客户端的用户身份为服务器用户(指定的用户,此处为westos)

在100客户端

用vim /etc/master主策略文件和vim /etc/auto.nfs子策略文件将200上的/westos_nfs重新自动挂载到/mnt/tian目录下
 umount /mnt 
 su - student 
 挂载,创建file8

mount nfs版本 mount nfs noac_服务器_44

在服务端查看

ll /westos_nfs file8属于westos用户

mount nfs版本 mount nfs noac_服务端_45