3.9.6 自动挂载与高可用共享实践
本节聚焦网络共享在生产环境的自动挂载与高可用实践,目标是实现“开机即用、故障可切换、业务感知最小化”。覆盖 NFS/SMB 共享目录、iSCSI 挂载卷以及分布式存储客户端挂载点的统一管理。核心原则:自动挂载避免开机阻塞,HA 设计同时考虑存储端与客户端冗余,参数设置需结合真实业务 I/O 形态。
1. 自动挂载:systemd automount 与 fstab#
1.1 安装与基础准备#
# 通用工具
sudo yum -y install nfs-utils cifs-utils
# 确认网络就绪
systemctl status network-online.target
1.2 使用 fstab + systemd automount(适合固定挂载)#
# /etc/fstab 示例:NFS 自动挂载,按需触发
192.168.10.10:/data/share /mnt/share nfs \
_netdev,nofail,x-systemd.automount,x-systemd.idle-timeout=300,\
timeo=30,retrans=3,hard 0 0
_netdev:告诉系统需网络后再挂载nofail:挂载失败不阻塞启动x-systemd.automount:按需触发挂载x-systemd.idle-timeout:空闲卸载timeo/retrans/hard:超时与重试策略,保证一致性
验证:
# 启用并触发
sudo systemctl daemon-reload
ls /mnt/share
# 观察 automount unit
systemctl status mnt-share.automount
1.3 systemd mount 单元(适合模板化部署)#
# /etc/systemd/system/mnt-share.mount
[Unit]
Description=NFS Share
After=network-online.target
Requires=network-online.target
[Mount]
What=192.168.10.10:/data/share
Where=/mnt/share
Type=nfs
Options=_netdev,hard,timeo=30,retrans=3
[Install]
WantedBy=multi-user.target
systemctl enable --now mnt-share.mount
2. autofs 按需挂载(适合大量目录与多源切换)#
2.1 安装与配置#
sudo yum -y install autofs
# /etc/auto.master
/misc /etc/auto.misc --timeout=300
# /etc/auto.misc
share -fstype=nfs,hard,timeo=30,retrans=3 192.168.10.10:/data/share
systemctl enable --now autofs
ls /misc/share
2.2 autofs 多源示例(客户端 HA)#
# /etc/auto.misc
share -fstype=nfs,hard,timeo=20,retrans=2 \
192.168.10.10:/data/share \
192.168.10.11:/data/share
- autofs 会按顺序尝试,多源失败自动切换
3. 高可用共享:NFS + Keepalived 示例#
3.1 架构草图#
3.2 服务端安装与共享配置#
# 两台 NFS 服务器
sudo yum -y install nfs-utils keepalived
# /etc/exports
/data/share 192.168.10.0/24(rw,sync,no_root_squash)
systemctl enable --now nfs-server
exportfs -rv
3.3 Keepalived 主备配置#
# /etc/keepalived/keepalived.conf (Master)
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 150
advert_int 1
virtual_ipaddress {
192.168.10.100/24
}
}
# /etc/keepalived/keepalived.conf (Backup)
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
virtual_ipaddress {
192.168.10.100/24
}
}
systemctl enable --now keepalived
3.4 客户端挂载(使用 VIP)#
# /etc/fstab
192.168.10.100:/data/share /mnt/share nfs \
_netdev,nofail,x-systemd.automount,hard,timeo=30,retrans=3 0 0
4. iSCSI 多路径高可用示例#
4.1 安装与登录#
sudo yum -y install iscsi-initiator-utils device-mapper-multipath
systemctl enable --now iscsid
# 发现 target
iscsiadm -m discovery -t sendtargets -p 192.168.20.10
iscsiadm -m discovery -t sendtargets -p 192.168.20.11
# 登录
iscsiadm -m node --login
4.2 multipath 配置#
# /etc/multipath.conf
defaults {
user_friendly_names yes
}
blacklist {
devnode "^sd[a]$"
}
systemctl enable --now multipathd
multipath -ll
预期:单一虚拟设备(如 /dev/mapper/mpatha),任一路径故障仍可读写。
5. 故障排错与常见问题#
5.1 NFS 挂载失败#
# 客户端
showmount -e 192.168.10.100
mount -v /mnt/share
journalctl -u mnt-share.automount -b
排查要点:防火墙、exports 权限、DNS 解析、网络延迟。
5.2 autofs 无法触发#
systemctl status autofs
tail -f /var/log/messages | grep autofs
排查要点:auto.master 路径写错、权限不足、map 文件格式错误。
5.3 NFS 卡顿或 I/O 超时#
# 观察挂载参数
nfsstat -m
# 临时调整超时(示例)
mount -o remount,timeo=60,retrans=5 /mnt/share
6. 练习与验证#
- 使用 systemd automount 挂载 NFS,记录首次访问延迟与空闲卸载时间。
- 配置 Keepalived VIP,模拟主机宕机,记录客户端 I/O 中断时长。
- 配置 autofs 多源挂载,断开主源网络,验证自动切换。
- iSCSI 多路径:拔掉一条链路,确认
/dev/mapper/mpatha可持续读写。 - 编写巡检脚本(每 1 分钟探测挂载点可写),并输出告警日志。
# 简易巡检脚本 /usr/local/bin/check_mount.sh
#!/bin/bash
MNT=/mnt/share
FILE=$MNT/.healthcheck
if touch "$FILE" 2>/dev/null; then
echo "$(date) OK" >> /var/log/mount_check.log
else
echo "$(date) FAIL" >> /var/log/mount_check.log
fi
chmod +x /usr/local/bin/check_mount.sh
*/1 * * * * root /usr/local/bin/check_mount.sh
本节实践完成后,应具备:自动挂载不阻塞启动、共享具备故障切换能力、出现异常可快速定位并恢复。