自动挂载内网共享盘
在CentOS服务器上安装NFS服务器组件:
sudo yum install nfs-utils
结合前面的重试机制和目录清理逻辑,创建一个完整的脚本:
------以下内容:开始------直到文档尾部------
sudo tee /data/server/mount_nfs_with_clean.sh > /dev/null << 'EOF'
#!/bin/bash
set -e
# 配置信息
MOUNT_POINT="/share/a2131"
NFS_SERVER="192.168.1.131:/data/share/192.168.1.142"
LOG_FILE="/data/server/nfs_mount.log"
# 日志函数
log() {
echo "[$(/bin/date '+%Y-%m-%d %H:%M:%S')] $1" | /usr/bin/tee -a "$LOG_FILE"
}
# 检查挂载状态
is_mounted() {
/bin/mount | /bin/grep -q "$MOUNT_POINT"
}
# 主函数
main() {
log "开始检查 NFS 挂载状态..."
# 如果已挂载,直接退出
if is_mounted; then
log "NFS 共享已成功挂载,无需操作"
exit 0
fi
log "NFS 挂载失败,尝试清理并重新挂载..."
# 尝试卸载(如果之前挂载残留)
/bin/umount -f "$MOUNT_POINT" 2>/dev/null || true
# 备份并清空挂载点目录
if [ -d "$MOUNT_POINT" ]; then
log "备份并清空挂载点目录: $MOUNT_POINT"
/bin/mv "$MOUNT_POINT" "${MOUNT_POINT}.bak.$(/bin/date +%s)" 2>/dev/null || true
fi
# 重建挂载点目录
/bin/mkdir -p "$MOUNT_POINT"
/bin/chmod 755 "$MOUNT_POINT"
# 设置正确的权限和所有权
log "设置目录权限和所有权..."
/bin/chmod -R 755 "$MOUNT_POINT"
/bin/chown -R "$USER":"$GROUP" "$MOUNT_POINT"
# 尝试挂载(简化为与手动命令一致的形式)
log "执行 NFS 挂载: $NFS_SERVER -> $MOUNT_POINT"
if ! /bin/mount -t nfs "$NFS_SERVER" "$MOUNT_POINT" 2>/tmp/mount_error; then
log "挂载失败,错误详情:"
cat /tmp/mount_error | log
exit 1
fi
if is_mounted; then
log "✅ NFS 挂载成功"
# 再次确认权限(防止 NFS 覆盖设置)
log "再次确认挂载点权限..."
/bin/chmod -R 755 "$MOUNT_POINT"
/bin/chown -R "$USER":"$GROUP" "$MOUNT_POINT"
exit 0
else
log "❌ NFS 挂载失败,请检查网络或服务器配置"
exit 1
fi
}
# 执行主函数
main
EOF
sudo chmod +x /data/server/mount_nfs_with_clean.sh
sudo tee /etc/systemd/system/nfs-mount-retry.service > /dev/null << 'EOF'
[Unit]
Description=NFS Mount Retry Service
After=network.target
[Service]
Type=simple
ExecStart=/data/server/mount_nfs_with_clean.sh
Restart=always
RestartSec=30 # 每 30 秒重试一次
TimeoutStartSec=60
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable nfs-mount-retry
sudo systemctl start nfs-mount-retry
默认分类 2025-06-20 13:16:35 通过 网页 浏览(55)
共有0条评论!