自动挂载内网共享盘

在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条评论!

发表评论

更换一道题!
放大的图片