引言:fstab 挂载的隐患
使用 fstab 进行挂载时,如果对应的设备暂时没有上线就会导致系统无法启动,所以我们应该使用 systemd 服务来管理自动挂载任务。
下面用一张流程图对比 fstab 与 systemd 两种挂载方案的区别:
一、创建挂载服务文件
每一个 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