systemctl 实现磁盘自动挂载:比 fstab 更稳的开机挂载方案
2026/9/8 18:00:02 网站建设 项目流程

引言:fstab 挂载的隐患

使用 fstab 进行挂载时,如果对应的设备暂时没有上线就会导致系统无法启动,所以我们应该使用 systemd 服务来管理自动挂载任务。

下面用一张流程图对比 fstab 与 systemd 两种挂载方案的区别:

systemd 方案

创建 .mount 服务

配置 Unit 文件

systemctl enable 设置自启

挂载失败不影响启动

fstab 方案

设备未上线

挂载失败

系统无法启动

一、创建挂载服务文件

每一个 Unit(服务等)都有一个配置文件,告诉 systemd 如何启动这个 Unit。
systemd 默认从目录/etc/systemd/system/读取配置文件。
但是,里面存放的大部分文件都是符号链接,指向真正的配置文件存放目录/usr/lib/systemd/system/

systemctl enable命令用于在上面两个目录之间(和/etc下目录的子目录),建立符号链接关系。

/etc/systemd/system/系统管理员安装的单元目录,优先级更高,且设置开机自启会自动链接到其下子目录。

/usr/lib/systemd/system/则是常见的软件包安装的单元目录。

首先进入 systemd 单元目录,创建挂载服务文件:

cd/usr/lib/systemd/system/# cd /etc/systemd/system/ 也可,服务优先级会更高touchmedia-centos.mount# 在该目录下创建一个 `.mount`,名字为挂载路径去除首 `/`,路径之间用 `-` 替代 `/`vimmedia-centos.mount# 写入如下配置

编辑服务文件,写入如下配置:

[Unit]Description=mountlocalISO disk# 配置描述信息,查看服务信息时显示# 若有服务依赖,请检查依赖关系:Requires 和 Wants 前后顺序:After、Before# 如果挂载失败,不影响系统启动DefaultDependencies=no# 在网络和文件系统就绪后启动After=local-fs.target[Mount]What=/dev/cdrom# what 配置挂载设备源地址,可以是路径、uuid,甚至是服务连接 urlWhere=/media/centos# 配置挂载目标地址,要与文件名对应Type=iso9660# 设置类型Options=defaults# 设置参数,这里使用默认参数# 可用 ro、noauto、nosuid、nodevTimeoutSec=10#设置超时时间,避免卡死[Install]WantedBy=multi-user.target# 配置如何开机自启,即把服务放入 multi-user.target 组中,这也就是为什么 systemctl enable 命令能设置开机启动的原因systemctl get-default 就可以看到默认 target,一般为'multi-user.target'注:'graphical.target'表示图形用户状态,它依赖于'multi-user.target'

二、测试文件是否正确并启用服务

systemctl daemon-reload# 测试挂载(不启用开机自启)sudosystemctl start media-centos.mountsudosystemctl status media-centos.mount#回显显示active(mounted)即正常挂载成功#应用开机自启sudosystemctlenablemedia-centos.mount

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询