执行任何命令时出现“输入输出错误”

执行任何命令时出现“输入输出错误”

上周一早上,我发现我的服务器无法运行任何命令,并且显示“输入输出错误”。尝试了半个小时,我发现唯一可以执行的命令是sudo poweroff -f(必须使用标志-f,否则我得到“输入输出错误”)。
我手动启动服务器,并检查系统日志,但没有什么特别的。我做了一个smartctl测试来确认硬盘是否有问题。并且顺利通过。
然后这个周一这个问题又出现了。我关闭服务器并手动启动它,看起来很好,就像什么都没发生一样。然后我使用msmtest86 8.2测试内存条是否正常。并确保SATA电缆和硬盘状况良好且连接可靠。
我想可能是操作系统或文件系统的问题?我的操作系统是 Debian 8.11。你能给我一些建议吗?谢谢你们!

答案1

我发现我的服务器无法运行任何命令,并且显示“输入输出错误”

EIO当文件系统损坏时,命令启动时会出现错误代码(“输入/输出错误”);或者更糟糕的是,当您在有故障的存储上运行时。

交叉手指;无论哪种方式,请注意此时除非确实必要,否则不应尝试打开服务器电源1

考试

有一种可靠的方法可以区分两个根本原因:对系统进行块级读取扫描,并留意内核消息。

  1. 使用 GNU/Linux 恢复启动盘启动系统。
  2. 将系统更改为纯旧文本控制台(按 Ctrl+Alt+F1);不要为此使用图形终端
  3. 以 root 身份登录。
  4. 运行dmesg -E以在控制台上启用实时内核消息显示。
  5. 不过运行dmesg -n debug让低级内核消息。
  6. 运行blkid看看是哪个磁盘包含系统分区。 (请注意,blkid将列出分区;从分区路径末尾去除编号,您将获得磁盘)
  7. 运行time -p dd if=/dev/sda of=/dev/null bs=4M以进行整个-磁盘阅读测试(请仔细输入)。如果您的系统磁盘不是/dev/sda,相应地替换。
  8. 观看屏幕(需要很长时间)...

结果

  • 在成功且顺利完成的最佳情况下dd,这可能是文件系统问题。

    • 如果您愿意从启动磁盘进行文件系统检查,那么现在就可以这样做(推荐)。
    • 如果您想让系统自行对其进行排序,请重新启动(也删除启动磁盘),然后启动常用系统,但将其fsck.mode=force附加到内核命令行的末尾。 (看这个问题详情)
    • 不过,讨论文件系统检查的结果会产生不同的问题。
  • 然而,在最坏的情况下,你会在屏幕上看到这样的内核消息:

    ata2.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
    ata2.00: irq_stat 0x40000001
    ata2.00: failed command: READ DMA EXT
    ata2.00: cmd 25/00:08:78:15:c5/00:00:6c:00:00/e0 tag 0 dma 4096 in
             res 51/40:00:78:15:c5/00:00:6c:00:00/e0 Emask 0x9 (media error)
    ata2.00: status: { DRDY ERR }
    ata2.00: error: { UNC }
    ata2.00: configured for UDMA/100
    sd 1:0:0:0: [sda] Unhandled sense code
    sd 1:0:0:0: [sda]  
    Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
    sd 1:0:0:0: [sda]  
    Sense Key : Medium Error [current] [descriptor]
    Descriptor sense data with sense descriptors (in hex):
            72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00 
            6c c5 15 78 
    sd 1:0:0:0: [sda]  
    Add. Sense: Unrecovered read error - auto reallocate failed
    sd 1:0:0:0: [sda] CDB: 
    Read(10): 28 00 6c c5 15 78 00 00 08 00
    end_request: I/O error, dev sda, sector 1824855416
    Buffer I/O error on device sda, logical block 228106927
    ata2: EH complete
    

    寻找关键部分:

    • DRDYERRUNC在大括号中
    • Medium Error地位
    • Unrecovered read error感知信息

    如果您浏览并在消息中找到这些内容(即使一次),它们表明您正面临物理磁盘错误。

    当这种情况发生时,不要让dd完成,按 Ctrl+C 停止,现在;关闭您的系统,并且将您的磁盘带到数据恢复店你信任。

  • 如果您没有找到上述最坏情况的迹象,而是发现重复出现这种内核消息:

    ata2: exception Emask 0x10 SAct 0x0 SErr 0x4040000 action 0xe frozen
    ata2: irq_stat 0x00000040, connection status changed
    ata2: SError: { CommWake DevExch }
    ata2: hard resetting link
    ata2: link is slow to respond, please be patient (ready=0)
    

    关键部分:

    • hard resetting link
    • link is slow to respond

    那么您将面临 SATA 链接问题(例如布线不良):按 Ctrl+C 停止,关闭系统,修复磁盘电缆和连接,然后重试。

旁注

我做了一个smartctl测试来确认硬盘是否有问题。并且顺利通过。

当心有些硬盘的 SMART 状态直接表明了谎言(我在看着你,东芝);我以前的笔记本电脑硬盘在读取时突然停止,喷出读取错误,并且状态寄存器中仍然显示“没有问题”。

如果您的服务器是关键任务,那么您应该考虑袭击基于设置。


  • 1 警示故事:我的室友曾经忽略了这个警告,并让文件系统检查器在他的桌面系统上运行。他没等我查就查了最终无法启动。当我有机会检查时,磁盘损坏已经无法恢复(500GB磁盘只能勉强以蜗牛速度KB/s读取,并且几天后也没有发现明显的连续可读区域)。

    另一方面,在另一起具有相同症状的案例中,机器所有者听从了我的警告,将其搁置,直到我可以检查它。当然,这是硬盘故障。经过半天的时间GNU DDR救援会话和一个新硬盘后,我给他带来了一个好消息,他的系统和数据在块级别上已 100% 恢复 - 即所有文件完好无损,并且无需任何修改即可再次启动。

答案2

尽管驱动器通过了所有 SMART 测试,但在导航文件夹和访问文件时,我在 Linux 服务器(运行 Debian 10)上遇到了此错误。我无法使用 Stackexchange 上发布的任何答案解决该问题。

我在 3.5 英寸驱动器托架中使用 2.5 英寸硬盘,结果发现驱动器因 SATA 连接器振动而丢失。我关闭服务器并将驱动器牢固地重新插入,错误消失了。

相关内容