Linux 下自动挂载 NFS 文件系统
方法一:使用CFS客户端助手设置(推荐)
注意:
如果您曾使用 fstab 或其他方式,为了避免冲突,建议在使用此方法前,关闭现有的重启自动挂载方式。
1. 文件存储 > 文件系统 在需要挂载的文件系统右侧点击挂载。


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


状态 | 描述 |
已配置 | 在该云服务器上,已使用控制台或客户端助手配置过重启机器时自动挂载所选的文件系统 |
未配置 | 在该云服务器上,未使用控制台或客户端助手配置过重启机器时自动挂载所选的文件系统 |
暂不支持 | 暂不支持 Windows 客户端使用控制台或客户端助手进行重启机器自动挂载 |
已配置状态下查询结果示例,从左到右分别是挂载点 IP、客户端类型、挂载的本地路径、重启挂载状态(开启时为 True,手动关闭时为 False):


未配置状态下查询结果示例:


注意:
此查询方法仅适用于客户端助手实现的自动挂载,无法检测 fstab 或其他方式配置的自动挂载。
3. 在此页面填写目标本地目录及其他参数,勾选 重启自动挂载,并点击下一步。


4. 执行状态显示“已完成”时说明已成功挂载,并成功配置重启自动挂载。


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




说明:
重启自动挂载功能设置不会影响运行中的云服务器,仅在机器重启时奏效。
此进程在机器重启后会在5分钟内,并发尝试挂载指定的文件系统。超时后会退出进程,不影响 Linux 系统的正常使用。
如您遇到挂载失败,可以查看
/usr/local/reboot_mount_tencent_cfs/logs
保存的自动挂载日志,快速定位问题所在。若您希望关闭自动挂载,可修改
/usr/local/reboot_mount_tencent_cfs/bin
下的 reboot_mount_tencent_cfs.sh文件,将条件表达式中 true 改为 false 并保存修改,即可关闭重启机器自动挂载。vim /usr/local/reboot_mount_tencent_cfs/bin/reboot_mount_tencent_cfs.sh# ... 以上省略...if false; then # 将条件表达式中的true改为falsevDoMount="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_tencent_cfs/logsmkdir -p reboot_mount_tencent_cfs/bin
2. 在
reboot_mount_tencent_cfs/bin
下创建脚本 reboot_mount_tencent_cfs.sh,在提示位置,根据需要更改挂载命令,并赋予可执行权限。cd /usr/local/reboot_mount_tencent_cfs/binfile="reboot_mount_tencent_cfs.sh"if [ -e "$file" ]; thenecho "File already exists, skipping creation."elsecat > "$file" << 'EOF'#!/bin/bash####启动过程进行文件系统挂载时的日志####readonly LOG_FILE=/usr/local/reboot_mount_tencent_cfs/logs/reboot_mount_tencent_cfs-$(date +%Y%m%d_%H%M%S).logfunction main() {local vDryRun=falselocal vDoMount####使用说明##### 0)挂载某个文件系统# 1)将条件表达式中true改为false,即可关闭重启机器自动挂载# 2)将vDoMount内容替换成该文件系统的实际挂载指令####使用说明####if true; thenvDoMount="mount.lustre x.x.x.x@tcp:/xxxxxxxx/cfs /path/to/mountpoint_x"if ${vDryRun}; thenecho "${vDoMount}"elseecho "[$(date +%Y-%m-%d\\ %H:%M:%S)]Try to run: ${vDoMount}" >> "${LOG_FILE}"local vTimesRetried=0while [[ ${vTimesRetried} -le ${MAX_MOUNTS2RETRY} ]]; dotimeout 300 ${vDoMount}&pid=$!wait $pidvRc=$?if [[ ${vRc} -ne 0 ]]; thenecho "[$(date +%Y-%m-%d\\ %H:%M:%S)][${vRc}]Failed to run: ${vDoMount}" >> "${LOG_FILE}"sleep 120 # 重试前延迟2分钟,以规避网络慢启动vTimesRetried=$((vTimesRetried + 1))continueelseecho "[$(date +%Y-%m-%d\\ %H:%M:%S)]Succeed to run: ${vDoMount}" >> "${LOG_FILE}"breakfidonefifiecho "====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服务完成系统启动时的初始挂载# 不要用于非启动场合###工具使用约束###}mainEOFfichmod a+x reboot_mount_tencent_cfs.sh
3. 在
/etc/systemd/system
中创建 reboot_mount_tencent_cfs.service。cd /etc/systemd/systemecho '[Unit]Description=Used to automatically mount Tencent Turbo filesystems.After=default.target[Service]ExecStart=/usr/local/reboot_mount_tencent_cfs/bin/reboot_mount_tencent_cfs.sh[Install]WantedBy=default.target' > reboot_mount_tencent_cfs.service
将 reboot_mount_tencent_cfs.service 服务设置为开机自启动。当系统启动时,reboot_mount_tencent_cfs.sh 中状态为 True 的挂载命令会自动执行。
systemctl daemon-reload && systemctl enable reboot_mount_tencent_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" 以保存上述修改。重启客户端后,可以看到文件系统为自动挂载。