fsck 在读取块 24251xx(尝试从文件系统读取块导致读取时间过短)并从扫描中获取下一个 inode 时出现大量错误。忽略错误 (y)?
强制重写 (y)?
有时会混入其他输出:
[8222.00061] ata1.00:异常 Emask 0x0 .一堆十六进制.frozen [8222.00124] ata1.00 cmd ..一堆十六进制.. in [8222.00264] res ..一堆十六进制..(超时) [8222.00124] ata1.00:状态:{DRDY}
发生了什么事?我该怎么办?
更新:我发现了第二部分。这是Libata 错误消息来自内核,表明驱动器没有及时响应命令。这条建议应该会有所帮助 [我通过 fsck 后会告诉你情况如何]
具体来说,可以通过 acpi=off 或 'noapic' 或 pci=nomsi 或 pci=biosirq 解决超时问题。
答案1
最有可能的是你的硬盘已经坏了...
获取一个 Live CD(Ubuntu Install/Live CD 就可以)。
如果该磁盘上有任何重要数据且未备份,以只读方式安装磁盘并从磁盘上复制所有内容。
dd
然后,尝试使用或制作该分区的映像dd_rescue
,将其复制到另一个分区或作为文件复制到其他地方(如果没有空间,请将映像制作到 /dev/null),以便查看磁盘是否有任何物理损坏。
如果在使用 复制文件时出现介质错误dd
,请对新副本执行 fsck 操作(挂载回送或使用真实分区,如果使用 /dev/null,则必须使用真实磁盘重新开始)并复制所有仍可复制的数据。然后尝试调查磁盘制造商以及它是否仍有保修。如果是,请继续使用制造商的测试工具……如果没有,请使用 SMART 工具检查是否还有任何可重新分配的扇区,如果有,请尝试使用 将零写入损坏的扇区dd
(这将重新分配它们)。如果您没有任何运气,您将不得不尝试在损坏区域周围进行分区;或使用 的-c
选项mkfs.ext[23]
。
如果没有介质错误,则必须重新格式化磁盘并再次复制数据。通常 ext3(我猜是......)比其他文件系统要强大得多,所以我真的不认为这仅仅是文件系统错误......
答案2
如果尝试 fsck 时数字一致,则说明您有一个坏扇区。不幸的是,您将丢失存储在该 inode 中的任何文件。
检查智能状态,它通常会告诉您磁盘有多少坏块。希望只有几个。如果它告诉您磁盘出现故障,我希望您有备份。
运行fsck -c /dev/WHATEVER
应该会进行坏块扫描,然后告诉您丢失了什么(或者需要从备份中恢复)。