文档中心>文件存储>操作指南>自动挂载文件系统

自动挂载文件系统

最近更新时间:2025-05-23 15:18:01

我的收藏

Linux 系统自动挂载文件系统

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

注意:
如果您曾使用 fstab 或其他方式,为了避免冲突,建议在使用此方法前,关闭现有的重启自动挂载方式。
1. 文件存储 > 文件系统 在需要挂载的文件系统右侧单击挂载



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



状态
描述
已配置
在该云服务器上,已使用控制台或客户端助手配置过重启机器时自动挂载所选的文件系统
未配置
在该云服务器上,未使用控制台或客户端助手配置过重启机器时自动挂载所选的文件系统
暂不支持
暂不支持 Windows Server 2012 使用控制台或客户端助手进行重启机器自动挂载
已配置状态下查询结果示例,从左到右分别是挂载点 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改为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_tencent_cfs/logs
mkdir -p reboot_mount_tencent_cfs/bin
2. reboot_mount_tencent_cfs/bin 下创建脚本 reboot_mount_tencent_cfs.sh,在提示位置,根据需要更改挂载命令,并赋予可执行权限。
cd /usr/local/reboot_mount_tencent_cfs/bin
file="reboot_mount_tencent_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_tencent_cfs/logs/reboot_mount_tencent_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_tencent_cfs.sh
3. /etc/systemd/system 中创建 reboot_mount_tencent_cfs.service。
cd /etc/systemd/system
echo '[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 文件后,在 /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 系统自动挂载 NFS 文件系统

说明:
通常情况下 Windows 系统成功挂载 SMB 协议文件系统后,在文件系统未被删除前,重启机器能够自动重新连接 SMB 文件系统。
Windows 挂载 NFS 文件系统并无上述能力,建议参考以下方法配置自动挂载。

方法一:手动挂载时设置

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



方法二:使用控制台或客户端助手挂载时设置

使用控制台或客户端助手挂载时,默认挂载命令已包含系统启动时挂载和一次性挂载两个部分,分别覆盖未登录及登录状态下挂载 CFS 的情况。命令具体内容如下:
RAM 创建系统启动时任务,实现未登录时及重启服务器时自动挂载CFS
reg add "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run" /v SecurityHealth /t REG_EXPAND_SZ /d "%windir%\\system32\\SecurityHealth.exe" /f
reg add "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run" /v AzureArcSetup /t REG_EXPAND_SZ /d "%windir%\\Azuresetup\\Startup.exe" /f
reg add "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run" /v cfs-12345678 /t REG_SZ /d "cmd.exe /c \\"mount -o nolock mtype=hard 10.xx.xx.xx:/98xxxxxx a:"\\" /f

RAM 创建一次性任务并立即执行,实现登录状态下挂载CFS
@echo off
set "tempFile=%temp%\\mountcfs_temp.bat"
(
echo mount -o nolock mtype=hard 10.xx.xx.xx:/98xxxxx a:
) > "%tempFile%"
type %tempFile%
schtasks /create /tn "MountCFS_Task" /tr "%tempFile%" /sc once /st 08:00 /sd 1970/01/01 /f
schtasks /run /tn "MountCFS_Task"
schtasks /delete /tn "MountCFS_Task" /f
如果您希望重启时不再自动挂载 CFS ,请在 CMD 执行以下命令在注册表中删除对应的系统启动时任务。
reg delete "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run" /v cfs-12345678 /f