在dmesg中100%iowait +驱动器故障

我有一个服务器上驻有相当访问的Web应用程序。
它有2个硬盘,64MB缓冲,7200转的raid1。
今天它开始抛出错误,如:

kernel: ata2.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen kernel: ata2.00: cmd b0/d0:01:00:4f:c2/00:00:00:00:00/00 tag 0 pio 512 in kernel: res 40/00:00:00:4f:c2/00:00:00:00:00/00 Emask 0x4 (timeout) kernel: ata2.00: status: { DRDY } kernel: ata2: hard resetting link kernel: ata2: SATA link up 3.0 Gbps (SStatus 123 SControl 300) kernel: ata2.00: max_sectors limited to 256 for NCQ kernel: ata2.00: max_sectors limited to 256 for NCQ kernel: ata2.00: configured for UDMA/133 kernel: sd 1:0:0:0: timing out command, waited 7s kernel: ata2: EH complete kernel: SCSI device sda: 976773168 512-byte hdwr sectors (500108 MB) kernel: sda: Write Protect is off kernel: SCSI device sda: drive cache: write back 

一整天它的负荷已经超过了10-15。
我正在监视它,它给了一些奇怪的读数:

 DSK | sda | busy 100% | read 2 | write 208 | KiB/r 16 | KiB/w 32 | MBr/s 0.00 | MBw/s 0.65 | avq 86.17 | avio 47.6 ms | DSK | sdb | busy 1% | read 10 | write 117 | KiB/r 17 | KiB/w 5 | MBr/s 0.02 | MBw/s 0.07 | avq 4.86 | avio 1.04 ms | 

坦率地说,我不明白为什么只有sda正在全力以赴。 我有一个过程,不断用1-2megs写,但是到底是什么.. 100%iowait?

更新:
smartctl -A / dev / sda

 ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x002f 200 200 051 Pre-fail Always - 0 3 Spin_Up_Time 0x0027 239 239 021 Pre-fail Always - 8050 4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 22 5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0 7 Seek_Error_Rate 0x002e 200 200 000 Old_age Always - 0 9 Power_On_Hours 0x0032 100 100 000 Old_age Always - 595 10 Spin_Retry_Count 0x0032 100 253 000 Old_age Always - 0 11 Calibration_Retry_Count 0x0032 100 253 000 Old_age Always - 0 12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 21 192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 20 193 Load_Cycle_Count 0x0032 200 200 000 Old_age Always - 22 194 Temperature_Celsius 0x0022 118 106 000 Old_age Always - 32 196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0 197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 0 198 Offline_Uncorrectable 0x0030 100 253 000 Old_age Offline - 0 199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 0 200 Multi_Zone_Error_Rate 0x0008 100 253 000 Old_age Offline - 0 

它看起来像驱动器可能失败 – 系统正在重置驱动器/连接试图通过它。 我猜,既然你可以看到sda和sdb的状态,这是一个软件RAID,所以你应该能够检查/ proc / mdstat,看看软件RAID可能会发生什么。

IOWait是因为软件raid正在等待写入sda。 这反过来阻碍了进程并导致高负载数量。

你应该尽快更换你的SDA。

看起来像一个错误的磁盘给我…

sda不及时处理I / O请求。 如果不是驱动器,那么你的I / O就不平衡了。 你在sda上有交换分区吗? 如果是这样,你可能会有内存问题导致内存页进出交换。 确保您有相同的优先级在两个驱动器上交换空间分配。 程序sar可能会有所帮助。