九.访问网络附加存储
1.通过NFS挂载网络附加存储
1.1访问导出的NFS目录
NFS是Linux、UNIX及类似操作系统使用的互联网标准文件共享协议,可以作为本地网络文件系统,像"本地文件系统"一样被访问,允许不同主机通过网络共享文件,同时支持Linux原生的权限管理和文件系统功能;
RHEL9中NFS版本为4.2,全面支持 NFSv4 和 NFSv3 协议,但两者在传输层协议支持上有区别:
NFSv4 仅支持 TCP 协议;
NFSv3支持 TCP 或 UDP 协议。
1.1.1交互逻辑:
(1)NFS服务器:
通过export操作,对外共享目录;
(2)客户端需要
将共享目录****挂载到本地挂载点,****才能访问;
1.1.2依赖软件:
nfs-utils软件包
dnf install nfs-utils
提供 NFS 挂载、服务管理等功能。
1.1.3挂载方式
(1)手动挂载(mount命令,临时)
(2)自动挂载(/etc/fstab配置,持久)
(3)按需挂载
使用autofs服务或systemd.automount功能;
访问时挂载、闲置时卸载,提高资源利用率。
1.2查询服务器导出的NFS目录
协议差异:
从 NFSv3 升级到 NFSv4 时,协议架构有显著变化(如 NFSv4 不再依赖 RPC 协议,整合了更多安全与功能特性)。
1.2.1NFSv3的RPC依赖
NFSv3 基于 RPC 协议工作,服务器需运行 rpcbind 服务 。客户端通过服务器的 111 端口 连接 rpcbind 以请求 NFS 服务,服务器 再通过 NFS 服务的动态端口响应。
使用showmount命令,查询NFSv3服务器的共享目录;
格式:
showmount --exports 服务器IP/主机名
1.2.2NFSv4协议
仅支持NFSv4的服务器上使用showmount命令,会超时且无响应,要查询导出的NFS目录,需要挂载服务器export tree的根目录(/),为所有导出的目录提供可浏览的路径
格式:
创建挂载点:
mkdir -p /public

挂载更目录
mount -t 服务器IP:/目标文件 /挂载点

浏览导出目录
ls /public

1.3挂载NFS共享步骤
(1)查询服务器共享目录
showmount --exports 服务器IP/主机名

(2)在客户端创建本地挂载点
mkdir -p /本地挂载点

(3)挂载操作(必须是root用户)
手动挂载:
mount 服务器IP:/远程共享目录 /本地挂载点

验证:
df -h

自动挂载:
echo \
"服务器IP:/远程共享目录 /本地挂载点 nfs defaults 0 0" \
>> /etc/fstab

验证:
mount -a
无输出则生效成功,再次通过"df -h"命令查看挂载。
1.4卸载NFS共享
root用户身份,使用umount命令卸载NFS共享;

注:
取消挂载时,先确认挂载点不在使用中
2.自动挂载网络附加存储
2.1使用自动挂载器挂载NFS共享
自动挂载器是一个系统服务(autofs),其核心功能是"按需自动挂载" NFS 共享------ 当用户访问某个 NFS 共享的挂载点时,autofs会自动完成挂载操作;当该共享长时间闲置时,又会自动卸载,释放网络和系统资源。
2.1.1优势:
(1)无需root特权即可执行挂载/卸载;
(2)多用户可以共享且受权限约束;
autofs在客户端配置的NFS共享,可供所有用户使用,受到访问权限的约束。
(3)节约资源,无需永久连接;
需访问时挂载,闲置时卸载。
(4)仅需要配置客户端,服务端无依赖;
(5)兼容mount命令选项;
(6)autofs支持两种挂载点映射方式;
直接挂载点映射:
挂载点与NFS共享路径直接对应。
间接挂载点映射:
autofs自动创建/删除挂载点,避免用户手动管理。
(7)适配多种网络文件系统;
默认支持NFS,也可以扩展自动挂载SMB、NFv4等网络文件系统。
2.1.2图解

2.2创建自动挂载步骤
(1)安装autofs软件包
dnf install autofs

(2)配置主映射文件/etc/auto.master
该文件确定了,挂载点的基础目录,和用于创建自动挂载的映射文件;
格式:
基础目录 映射文件 选项
如:
vim /etc/auto.master
/shares /etc/auto.demo

解释:
/shares:
本地基础目录,即自动挂载的根目录,当访问/shares下的子目录时,autofs会根据映射文件自动挂载
/etc/auto.demo:
映射文件,该文件包含了在/shares目录下各个子目录的挂载信息
注:
主映射文件名称任意,但必须以".autofs"作为扩展名;(如/etc/auto.master.d/ABC.autofs)
为间接映射的挂载添加主映射条目,基础目录使用绝对路径。
(3)配置间接映射文件/etc/auto.demo
每个映射文件确定一组自动挂载的挂载点、挂载选项及挂载位置;
格式:
挂载点 挂载选项 NFS服务器:/共享目录
如:
vim /etc/auto.demo
work -rw,sync serverb:/shares/work

work:
/shares/work是挂载点,autofs服务根据需要创建和删除/shares目录和/shares/work目录;
(3)启动并启用自动挂载器服务
systemctl enable --now autofs


(4)测试自动挂载
服务配置的挂载点(如/shares/work),触发自动挂载后,通过mount命令查看挂载状态;
mount | grep 挂载点

2.3直接映射
直接映射是指挂载点与 NFS 共享的路径直接对应,配置在/etc/auto.direct文件中,本地访问的路径,就是 NFS 服务端共享目录的 "镜像路径"。
格式:
本地绝对路径挂载点 挂载选项 NFS服务器:/共享目录
如:
创建直接映射专属文件 /etc/auto.direct
vim /etc/auto.direct
/data/share1 挂载选项 server:/shares/share1


注:
映射与间接映射可共存,共用主映射文件 /etc/auto.master,互不影响;
若没有/etc/auto.master,参考2.2部分的创建。
2.4间接通配符映射
当NFS服务器导出一个目录中的多个子目录时,可将autofs配置为使用单个映射条目访问这些子目录其中任何一个;
即:
通过autofs的一个包含通配符"*"和变量"&"的单一配置条目,来动态地、按需地挂载一个NFS服务器父目录下的所有子目录。
它提供了一种可扩展的、维护成本极低的共享方式,客户端配置一次即可适应服务器端共享目录的增减变化。
格式:
* 挂载选项 NFS服务器:/共享目录
如:
vim /etc/auto.demo
* -re,soft serverb:/shares/&

2.5其他方法
通过 /etc/fstab 配置并生成 systemd.automount 单元
systemd 可自动识别 /etc/fstab 中带 x-systemd.automount 选项的条目,生成对应的自动挂载单元文件。
注:
对比安装和配置autofs服务更简单,但此方法只支持直接映射
2.5.1单元命名规则
基于挂载点路径,将路径中的 / 替换为 -。
如:
挂载点/remote/finance → 单元名 remote-finance.automount

挂载点/mnt/demo → 单元名 mnt-demo.automount

2.5.2一般步骤
(1)编辑/etc/fstab文件(vim /etc/fstab)
格式:
远程共享 挂载点 文件系统 x-systemd.automount 其他选项(0 0)
如:
serverb.com:/public /data nfs x-systemd.automount 0 0

(2)重启systemd进程来生成单元文件
systemctl daemon-reload

(3)启用automount单元(/mnt/demo挂载点为例)
systemctl start mnt-demo.automount

3.总结
服务端servera ------------共享目录/public
客户端serverb ------------挂载点/data------间接映射:/mnt/autofs/data
3.1服务端前置配置
(1)安装软件包
dnf install autofs

(2).服务端配置
vim /etc/exports
/public rw,sync 客户端的IP
#共享目录 #选项 #serverb的IP

(3)启用服务端NFS新配置并启动NFS服务
systemctl enable --now nfs-server

3.2客户端自动挂载配置
创建自动挂载器;
3.2.1直接映射
创建主映射文件
vim /etc/auto.master.d/A.autofs
/data /etc/auto.A
#挂载点 #映射文件

创建映射文件

3.2.2间接映射
(1)创建主映射文件(同上);
(2)创建间接映射文件
最终挂载点------------/mnt/autofs/data
父触发目录------------/mnt/autofs

3.2.3启用并启动autofs服务

3.3测试自动挂载
(1)直接映射测试

验证:
mount | grep /data


(2)间接映射测试

验证
mount | grep /mnt/autofs/data
