Ubuntu

儘管進行了 raid 設置,Ubuntu 伺服器對硬碟問題仍無響應

  • March 21, 2015

我在 Ubuntu 10.04.4 LTS(Linux xxxx 2.6.32-67-server #134-Ubuntu SMP Wed Sep 24 18:55:00 UTC 2014 x86_64 GNU/Linux)上執行一個伺服器,軟體突襲 1 中有兩個硬碟.

我反复遇到系統在很長一段時間(> 1 小時)內完全沒有響應的問題,從而有效地關閉了伺服器。RAID 將問題磁碟保留在陣列中,有時會開始重建。我在三台不同的機器上遇到了同樣的問題(相同的設置)。

有沒有一種簡單的方法來防止這種停機時間?故障磁碟本身並沒有給我帶來太多困擾(它們都已經連續執行了幾年),但是由此產生的停機時間確實讓我感到困擾。我的印像是即使一個硬碟出現故障,raid 1 也會讓系統繼續執行。如果 raid 控制器只是將磁碟從陣列中踢出並且系統將繼續工作,那將是非常好的。如果它試圖在不凍結的情況下在後台解決問題,那就更好了。只要係統保持可操作性,一些性能下降也不是問題。

以下是此類事件的範例日誌條目:

Nov 14 14:00:10 xxxx kernel: [2137088.775542] ata2.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
Nov 14 14:00:10 xxxx kernel: [2137088.788591] ata2.00: irq_stat 0x40000001
Nov 14 14:00:10 xxxx kernel: [2137088.801879] ata2.00: failed command: READ DMA EXT
Nov 14 14:00:10 xxxx kernel: [2137088.814988] ata2.00: cmd 25/00:80:d1:b9:89/00:00:16:00:00/e0 tag 0 dma 65536 in
Nov 14 14:00:10 xxxx kernel: [2137088.814991]          res 51/40:00:d3:b9:89/00:00:16:00:00/e0 Emask 0x9 (media error)
Nov 14 14:00:10 xxxx kernel: [2137088.867197] ata2.00: status: { DRDY ERR }
Nov 14 14:00:10 xxxx kernel: [2137088.880205] ata2.00: error: { UNC }
Nov 14 14:00:10 xxxx kernel: [2137088.906336] ata2.00: configured for UDMA/133
Nov 14 14:00:10 xxxx kernel: [2137088.906345] sd 1:0:0:0: [sdb] Unhandled sense code
Nov 14 14:00:10 xxxx kernel: [2137088.906347] sd 1:0:0:0: [sdb] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
Nov 14 14:00:10 xxxx kernel: [2137088.906351] sd 1:0:0:0: [sdb] Sense Key : Medium Error [current] [descriptor]
Nov 14 14:00:10 xxxx kernel: [2137088.906356] Descriptor sense data with sense descriptors (in hex):
Nov 14 14:00:10 xxxx kernel: [2137088.906358]         72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00 
Nov 14 14:00:10 xxxx kernel: [2137088.906367]         16 89 b9 d3 
Nov 14 14:00:10 xxxx kernel: [2137088.906371] sd 1:0:0:0: [sdb] Add. Sense: Unrecovered read error - auto reallocate failed
Nov 14 14:00:10 xxxx kernel: [2137088.906376] sd 1:0:0:0: [sdb] CDB: Read(10): 28 00 16 89 b9 d1 00 00 80 00
Nov 14 14:00:10 xxxx kernel: [2137088.906385] end_request: I/O error, dev sdb, sector 378124755
Nov 14 14:00:10 xxxx kernel: [2137088.919172] ata2: EH complete

這是 raid 設置(cat /proc/mdstat):

Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] [linear] [multipath]
md2 : active raid1 sda3[0] sdb3[1]
     726266432 blocks [2/2] [UU]

md1 : active raid1 sdb2[1] sda2[0]
     2104448 blocks [2/2] [UU]

md0 : active raid1 sdb1[1] sda1[0]
     4200896 blocks [2/2] [UU]

unused devices: <none>

提前非常感謝!

您正在使用軟體 RAID。您沒有“RAID 控制器”來“從陣列中踢出磁碟”。相反,您已經讓核心管理 ATA 控制器,並且當磁碟沒有響應時(在這種情況下,因為它們有媒體錯誤)核心等待。這種情況並不總是會產生明顯的症狀,但它肯定會。

簡單的做法是使用硬體 RAID 控制器。即便如此,奇怪的邊緣案例故障仍然有可能產生明顯的症狀,但可能性要小得多。即使面對媒體錯誤,真正的硬體 RAID 控制器也能更好地保持機器響應。

引用自:https://serverfault.com/questions/644487