Linux下共享文件系统的服务 —— NFS网络文件系统共享服务

什么是NFS

NFS(Network File
System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间共享资源。简单来说,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

  • 文件系统属于内核空间里面的,内核调用到内存当中使用
  • 文件系统是磁盘在内核上面的一个映射
  • 把远程主机的东西挂载到本地,直接在本地修改,并且同步到远程主机上面

使用共享文件系统的好处

节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。
用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上且可以在网络上被访问使用。
一些存储设备如软驱、CDROM和Zip(一种高储存密度的磁盘驱动器与磁盘)等都可以在网络上被别的机器使用。这可以减少整个网络上可移动介质设备的数量。

搭建NFS共享文件系统服务

实验开始之前准备两台虚拟机 ,规定服务端ip为172.25.254.102,客户端ip为172.25.254.202

在服务端

yum install nfs-utils ##安装服务
systemctl start nfs-server ##开启服务
mkdir /haha ##建立一个共享目录
vim /etc/exports ##编辑该服务的配置文件
/haha * (sync)  ##共享目录/haha 允许所有主机访问
exportfs -rv ##刷新
firewall-cmd --permanent --add-service=rpc.bind ##允许服务通过火墙
firewall-cmd --permanent --add-service=mountd
firewall-cmd --permanent --add-service=nfs
firewall-cmd --reload ##加载
rpc.bind 访问这个服务有没有共享
mountd 访问这个服务共享在那里
nfs 询问这个服务是否允许访问共享资源(是nfs共享的资源

安装服务 开启服务
Linux下共享文件系统的服务 —— NFS网络文件系统共享服务_第1张图片
Linux下共享文件系统的服务 —— NFS网络文件系统共享服务_第2张图片

允许服务通过火墙
Linux下共享文件系统的服务 —— NFS网络文件系统共享服务_第3张图片
编辑配置文件 设置分享目录 刷新
Linux下共享文件系统的服务 —— NFS网络文件系统共享服务_第4张图片

在服务端我们在分享目录下建立几个文件建立
Linux下共享文件系统的服务 —— NFS网络文件系统共享服务_第5张图片

在客户端

showmount -e 172.25.254.102 ##快速查看102远程服务器共享出来的东西

在这里插入图片描述

mount 172.25.254.102:/haha /mnt

手动在客户端挂载分享出来的目录 (客户端这样就可以操作远程服务器的资源)
Linux下共享文件系统的服务 —— NFS网络文件系统共享服务_第6张图片

autofs+NFS形成智能的挂载组合

企业当中的系统存储分离

(集群:具有相同功能的一群主机)

案例: 当一个用户注册的时,会将该用户的信息放在一台主机里面,这个主机如果出现故障,这个用户就无法登陆服务, 当有多个用户分别对应多台主机的时候,每个用户的信息都在自己的服务器里面放着,当其中一个服务器挂了,那个主机的信息就没了。
实际在企业当中,主机系统和存储数据是分离的,客户通过主机注册后,主机系统会将客户信息放到存储数据的地方, 每台主机和存储设备相连, 但是当主机不用的时候,没有必要和存储系统连接,浪费资源, 现在想实现客户端用的时候自动挂载,不用的时候自动卸载,就可以使用智能挂载组合

yum install autofs -y ##下载软件autofs  

Linux下共享文件系统的服务 —— NFS网络文件系统共享服务_第7张图片

vim /etc/sysconfig/autofs  ##编辑软件配置文件(7.0版本时配置文件) /etc/autofs.conf(7.3)版本的配置文件

设定退出默认挂载目录之后3秒 卸载
Linux下共享文件系统的服务 —— NFS网络文件系统共享服务_第8张图片
当没有启动服务时 是没有默认挂载目录的

在这里插入图片描述

systemctl start  nfs
systemctl start autofs
cd /net/172.25.254.102/haha  ##默认挂载目录 /net/服务端ip/分享目录名称

启动服务后可以进入默认挂载目录 默认挂载目录下有之前我们建立的文件

Linux下共享文件系统的服务 —— NFS网络文件系统共享服务_第9张图片
当进入到默认挂载目录时 分享目录才会被挂载

Linux下共享文件系统的服务 —— NFS网络文件系统共享服务_第10张图片

当退出挂载目录之后 等待3秒 自动卸载
Linux下共享文件系统的服务 —— NFS网络文件系统共享服务_第11张图片

自定义挂载点

在客户端

默认挂载点是在/net/服务端ip/分享文件名称

现在我们要将/haha目录自动挂载到/mnt/westos目录上

vim /etc/auto.master 
/mnt    /etc/nfs
/mnt 最终挂载点的上层目录
/etc/nfs 子策略文件
vim /etc/nfs ##编辑子策略文件
westos -ro,vers=3  172.25.254.102:/haha
westos 最终挂载点
-ro 只读挂载(读写挂载)
vers=3 设定nfs版本为3(默认挂载nfs4版本)
172.25.254.102:/haha 挂载设备及分享文件路径
systemctl restart autofs ##重启服务
 mount ## 查看挂载详情

测试
在客户端进入挂载点 cd /mnt/westos
df ##可以观察到挂载的目录是/mnt/westos

注意:当自定义挂载目录为/mnt/lee/nfs 最终挂载点的上层目录为/mnt/lee
当最终挂载点的上层目录相同时 子策略文件可以是同一个

编辑策略文件
在这里插入图片描述
编辑子策略文件
在这里插入图片描述
重启服务

测试 成功挂载到/mnt/westos下

Linux下共享文件系统的服务 —— NFS网络文件系统共享服务_第12张图片

查看挂载信息是否修改

在这里插入图片描述

参数的设定

NFS 实现网络文件系统共享服务时,会同步客户端和服务器的内存中的数据和硬盘中的数据

两种 数据同步方式
sync 效率高 完成所有任务之后在做数据同步
async 数据同步稳定 实时同步

在服务端
vim /etc/exports
/haha *(sync) 172.25.254.202(rw,anonuid=1003,anongid=1003,no_root_squash)
exportfs -rv

anonuid= 匿名用户uid设定 建立的文件所有人就是该ip在客户端ip对应的用户
anongid= 匿名用户gid设定 建立的文件所有人就是该ip在客户端ip对应>的用户
no_root_squash 客户端当前身份是超级用户 并且挂载分享目录 建立的文件所有人就是超级用户不做身份转换
all_squash 客户端当前身份是普通用户 并且挂载分享目录 建立的文件所有人要做身份转换的话还要在匿名用户id设定之后加上这个参数 否则身份不会转化

man 5 exports 查看命令的 使用
Linux下共享文件系统的服务 —— NFS网络文件系统共享服务_第13张图片

在客户端

这个实验我们通过改变在服务端的参数设定 来看客户端的变化

1.读写参数设定

服务端 基础设定允许所有访问/haha这个分享的目录
设定给客户端202 读写挂载 编辑完成后刷新
在这里插入图片描述
Linux下共享文件系统的服务 —— NFS网络文件系统共享服务_第14张图片
在202客户端 尝试在共享目录下建立文件 报错只读挂载
Linux下共享文件系统的服务 —— NFS网络文件系统共享服务_第15张图片
查看挂载详情 是只读挂载 因为之前子策略文件中编辑的该文件是只读挂载
在这里插入图片描述在这里插入图片描述

当更改挂载为读写之后 再次建立文件 报错这个请求被拒绝
在这里插入图片描述
在这里插入图片描述

因为该共享目录只给了超户写的权限 所以我们在服务端给与其他人写的权限 回到客户端再建立文件就可以建立了(虽然客户端当前身份是超级用户 但是对于服务端来说只是其他人 客户端是没有服务端超户的身份)
在这里插入图片描述
在这里插入图片描述

2.参数设定——匿名用户UID GID设定

在客户端我们建立文件是可以查看文件的所有人和所有组都是 nfsnobody
Linux下共享文件系统的服务 —— NFS网络文件系统共享服务_第16张图片
回到服务端我们查看一下用户lee的id
在这里插入图片描述

我们在服务端设定202虚拟机 匿名用户UID GID设定为1003
在这里插入图片描述
在客户端建立文件4 查看属性 该文件的所有人和所有组为1003(因为在客户端1003没有对应的用户 所以直接显示id 如果客户端的1003对应的用户为westos 那么所有人所有组就会显示westos)
Linux下共享文件系统的服务 —— NFS网络文件系统共享服务_第17张图片
3.参数设定——对于超级用户不做身份转换

在服务端编辑超户不转换身份
在这里插入图片描述

在客户端当前用户身份是root 建立文件用户身份是root

Linux下共享文件系统的服务 —— NFS网络文件系统共享服务_第18张图片

当我们在客户端切换为普通用户身份时,我们参数中没有设定普通用户不转换身份,但是建立文件的所有人和所有组却没有改变,依旧是当前的普通用户
Linux下共享文件系统的服务 —— NFS网络文件系统共享服务_第19张图片
添加参数 all_squash 之后再在客户端普通用户中建立文件 用户身份发生转变

注意:每次在服务端中更改参数,都要刷新

你可能感兴趣的:(Linux下共享文件系统的服务 —— NFS网络文件系统共享服务)