100% iowait + dmesg のドライブ障害

100% iowait + dmesg のドライブ障害

かなりアクセスの多い Web アプリが常駐するサーバーがあります。2
台の HDD の RAID1、64MB バッファ、7200 RPM です。
今日、次のようなエラーが出始めました:

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 を超えています。Atop
で監視していますが、奇妙な数値が表示されています。

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~2 MB で常に書き込みを行っているプロセスが 1 つありますが、一体全体、何なのでしょう。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

答え1

ドライブに障害が発生しているようです。システムはドライブ/接続をリセットして、ドライブにアクセスしようとしています。sda と sdb の両方のステータスを確認できるので、ソフトウェア RAID であると思われます。そのため、/proc/mdstat をチェックして、ソフトウェア RAID で何が起こっているかを確認できるはずです。

IOWait は、ソフトウェア RAID が SDA への書き込みを待機しているために発生します。これによりプロセスが遅延し、負荷が高くなります。

できるだけ早く sda を交換する必要があります。

答え2

ディスクに欠陥があるように見えます...

答え3

sda は I/O 要求を迅速に処理していません。ドライブに問題がない場合は、I/O に不均衡があります。sda にスワップ パーティションがありますか? ある場合は、メモリの問題により、メモリ ページがスワップに出入りするスラッシングが発生する可能性があります。両方のドライブに同じ優先度でスワップ領域が割り当てられていることを確認してください。プログラム sar が役立つ場合があります。

関連情報