自动挂载文件系统

最近更新时间: 2026-03-13 09:03:00

Linux 下自动挂载 NFS 文件系统

方法一:使用CFS客户端助手设置(推荐)

注意:

如果您曾使用 fstab 或其他方式,为了避免冲突,建议在使用此方法前,关闭现有的重启自动挂载方式。

  1. 登录文件存储控制台。

  2. 在左侧导航树中,选择文件系统列表,进入文件系统列表页面。

  3. 在需要挂载的文件系统右侧,单击操作 > 挂载

  4. 在弹出的窗口中,查看所选文件系统在云服务器上的自动挂载配置状态(仅支持已安装自动化助手的云服务器)。选中所需要挂载的实例,并点击下一步

    状态 描述
    已配置 在该云服务器上,已使用控制台或客户端助手配置过重启机器时自动挂载所选的文件系统
    未配置 在该云服务器上,未使用控制台或客户端助手配置过重启机器时自动挂载所选的文件系统
    暂不支持 暂不支持 Windows 客户端使用控制台或客户端助手进行重启机器自动挂载

    注意:

    此查询方法仅适用于客户端助手实现的自动挂载,无法检测 fstab 或其他方式配置的自动挂载。

  5. 在此页面填写目标本地目录及其他参数,勾选 **重启自动挂载,**并点击下一步。

  6. 执行状态显示“已完成”时说明已成功挂载,并成功配置重启自动挂载。
    如果您已在该目录下挂载过所选文件系统,执行状态将显示“失败”,原因是不支持在同一目录上重复挂载同个文件系统。
    但是您可以将鼠标悬停到执行状态,当执行详情显示如下内容时,说明重启自动挂载功能已配置开启。

    说明:

    • 重启自动挂载功能设置不会影响运行中的云服务器,仅在机器重启时奏效。
    • 此进程在机器重启后会在5分钟内,并发尝试挂载指定的文件系统。超时后会退出进程,不影响 Linux 系统的正常使用。
    • 如您遇到挂载失败,可以查看 /usr/local/reboot_mount_cfs/logs 保存的自动挂载日志,快速定位问题所在。
    • 若您希望关闭自动挂载,可修改/usr/local/reboot_mount_cfs/bin下的 reboot_mount_cfs.sh文件,将条件表达式中 true 改为 false 并保存修改,即可关闭重启机器自动挂载。
     vim /usr/local/reboot_mount_cfs/bin/reboot_mount_cfs.sh
     
     # ... 以上省略...
        if false; then  # 将条件表达式中的true改为false
            vDoMount="sudo mount.lustre x.x.x.x@tcp:/xxxxxxxx/cfs /path/to/mountpoint_x"  # 期望关闭的文件系统重启自动挂载命令
     # ... 以下省略...
    

方法二:使用 systemd 配置

说明:

方法二与方法一本质上都是基于systemd进行实现,区别在于方法一是通过自动化的方式去配置,方法二是基于手动的方式配置。

  1. /usr/local/创建文件夹存放执行脚本及运行日志

    注意:

    建议不要更改文件的命名,以免在控制台查询状态失败。

    cd /usr/local/
    mkdir -p reboot_mount_cfs/logs
    mkdir -p reboot_mount_cfs/bin
    
  2. reboot_mount_cfs/bin 下创建脚本 reboot_mount_cfs.sh,在提示位置,根据需要更改挂载命令,并赋予可执行权限。

    cd /usr/local/reboot_mount_cfs/bin
    file="reboot_mount_cfs.sh"
    if [ -e "$file" ]; then
    echo "File already exists, skipping creation."
    else
    cat > "$file"  << 'EOF'
    #!/bin/bash
    ####启动过程进行文件系统挂载时的日志####
    readonly LOG_FILE=/usr/local/reboot_mount_cfs/logs/reboot_mount_cfs-$(date +%Y%m%d_%H%M%S).log
    
    function main() {
        local vDryRun=false
        local vDoMount
        ####使用说明####
        # 0)挂载某个文件系统
        # 1)将条件表达式中true改为false,即可关闭重启机器自动挂载
        # 2)将vDoMount内容替换成该文件系统的实际挂载指令
        ####使用说明####
        if true; then
            vDoMount="mount.lustre x.x.x.x@tcp:/xxxxxxxx/cfs /path/to/mountpoint_x"
            if ${vDryRun}; then
                echo "${vDoMount}"
            else
                echo "[$(date +%Y-%m-%d\ %H:%M:%S)]Try to run: ${vDoMount}" >> "${LOG_FILE}"
                local vTimesRetried=0
                while [[ ${vTimesRetried} -le ${MAX_MOUNTS2RETRY} ]]; do
                    timeout 300 ${vDoMount}&
                    pid=$!            
                    wait $pid               
                    vRc=$?
                    if [[ ${vRc} -ne 0 ]]; then
                        echo "[$(date +%Y-%m-%d\ %H:%M:%S)][${vRc}]Failed to run: ${vDoMount}" >> "${LOG_FILE}"
                        sleep 120 # 重试前延迟2分钟,以规避网络慢启动
                        vTimesRetried=$((vTimesRetried + 1))
                        continue
                    else
                        echo "[$(date +%Y-%m-%d\ %H:%M:%S)]Succeed to run: ${vDoMount}" >> "${LOG_FILE}"
                        break
                    fi
                done
            fi
        fi  
        
        echo "====All mountings tried====" >> "${LOG_FILE}"  # 定位行,请勿删改
        echo >> "${LOG_FILE}"
        echo "Current mountpoints of CFS:" >> "${LOG_FILE}"
        mount -t nfs >> "${LOG_FILE}"
        mount -t nfs4 >> "${LOG_FILE}"
        mount -t lustre >> "${LOG_FILE}"
        wait
        ####工具使用约束###
        # 仅用于配合systemd服务完成系统启动时的初始挂载
        # 不要用于非启动场合
        ###工具使用约束###
    }
    main
    EOF
    fi
    chmod a+x reboot_mount_cfs.sh
    
  3. /etc/systemd/system中创建 reboot_mount_cfs.service。

    cd /etc/systemd/system
    echo '[Unit]
    Description=Used to automatically mount Turbo filesystems.
    After=default.target
    [Service]
    ExecStart=/usr/local/reboot_mount_cfs/bin/reboot_mount_cfs.sh
    [Install]
    WantedBy=default.target
    ' > reboot_mount_cfs.service
    

    将 reboot_mount_cfs.service 服务设置为开机自启动。当系统启动时,reboot_mount_cfs.sh 中状态为 True 的挂载命令会自动执行。

    systemctl daemon-reload && systemctl enable reboot_mount_cfs.service
    

方法三:使用 fstab 配置

注意:

  • 基于此方法配置自动挂载后,假设文件系统无法正常挂载(例如已经被删除),会导致 Linux 系统无法正常启动。您可以在系统启动时进入"救援模式",将 fstab 中的自动挂载命令删除后再重启主机。
  • 推荐您使用方法一或方法二,避免上述情况发生。
  1. 首先,连接到需要自动挂载文件系统的 CVM 实例,可以通过 CVM 控制台登录或者远程登录的方式。打开 /etc/fstab 文件 (确保您登录的账户享有 root 权限)。

    //使用以下命令打开 fstab 文件
    vi /etc/fstab
    
  2. 打开 fstab 文件后,输入 i(insert),在 /etc/fstab 添加如下命令行,支持以下几种挂载方式:

    使用 NFS4.0 挂载
    <挂载点IP>:/ <待挂载目标目录> nfs vers=4,minorversion=0,hard,timeo=600,retrans=2,_netdev,noresvport 0 0
    例如:10.10.19.12:/ /local/test nfs vers=4,minorversion=0,hard,timeo=600,retrans=2,_netdev,noresvport 0 0
    
    使用 NFS3.0 挂载
    <挂载点IP>:/<fsid> <待挂载目标目录> nfs vers=3,nolock,proto=tcp,hard,timeo=600,retrans=2,_netdev,noresvport 0 0
    例如:10.10.19.12:/djoajeo4 /local/test nfs vers=3,nolock,proto=tcp,hard,timeo=600,retrans=2,_netdev,noresvport 0 0
    
    使用 Turbo 挂载
    <挂载点IP>@tcp0:/<fsid>/cfs <待挂载目标目录> lustre defaults,_netdev 0 0 
    例如:172.16.0.7@tcp0:/01184207/cfs /root/turbo lustre defaults,_netdev 0 0
    
  3. 按下键盘 "Esc" 按键并输入 ":wq" 以保存上述修改。重启客户端后,可以看到文件系统为自动挂载。

Windows 下自动挂载文件系统

挂载时,勾选登录时重新连接选项,如下图示。更多挂载帮助请参见 在 Windows 客户端上使用 CFS 文件系统