
자주 방문한 웹 앱이 있는 서버가 있습니다.
HDD 2개, 64MB 버퍼, 7200RPM의 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
답변1
드라이브에 오류가 발생한 것 같습니다. 시스템이 드라이브/연결을 재설정하고 있습니다. sda와 sdb의 상태를 모두 볼 수 있으므로 소프트웨어 RAID이므로 /proc/mdstat를 확인하여 소프트웨어 RAID에 무슨 일이 일어나고 있는지 확인할 수 있어야 합니다.
IOWait는 소프트웨어 RAID가 sda에 쓰기를 기다리고 있기 때문에 발생합니다. 이로 인해 프로세스가 중단되고 로드 수가 많아집니다.
최대한 빨리 sda를 교체해야 합니다.
답변2
제가 보기에는 디스크에 결함이 있는 것 같습니다...
답변3
sda가 I/O 요청을 즉시 처리하지 않습니다. 드라이브가 아닌 경우 I/O에 불균형이 있는 것입니다. sda에 스왑 파티션이 있나요? 그렇다면 메모리 문제로 인해 스왑 안팎으로 메모리 페이지가 스래싱될 수 있습니다. 두 드라이브 모두에 동일한 우선순위로 스왑 공간을 할당했는지 확인하십시오. sar 프로그램이 도움이 될 수 있습니다.