Linux下的共享文件系统服务NFS(Network File System)

本文介绍NFS(网络文件系统)的概念、优势及搭建过程,包括服务器与客户端配置、自动挂载与卸载策略,以及权限管理技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、NFS的基本概念

1、定义

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

  • 功能: 可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。

2、NFS的好处

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

二、搭建NFS系统

在ip=172.25.254.125虚拟机上搭建nfs文件系统,服务器
(1)yum install nfs-utils 安装服务

在这里插入图片描述

在这里插入图片描述

(2)vim /etc/exports 编辑该服务的配置文件,写入
/mnt 172.25.254.125/24(ro,sync)

  • man 5 exports 可查看这个文件里面的书写格式

在这里插入图片描述

(3)exportfs -rv 刷新
在这里插入图片描述
(4)systemctl status nfs-server 查看服务是否开启
systemctl start nfs-server 开启服务器的nfs服务

在这里插入图片描述
在客户端

(5) yum install nfs-utils -y
(6) showmount -e 172.25.254.125 快速查看125远程服务器共享出来的东西

错误,因为服务端防火墙打开
在这里插入图片描述

(7)服务端 ,关闭防火墙
systemctl status firewalld
systemctl stop firewalld

  • 如果不关闭防火墙,除添加nfs服务外,还要添加rpc-bind和mountd服务,否则还是不能使用nfs服务

在这里插入图片描述

在客户端
(8) showmount -e 172.25.254.125 快速查看125远程服务器共享出来的东西,正确

在这里插入图片描述
(9)mount 172.24.254.125:/mnt/ /mnt/ 挂载服务端的目录到本地
在这里插入图片描述

三、NFS服务器自动挂载和卸载

  • 前面当一个用户注册信息的时候放在一台主机里面,当主机坏了,这个用户就登陆不了,当由有多个用户分别对应多台主机的时候,每个用户的信息都在自己的服务器里面放着,但是这样很不好,当其中一个服务器挂了,那个主机的信息就没了,实际在企业当中,主机系统和存储数据是分离的,客户通过主机注册系统,然后放到存储数据的地方,每台主机和存储设备相连但是当主机不用的时候,没有必要和存储系统连接,浪费资源。
  • 现在想实现客户端用的时候自动挂载,不用的时候自动卸载。
  • 集群:具有相同功能的一群主机

3.1 自动挂载和卸载在默认目录/net

所有操作都在客户端进行

(1)yum install autofs -y 安装可以实现自动挂载文件系统的服务
在这里插入图片描述

(2)开启服务,设置开机启动
systemctl start autofs
systemctl enable autofs
设置开机启动

  • 开启autofs这个服务后,系统就会有/net这个目录
    在这里插入图片描述

(3)vim /etc/sysconfig/autofs 更改退出目录时自动卸载的时间,默认为300s,更改为3秒,重启服务 systemctl restart autofs.services

在这里插入图片描述
在这里插入图片描述

(4)cd /net/172.25.254.125/mnt
df 查看,自动挂载
cd 退出
df 查看,已经自动卸载

在这里插入图片描述

3.2 自动挂载和卸载在自定义目录

  • 改变挂载策略,将服务端的目录挂载到客户端我想挂载的任何目录上,实际上此挂载点目录是不存在的

(1)mkdir /westos_nfs2 建立共享目录
(2)在/etc/exports文件中写入 共享目录,读写同步

 /westos_nfs2   *(sync)或  *(rw,sync) 

在这里插入图片描述

在这里插入图片描述
(3)exportfs -rv 刷新

在这里插入图片描述

所有操作都在客户端进行

(1)yum install autofs -y 安装可以实现自动挂载文件系统的服务
在这里插入图片描述

(2)开启服务,设置开机启动
systemctl start autofs
systemctl enable autofs
设置开机启动

在这里插入图片描述
(3)vim /etc/sysconfig/autofs 更改退出目录时自动卸载的时间,默认为300s,更改为3秒,重启服务 systemctl restart autofs.services

在这里插入图片描述
在这里插入图片描述
(2)vim /etc/auto.master 主策略文件
写入:/mnt/ranran /etc/auto.nfs2 挂载点的上级目录 子策略文件
在这里插入图片描述

在这里插入图片描述
(3)==vim /etc/auto.nfs2= 编辑子策略文件
写入:xixi 172.25.254.125:/westos_nfs2 最底层挂载点目录 服务端的共享目录(ip:共享目录)

在这里插入图片描述

(4)systemctl restart autofs 重启服务
(5)cd /mnt/ranran/xixi 进入即自动挂载
df 查看,自动挂载
cd 退出
df 查看,已经自动卸载

在这里插入图片描述
mount,看出是读写挂载,vers=4,如何设置自动挂载类型?

==vim /etc/auto.nfs2= 编辑子策略文件
写入:xixi -ro,vers=3 172.25.254.125:/westos_nfs2 最底层挂载点目录挂载类型,版本 服务端的共享目录(ip:共享目录)

在这里插入图片描述
在这里插入图片描述

3.3 更改 /etc/exports文件参数设置客户端

(1)在/mnt/ranran/xixi下查看挂载情况,mount发现是只读ro ,此时现在子策略文件中 /etc/auto.nfs2更改为读写挂载rw,但是建立一个文件,报错发现是只读挂载, 这是因为 :客户端的用户无法获得服务端超级用户的读写权限,这里的读写是针对服务端的超级用户。

在这里插入图片描述

在这里插入图片描述

(2)在服务端vim /etc/exports 修改成为读写方式共享,让客户端可以建立和删除文件

/westos_nfs2     *(rw,sync)

在这里插入图片描述
(3)在服务端 exportfs -rv 刷新
在这里插入图片描述

(4)此时,在客户端,建立文件,报错改变了,变为权限不允许。
这是因为: 服务允许了,但是文件系统不允许

在这里插入图片描述
(5)** 在服务端 ** 给共享目录/westos_nfs2满权限 chmod 777 /westos_nfs2/
在这里插入图片描述

(6)此时,在客户端,建立文件file1 ==touch file1=,发现客户端root用户上传文件默认是以 nfsnobody 匿名用户上传

在这里插入图片描述

(7)在服务端vim /etc/exports 指定客户端匿名用户上传文件的身份(uid,gid)为服务端已经存在的用户身份,身份是服务端的身份,和客户端无关。

   /westos_nfs2     *(rw,sync,anonuid=1001,anongid=1001)

在这里插入图片描述

在这里插入图片描述

(8)此时,在客户端,建立文件file2 ==touch file2=,此时发现file2的所属用户是1001,所属组也是1001

在这里插入图片描述

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

在这里插入图片描述

在客户端,客户端root上传文件,但是文件的所属用户和组都是普通用户,这是因为客户端超级用户默认会发生身份转化。

(10)在服务端vim /etc/exports 设定参数 no_root_squash,仅针对root用户,root用户默认不发生身份转换,当客户端使用超级用户挂载时,不转换身份,身份仍是超级用户。

   /westos_nfs2     *(rw,sync,anonuid=1001,anongid=1001, no_root_squash)

在这里插入图片描述
在这里插入图片描述

(11)此时,在客户端, 建立文件file3 touch file3,此时发现file3的所属用户是root,所属组也是root

在这里插入图片描述

(12)在服务端vim /etc/exports 设定参数 all_squash表示,转变所有客户端的用户身份为服务器用户,all_squash 也就是说不管客户端是以什么样的身份来进行访问的,都会被压缩成为anonuid、anongid 指定的id 客户端访问服务端默认是使用nfsnobody这个用户来进行访问的。服务器默认共享时,也是加上了all_squash这个参数。

/westos_nfs2     *(rw,sync,anonuid=1001,anongid=1001, all_squash)

在这里插入图片描述
在这里插入图片描述
(13)此时,在客户端,切换到student用户,建立文件file4 touch file4,此时发现file4的所属用户是1001,所属组也是1001(指定的用户,此处为1001)

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值