Debian

執行任何命令時出現“輸入輸出錯誤”

  • October 19, 2020

上週一早上,我發現我的伺服器無法執行任何命令,並且顯示“輸入輸出錯誤”。嘗試了半個小時,我發現唯一可以執行的命令是sudo poweroff -f(必須使用標誌-f否則我得到“輸入輸出錯誤”)。

我手動啟動伺服器,並檢查系統日誌,但我沒有什麼特別的。我做了一個 smartctl 測試來確認硬碟是否有問題。它沒有錯誤地通過了。

然後這個星期一這個問題再次出現。我關閉伺服器並手動啟動它,它看起來很好,就像什麼都沒發生一樣。然後我使用 msmtest86 8.2 測試記憶棒是否正常。並確保SATA線和硬碟完好,連接可靠。

我想可能是作業系統或文件系統的問題?我的作業系統是 Debian 8.11。你能給我一些建議嗎?謝謝你們!

我發現我的伺服器無法執行任何命令,並且顯示“輸入輸出錯誤”

命令啟動時的錯誤程式碼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

尋找關鍵部分:

  • DRDY,ERR並且UNC在大括號中
  • 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 狀態中直言不諱(我在看著你,東芝);我以前的筆記型電腦硬碟在讀取時突然停止,出現讀取錯誤,並且在其狀態寄存器中仍然顯示“沒有問題”。

如果您的伺服器是關鍵任務,那麼您應該考慮基於RAID的設置。


  • 1 **警示故事:**我的室友曾經忽略了這個警告,並且無論如何都要在他的桌面系統上繼續使用文件系統檢查器。他沒有等我檢查它,直到它最終無法啟動。一有機會檢查,磁碟損壞已經無法恢復(500 GB的磁碟只能以蝸牛的速度KB / s勉強讀取,即使經過幾天也沒有發現明顯的連續可讀區域)。

另一方面,在另一個具有相同症狀的情況下,機器所有者聽從了我的警告,並在我可以檢查之前將其關閉。當然,這是硬碟故障。經過半天的GNU DDRescue會話和一個新硬碟後,我給他帶來了一個好消息,他的系統和數據在塊級別上 100% 恢復 - 即所有文件完好無損,無需任何修改即可再次啟動。

引用自:https://unix.stackexchange.com/questions/542554