Linux 服务器一直运行良好,最近没有安装任何更新,但今天早上服务器突然停止响应。我去检查它,它说文件系统有问题,并说“你应该手动运行 fsck”。
我在相关分区上运行了 fsck,并修复了所有建议的 inode 问题。重新启动后,我现在看到以下消息:
JBD: no valid journal superblock found
EXT3-fs: error loading journal
mount: error 22 mounting ext3
Switching to new root
ERROR opening /dev/console!!!!:2
Kernel panic - no syncing: Attempting to kill init
有人知道我该如何解决这个问题吗?我对 Linux 不是特别熟悉,所以在提出解决方案时请详细说明。
如果可以的话,我不想重新安装 Linux,因为服务器上有大约 5 年的宝贵数据。任何帮助都感激不尽!
答案1
使用救援 CD 启动并检查磁盘。
答案2
正如 Jure1873 所建议的,获取启动盘并 fsck 驱动器。
但是,在执行此操作的同时,请安装磁盘并查看是否可以读取记录的日志。查找导致磁盘故障的信息。看看启动盘在从驱动器读取时是否也在错误日志中显示错误迹象。
如果数据对您很有价值,我还会尝试使用 dd-rescue 之类的工具将数据从磁盘复制到另一个磁盘。
答案3
正如@Blender 在他的评论中提到的,这听起来像是硬盘故障。由于你不太了解 Linux,我建议你首先找一个了解 Linux 的人,因为如果你不了解 Linux 的一些复杂细节,修复这类问题(甚至完全理解)可能会很困难。
首先使用 Live CD 或 Live USB 记忆棒(参见诺皮克斯作为示例或Ubuntu) 启动机器,看看它是否可以安装磁盘。如果可以,请复制重要数据(无论如何您都应该备份这些内容,但这是另一个问题),然后尝试找出发生故障的硬件。如果是硬盘,请更换它。
您还可以查看日志,尝试找出问题的根源。对于硬件,我会检查/var/log/dmesg
。根据驱动器的类型(以及内核版本等),您会看到不同的消息。当驱动器连接到 SCSI/Raid 控制器时,您可能会看到与 SCSI 命令损坏或未响应相关的消息。您还可能会看到写入已超时的消息(另一个示例)。很难说您会看到什么,因为这取决于硬件和内核版本。
您可以使用smartctl --all /dev/<hard disk>
检查聪明的信息。这些信息内置于硬盘中,是磁盘告诉您其声音质量的方式。
您看到的 JBD 错误是因为 EXT3 日志被损坏了。如果 Live USB/CD 发行版因此无法挂载分区,您可以将 ext3 分区挂载为 ext2(忽略日志)以获取数据。但同样,您可能需要在使用 Unix 方面更加熟练才能做到这一点。但是,您可以在 Google 上搜索此过程,看看您是否可以在从 Live USB/CD 启动时执行此操作以允许您挂载分区。
答案4
我不确定 Red Hat Enterprise Linux 6 是否会出现这种情况,但在 RHEL 5 中,当删除一个名为“SysVinit”的 RPM 时就会发生这种情况。要解决该问题,请从救援模式启动并安装该 RPM。