【九、Linux访问网络附加存储】
九、Linux访问网络附加存储
- 1. 通过 NFS 挂载网络附加存储
- 1.1 访问导出的 NFS 目录
- 1.2 查询服务器的导出 NFS 目录
- 1.3 挂载 NFS 共享三步骤
- 1.4 卸载 NFS 共享
- 2. 自动挂载网络附加存储
- 2.1 自动挂载 NFS 共享(autofs 服务)
- 2.2 创建自动挂载的步骤(autofs)
- 2.3 直接映射(autofs)
- 2.4 间接通配符映射(autofs)(重要)
- 2.5 其他自动挂载方法(systemd.automount)
1. 通过 NFS 挂载网络附加存储
1.1 访问导出的 NFS 目录
-
NFS 协议核心特性:
- 互联网标准协议,适用于 Linux、UNIX 及类似操作系统,可作为本地网络文件系统,支持 Linux 本地权限和文件系统功能。
- RHEL 9 中 NFS 版本为 4.2,全面支持 NFSv4 和 NFSv3 协议:
- NFSv4:仅支持 TCP 协议,无需依赖传统 RPC 协议。
- NFSv3:支持 TCP 或 UDP 协议,依赖 RPC 协议。
- 工作原理:NFS 服务器通过“导出(export)”共享目录,NFS 客户端将共享目录挂载到本地挂载点,实现“本地访问远程文件”的效果。
-
基础依赖安装:需安装
nfs-utils软件包以支持 NFS 挂载,命令如下:[root@host-]# dnf install nfs-utils -
NFS 共享挂载方式:
- 手动挂载:使用
mount命令临时挂载。 - 开机自动挂载:编辑
/etc/fstab文件配置永久挂载。 - 按需挂载:通过
autofs服务或systemd.automount功能,仅在访问时挂载。
- 手动挂载:使用
1.2 查询服务器的导出 NFS 目录
NFSv3 与 NFSv4 协议的查询方式差异较大,需根据服务器支持的版本选择对应方法:
1. 查询 NFSv3 服务器导出目录
- NFSv3 依赖 RPC 协议,服务器需运行
rpcbind服务(监听端口 111),客户端通过showmount命令查询:[root@host-]# showmount --exports <服务器地址/主机名> # 示例输出: Export list for server /shares/test1 /shares/test2
2. 查询 NFSv4 服务器导出目录
- NFSv4 不依赖 RPC 协议,服务器无需运行
rpcbind服务,showmount命令会超时;需通过“挂载服务器 export tree 根目录”查看所有导出目录:1.创建本地挂载点 [root@host-]# mkdir /mountpoint2. 挂载 NFSv4 服务器的根目录(/) [root@host-]# mount <服务器地址/主机名>:/ /mountpoint3. 浏览挂载点,查看所有导出目录 [root@host-]# ls /mountpoint
1.3 挂载 NFS 共享三步骤
步骤1:识别可用 NFS 共享
客户端管理员可通过以下方式确认可用共享:
- NFSv3:
showmount --exports <服务器>。 - NFSv4:挂载服务器根目录后浏览。
- 管理员文档或运维通知。
步骤2:创建本地挂载点
使用 mkdir 命令创建空目录作为挂载点(目录需不存在或为空):
[root@host-]# mkdir /mnt/nfs_share # 示例挂载点
步骤3:执行挂载(临时/永久)
-
临时挂载:使用
mount命令,仅当前会话有效,重启后失效。语法:mount -t nfs -o <挂载选项> <服务器:/共享目录> <本地挂载点> [root@host-]# mount -t nfs -o rw,sync serverb:/shares /mnt/nfs_share选项说明:rw(读写权限)、sync(同步写入,数据实时落盘) ls -l /mnt/nfs_share:列出已挂载NFS导出的内容 -
永久挂载:编辑
/etc/fstab文件,实现开机自动挂载。1. 编辑 /etc/fstab [root@host-]# vim /etc/fstab2. 添加以下条目(格式:服务器:/共享目录 本地挂载点 文件系统 选项 0 0) serverb:/shares /mnt/nfs_share nfs rw,soft 0 0选项说明:rw(读写)、soft(连接超时后返回错误,避免无限等待)3. 测试挂载(无需重启,加载 /etc/fstab 新配置) [root@host-]# mount -a
1.4 卸载 NFS 共享
- 操作前提:确保挂载点未被使用(可通过
fuser -m /mnt/nfs_share查看占用进程,用kill终止后卸载)。 - 卸载命令:以 root 身份或使用
sudo执行umount命令:[root@host-]# umount /mnt/nfs_share 按挂载点卸载 或按设备卸载(需先通过 df 查看设备路径) [root@host-]# df -h | grep nfs # 查看 NFS 挂载对应的设备 [root@host-]# umount /dev/mapper/... # 按设备路径卸载
2. 自动挂载网络附加存储
2.1 自动挂载 NFS 共享(autofs 服务)
1. 自动挂载器核心作用
自动挂载器(autofs 服务)可“按需挂载”NFS 共享:仅当用户访问挂载点时自动挂载,闲置一段时间后自动卸载,避免资源浪费。
2. autofs 优势
- 无需 root 特权:普通用户也可触发挂载/卸载(受权限约束)。
- 资源优化:不占用永久网络连接和系统资源,闲置时自动释放。
- 配置便捷:仅需在客户端配置,无需修改服务器设置。
- 兼容性强:支持 NFS 及其他网络文件系统,挂载选项与
mount命令一致。 - 挂载点自动管理:间接映射场景下,autofs 自动创建/删除挂载点目录。
2.2 创建自动挂载的步骤(autofs)
步骤1:安装依赖包
需安装 autofs 和 nfs-utils(确保 NFS 支持):
[root@host-]# dnf install autofs nfs-utils -y
步骤2:创建主映射文件
- 向
/etc/auto.master.d/目录添加一个主映射文件,文件名需以.autofs为扩展名(如demo.autofs)。(此文件确定用于挂载点的基础目录,并确定用于创建自动挂载的映射文件。)
可以在主映射文件中放置多个条目,或创建多个主映射文件。 - 作用:定义挂载点的“基础目录”(父目录),并指定具体的映射文件路径。
1. 创建主映射文件 [root@host-]# vim /etc/auto.master.d/demo.autofs #后缀必须是.autofs2. 添加间接映射条目(格式:基础目录 映射文件路径) /shares /etc/auto.demo说明:/shares 是所有自动挂载点的`父目录`,具体挂载点在 /etc/auto.demo 中定义(挂载点详细信息)
步骤3:创建映射文件(间接映射)
- 映射文件(如
/etc/auto.demo)定义具体的挂载规则:挂载点(key)(父目录下的子目录名字)、挂载选项、NFS 共享源。
映射文件的命名规则是/etc/auto.name,name反映了映射内容,如.demo,.direct,.wildcard。1. 创建映射文件 [root@host-]# vim /etc/auto.demo2. 添加映射条目(格式:挂载点 -<选项> 服务器:/共享目录) work -rw,sync serverb:/shares/work (相对路径,间接映射)说明:- 挂载点:相对于主映射文件中的“基础目录”,最终路径为` /shares/work`- 选项:以“-”开头,逗号分隔(无空格),如 rw(读写)、sync(同步)- 共享源:NFS 服务器地址+共享目录
步骤4:启动并启用 autofs 服务
启动服务并设置开机自启
[root@host-]# systemctl enable --now autofs验证服务状态
[root@host-]# systemctl status autofs
步骤5:测试自动挂载
访问挂载点(触发自动挂载)
[root@host-]# cd /shares/work查看挂载状态(确认已挂载)
[root@host-]# df -h | grep /shares/work
2.3 直接映射(autofs)
1. 适用场景
将 NFS 共享直接映射到现有绝对路径挂载点(如 /mnt/docs),无需通过“基础目录”嵌套。
2. 配置方法
- 主映射文件:基础目录固定为
/(表示直接映射),映射文件路径自定义。[root@host-]# vim /etc/auto.master.d/direct.autofs添加条目:/- 映射文件路径(/- 是直接映射的固定标识) /- /etc/auto.direct - 映射文件:挂载点需写完整绝对路径。
[root@host-]# vim /etc/auto.direct条目格式:绝对挂载点 -<选项> 服务器:/共享目录 /mnt/docs -rw,sync serverb:/shares/docs - 生效服务:重启 autofs 服务或重新加载配置:
[root@host-]# systemctl restart autofs
3. 特性
autofs 会自动创建/删除整个绝对路径挂载点(如 /mnt/docs),无需手动管理目录。
2.4 间接通配符映射(autofs)(重要)
1. 适用场景
当 NFS 服务器导出一个目录下的多个子目录(如 serverb:/shares 下有 work、docs、test 等子目录),且所有子目录使用相同挂载选项时,可通过通配符 & 简化配置,实现“访问任意子目录时自动挂载对应共享”。
2. 配置方法
- 主映射文件:与普通间接映射一致,定义基础目录。
[root@host-]# vim /etc/auto.master.d/wildcard.autofs /shares /etc/auto.wildcard # 基础目录 /shares,映射文件 /etc/auto.wildcard - 映射文件:用
&代表“访问的子目录名称”,实现通配。[root@host-]# vim /etc/auto.wildcard条目格式:*(挂载点或密钥用*字符代替) -<选项> 服务器:/共享父目录/&(& 匹配访问的子目录名)* -rw,sync serverb:/shares/&
3. 测试效果
# 访问 /shares/work(自动挂载 serverb:/shares/work)
[root@host-]# cd /shares/work
# 访问 /shares/docs(自动挂载 serverb:/shares/docs)
[root@host-]# cd /shares/docs
2.5 其他自动挂载方法(systemd.automount)
1. 核心特点
- 基于 systemd 守护进程,无需安装
autofs服务,配置更简洁。 - 仅需在
/etc/fstab中添加x-systemd.automount选项,systemd 会自动生成对应的.automount单元文件。 - 局限性:仅支持直接映射(绝对路径挂载点),不支持间接通配符映射。
2. 配置步骤
- 编辑 /etc/fstab:添加
x-systemd.automount选项。[root@host-]# vim /etc/fstab # 添加条目(格式:服务器:/共享目录 绝对挂载点 nfs 选项 0 0) serverb.lab.example.com:/shares/direct /mnt/demonfs nfs x-systemd.automount 0 0 # 关键选项:x-systemd.automount(启用 systemd 自动挂载) - 重载 systemd 配置:生成并加载新的单元文件。
[root@host-]# systemctl daemon-reload - 启动自动挂载单元:
# 单元文件命名规则:挂载点路径中的“/”替换为“-”,后缀为 .automount # 示例:/mnt/demonfs 对应的单元文件为 mnt-demonfs.automount [root@host-]# systemctl start mnt-demonfs.automount # 可选:设置开机自启 [root@host-]# systemctl enable mnt-demonfs.automount
3. 触发机制
当用户首次访问 /mnt/demonfs 目录时,systemd 会自动挂载 NFS 共享;闲置后自动卸载。
