fstab挂载失败导致Linux无法启动
小主机突然无法启动
就在今天,我放在家的小主机突然无法访问挂载的硬盘了,可能是接口松动的原因,我没有在意,重启一下就可以了
然而这是我犯的一个大错误,硬盘之所以无法成功挂载肯定是有它的原因的,又因为我把自动挂载写进了 /etc/fstab
文件中
于是。。。
小主机就无法启动了
问题原因
Linux 在启动时会挂载 /etc/fstab
中的硬盘,如果因为写入错误或者其他什么原因导致挂载失败,那么系统启动时就会出现异常,导致启动失败
正是因为这个原因,我那个可能是线松动了的硬盘盒无法正确挂载到我的小主机上,导致了我的小主机启动失败,让我这个不在小主机身边的人与它失联了
解决方案
有两种解决方案,本打算使用方案一的,但方案二更安全,所以进而换成了方案二
解决方案一
这个方法很简单,修改 /etc/fstab
文件,正确配置需要挂载的文件系统即可
但是我本身配置就没问题,所以不是配置错误的原因
我是因为外部设备由于各种各样的原因无法被访问导致无法挂载,在正常情况下是没问题的
为了解决这种情况,我查阅了 Arch Linux 的 wiki,看到这样一句话除非使用 nofail 选项,否则在列表中出现但实际不存在的设备会导致错误
在 /etc/fstab
中添加 nofail
选项就可以了
1 |
|
- nofail 可以在启动时若设备不存在直接忽略它而不报错
- x-systemd.device-timeout=1s 设置超时时间,以防止网络资源不能访问的时候浪费时间
解决方案二
使用 systemd
开机挂载硬盘
由于我的硬盘是外接设备,不是直接连在主板上的,所以连接并不稳定,这就降低了系统的容错率
而当自动挂载硬盘的工作交给 systemd
的话,系统启动就不会受到干扰,提高了系统的容错率
在 /etc/systemd/system
创建挂载单元注意
:挂载单元必须以它控制的挂载目录命名,且以.mount
结尾,比如挂载点为 /home/lennart
,那么它的挂载单元必须为home-lennart.mount
编辑单元文件
1 |
|
- What 设备的绝对路径,注意
/dev/disk/by-uuid
是一个实际存在的目录,不要把他删了只留个UUID在那,会启动失败的 (ఠ్ఠ ˓̭ ఠ్ఠ) - Where 挂载点
- Type 文件类型
- Options 可选项
- rw 读写
- noatime 完全禁用每次读取文件时将文件访问时间写入驱动器
配置完成后,运行如下命令使配置生效
1 |
|
突然的无法连接,原来并不是真正的突如其来,是早就有“预谋”的
由于我的不正确的配置,导致了今天我的小主机无法应对突发情况,这都是我在家中没有配置好的我的小主机的错
以后肯定不能再犯这样的错误了 ᘳᗒ.ᗕᘰ