之前系统采用自动分区挂载的磁盘:
磁盘:/dev/sda-/dev/sdl
默认分区:/dev/sda1-/dev/sdl1 /data1-/data12
问题现象:
sdk盘出现问题需要卸载,对应的挂载目录是/data9。
卸载的时候发现磁盘被占用,可以用 fuser /目录名 查看占用该目录的进程,然后kill掉重新umount即可。
然后,关机,拔盘,重启,问题来了。
重启之后系统直接进入紧急模式,无法正常启动,根据提示输入密码先进入紧急模式,然后查看系统相关日志,messages和dmesg。
日志中大概意思是说/dev/sdl盘挂载不上(一般开机自动进入紧急模式就是磁盘挂载有问题)。
然后df -hl查看已经挂载的盘,发现/home目录挂载在了/dev/sdk下面。之前/home是挂在/dev/sdl下面的。
原因:
Linux自动挂盘的时候有一个配置文件/etc/fstab。
文件介绍:https://blog.csdn.net/kepa520/article/details/81315430
里面定义了磁盘对应的挂载目录等等信息,有的文件里面直接定义的是磁盘名称比如/dev/sda等等,我的里面是卷名UUID。
由于磁盘被拔了一块,但是这个文件没有更新,并且盘符名称是按顺序定义下来的,虽然我拔掉的是sdk,但是重启之后,之前的sdl成了新的sdk,所以之前的/home目录挂在了/sdk下面,实际上里面的内容是没有问题的,只是sdl盘符名字被换成了sdk。由于文件里面之前的那行是存在的,所以实际启动的时候多挂载了一个盘,而多出来的sdl因为找不到实际的盘报错,所以系统起不起来。
解决办法:
在紧急模式中修改/etc/fstb文件,注释掉卸载的那一行,重启。
建议:主机最好不要自动分区。