ubuntu 启动错误:filesystem check or mount failed.

本文分析了ubuntu 启动错误:filesystem check or mount failed.并试着解决此错误。

ubuntu 启动错误:filesystem check or mount failed.

硬件环境: Dell 服务器 PowerEdge R720
操作系统: ubuntu 14.04 LTS

根据提示,错误原因应该是文件系统检查失败或者挂载失败。

错误提示:

Filesystem check or mount failed.   
A maintenance shell will now be started. CONTROL-D will terminate this shell and continue booting  
after re-trying filesystems. Any further errors will be ignored.  
Give root password for maintenance  
(or type ctrl-D to continue)  

参考网页 1 解决思路是重新挂载根目录。

mount -o remount,rw /
dpkg --configure -a
mount -o remount,ro /
sync
reboot

参考网页 2、3 解决思路是检查、修复文件系统。

#fsck -f -c  
#fsck.ext4 -f /dev/sda2  

上面两种方法自己都试过了,无效。

参考网页 4 中出现问题的原因为 /etc/fstab 文件中UUID信息与 blkid 获得信息不一致。

参考网页 5 中问题未解决。自己仔细看过论坛记录后也没发现是什么问题。

参考网页 6 也没解决问题。但是建议:

Have a look at /var/log/dmesg, /var/log/boot.log and see if its having problems with mounting, rather than corruption.

参考网页 7 问题得到解决。提到了2种解决方法。
第1种是 running GParted from the Ubuntu live cd to check filesystem。
第2种:

The /dev/sda2 and /dev/sda5 were being mounted in the wrong place. 
Instead of being mounted in /home and /boot as per /etc/fstab, they were being mounted in new directories in /media  
called /media/usbhd-sda2 and /media/usbhd-sda5. Upon deleting those folders, everything has gone back to normal.  
I have no idea how those new folders got created...but problem solved now.  

有人解释了上面问题产生的原因:

The problem in udev that do automount to filesystems that he find.
The config laying in /etc/udev/rules.d <--- there is some file with extention *.rules
The first string in the file is "KERNEL!="sd[a-z][0-9]", GOTO="media_by_label_auto_mount_end"
Mostly main fs mounted from device /dev/sda... to make udev ignore /dev/sda just change the string to:
"KERNEL!="sd[b-z][0-9]", GOTO="media_by_label_auto_mount_end
If you have more that two physical hdds sdb\sdc\sdd make the changes in config.
That help me to solve the same problem that samson had.

这个错误其他可能的原因:

  1. 磁盘已满
  2. non-root file systems的错误。

参考网页:

  1. Ubuntu 13.04 to 13.10: Filesystem check or mount failed
  2. Filesystem check or mount failed
  3. Ubuntu:mount of filesystem failed解决办法
  4. [SOLVED] File System Check or Mount Failed
  5. Filesystem check or mount failed. fsck not helping
  6. Filesystem check or mount failed. fsck not helping
  7. Filesystem check failed (SOLVED)

自己的解决方法

进展 1

我按了 ctrl-D 之后,出现如下信息:

mountall start/starting
Filesystem check or mount failed.   
A maintenance shell will now be started. CONTROL-D will terminate this shell and continue booting  
after re-trying filesystems. Any further errors will be ignored.  
Give root password for maintenance  
(or type ctrl-D to continue)  

注意到错误信息第一行多了一句 mountall start/starting

那么,可以从启动日志 /var/log/dmeg 中查看挂载情况:

cat /var/log/dmeg | grep mountall  

得到结果如下:

root@stackcontroller:/home/ubuntu# cat /var/log/dmesg |grep mountall
[    8.153842] init: mountall main process (293) terminated with status 2
[  262.179491] init: mountall main process (322) terminated with status 2

从启动日志 /var/log/dmeg 中查看硬盘情况:

cat /var/log/dmeg | grep sda

得到结果如下:

root@stackcontroller:/home/ubuntu# cat /var/log/dmesg |grep sda
[    2.573476] sd 0:0:0:0: [sda] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
[    2.573479] sd 0:0:0:0: [sda] 4096-byte physical blocks
[    2.573546] sd 0:0:0:0: [sda] Write Protect is off
[    2.573550] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    2.573573] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    2.616699]  sda: sda1 sda2 sda3
[    2.617036] sd 0:0:0:0: [sda] Attached SCSI disk
[    3.599357] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null)
[  430.011487] Adding 8340476k swap on /dev/sda3.  Priority:-1 extents:1 across:8340476k FS
[  432.501675] EXT4-fs (sda2): re-mounted. Opts: errors=remount-ro

仔细查看日志 /var/log/dmesg ,与正常启动的服务器的日志对比。

[    8.153842] init: mountall main process (293) terminated with status 2  

在这一行前面,日志都是一样的,突然出现了这个信息。

既然 ctrl-D 的 mountall 不行,那么试着登陆 maintenance shell ,root 执行 mountall ,得到如下结果:

这时系统已经可以远程登录了,或者按 Ctrl + alt + F2 开启另一个控制台登录。说明系统可以启动了,这样可以猜出问题出在文件系统的挂载上。

进展 2

于是接下来修改google 关键词为: "mountall start/starting" Filesystem check or mount failed . 重新检索。

下面参考网页 1 中方法进入 recovery 后只有一个选项,与描述不符。

下面参考网页 2 中方法自己试过了,无效。

Managed to FSCK it enough to run:
'mount -o rw,remount /'
Followed by:
'sudo mountall'
Which allowed me to load Ubuntu 13.10 (but pretty badly damaged).
Then summoned a Terminal window (Ctrl-Alt-T) and ran:
'sudo dpkg --configure -a' 
which fixed the broken install, then ran:
'sudo apt-get install -f' 
which fixed the broken packages.

自己尝试过在单用户模式下 fsck 修复文件系统,重启后无效。

进展 3

自己也猜测是 swap 分区的问题,这个分区不能挂载。重新修复了 swap 分区,结果还是不行。

计划:打开 /var/log/messages 日志,查看更详细日志。
打开后,重启,没有内容。

进展 4

在上面的尝试都无效之后,只能自己分析问题所在了。
猜测由于 /sbin/init 进程发出 startup 时间之后,启动 mountall 工作。但是 mountall 工作由于某种原因终止了。

根据如下 df -h 的提示信息,猜测是由于 swap 分区出现问题。
!

mountall其实分为很多步骤。仔细执行其中各个步骤,看卡在哪一个地方了。
但是,自己试过了 mount /dev/sda2 , swapon -f /dev/sda3 都不行。
看来这种思路行不通。

执行 initctl status 发现只有 mountall-shell 在运行。
查看 /etc/init/mountall-shell.conf 内容,根据错误提示,判断其运行原因是 mountall exit status 2 。
看来要解决问题还是要弄清楚 mountall 退出的原因。

根据 mountall.conf 内容,自己在根目录下创建了 forcefsck 文件,修改了 /etc/default/rcS 中 FSCKFIX=yes 。
重启后还是不行。

mmp,真难搞定。

进展 5

[下载了 mountall 源码](https://github.com/hokein/Wiki/wiki/ubuntu%E8%8E%B7%E5%8F%96%E6%BA%90%E7%A0%81%E6%96%B9%E6%B3%95
),查看源码,没什么突破。

按照下面网页上更新内核之后,重启还是相同错误,但是出现这个错误之后就卡着不动了。按 ctrl + D 没反应,也进不了 maintenance shell 。 只能强制关机,问题越来越严重了。。。
https://forum.linode.com/viewtopic.php?p=28115

哎,放弃了,弄不好。

参考网页:

  1. “Filesystem check or mount failed” error.
  2. Ubuntu 13.10 update crashed out (on Dell Inspiron 15r), won’t boot into shell…

附件浏览:

  1. 服务器磁盘分区、挂载信息、fstab 信息查看
  2. /var/log/dmesg 日志
  3. /var/log/boot.log 日志

你可能感兴趣的:(linux)