내 이야기는 아주 간단하게 시작됩니다. Arch Linux를 실행하는 가벼운 서버가 있는데, 대부분의 데이터를 두 개의 SATA 드라이브로 구성된 RAID-1에 저장합니다. 약 4 개월 동안 아무런 문제없이 작동했습니다. 그런 다음 갑자기 드라이브 중 하나에서 읽기 오류가 발생하기 시작했습니다. 항상 메시지는 다음과 같이 많이 보입니다.
Apr 18 00:20:15 hope kernel: [307085.582035] ata5.01: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
Apr 18 00:20:15 hope kernel: [307085.582040] ata5.01: failed command: READ DMA EXT
Apr 18 00:20:15 hope kernel: [307085.582048] ata5.01: cmd 25/00:08:08:6a:34/00:00:27:00:00/f0 tag 0 dma 4096 in
Apr 18 00:20:15 hope kernel: [307085.582050] res 51/40:00:0c:6a:34/40:00:27:00:00/f0 Emask 0x9 (media error)
Apr 18 00:20:15 hope kernel: [307085.582053] ata5.01: status: { DRDY ERR }
Apr 18 00:20:15 hope kernel: [307085.582056] ata5.01: error: { UNC }
Apr 18 00:20:15 hope kernel: [307085.621301] ata5.00: configured for UDMA/133
Apr 18 00:20:15 hope kernel: [307085.640972] ata5.01: configured for UDMA/133
Apr 18 00:20:15 hope kernel: [307085.640986] sd 4:0:1:0: [sdd] Unhandled sense code
Apr 18 00:20:15 hope kernel: [307085.640989] sd 4:0:1:0: [sdd] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
Apr 18 00:20:15 hope kernel: [307085.640993] sd 4:0:1:0: [sdd] Sense Key : Medium Error [current] [descriptor]
Apr 18 00:20:15 hope kernel: [307085.640998] Descriptor sense data with sense descriptors (in hex):
Apr 18 00:20:15 hope kernel: [307085.641001] 72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00
Apr 18 00:20:15 hope kernel: [307085.641010] 27 34 6a 0c
Apr 18 00:20:15 hope kernel: [307085.641020] sd 4:0:1:0: [sdd] Add. Sense: Unrecovered read error - auto reallocate failed
Apr 18 00:20:15 hope kernel: [307085.641023] sd 4:0:1:0: [sdd] CDB: Read(10): 28 00 27 34 6a 08 00 00 08 00
Apr 18 00:20:15 hope kernel: [307085.641027] end_request: I/O error, dev sdd, sector 657746444
Apr 18 00:20:15 hope kernel: [307085.641035] ata5: EH complete
Apr 18 00:20:15 hope kernel: [307085.641672] md/raid1:md16: read error corrected (8 sectors at 657744392 on sdd1)
Apr 18 00:20:17 hope kernel: [307087.505082] md/raid1:md16: redirecting sector 657742336 to other mirror: sdd1
각 오류는 다른 섹터 번호에 대해 불평했고 디스크에 액세스하는 사용자 (me)에 대해 몇 초의 지연이 수반되었습니다.
smartctl 출력을 확인하고 다음과 같은 출력을 보았습니다 (관련 부품이 잘리지 않음).
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x002f 193 193 051 Pre-fail Always - 1606
5 Reallocated_Sector_Ct 0x0033 194 194 140 Pre-fail Always - 0
196 Reallocated_Event_Count 0x0032 162 162 000 Old_age Always - 0
197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 51
로그를 되돌아 보면 오류가 실제로 며칠 동안, 주로 백업 중에 발생하지만 매우 가벼운 사용 중에 (텍스트 파일을 저장하려고 할 때마다 약 5 회마다) 발생하는 것을 발견했습니다. 디스크가 죽어 가고 RAID-1이 디스크를 적절하게 처리하고 있으며 교체 디스크를 주문할 때라고 결론을 내 렸습니다. 새 디스크를 주문했습니다.
놀랍게도, 하루 후, 오류는 ... 중지되었습니다. 나는 그들을 고치기 위해 아무것도하지 않았다. 나는 재부팅하지 않았고 드라이브를 오프라인으로 만들지 않았습니다. 그러나 오류는 막을 내렸다.
이 시점에서 불량 섹터가 디스크의 유휴 부분에 있는지 궁금한 점이 궁금합니다. RAID에서 디스크를 꺼내 RAID에 다시 넣은 다음 전체 재 동기화를 완료 할 수있었습니다. 재 동기화는 9 시간 후에 오류없이 완료되었습니다 (2TB 디스크는 시간이 조금 걸립니다).
또한 smartctl 출력은 다음과 같이 약간 변경되었습니다.
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x002f 193 193 051 Pre-fail Always - 1606
5 Reallocated_Sector_Ct 0x0033 194 194 140 Pre-fail Always - 43
196 Reallocated_Event_Count 0x0032 162 162 000 Old_age Always - 38
197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 0
그래서, 이상하게 여기는 부분은 "나쁜 디스크는 언제부터 스스로를 고치는가?"입니다.
드라이브의 아주 작은 영역이 자발적으로 나빠질 수 있고 섹터 재 할당 코드가 시작되기 전에 드라이브가 3 일 (!) 걸렸고 디스크의 나쁜 영역에 일부 예비 섹터를 매핑했다고 가정합니다 ... 그러나 나는 그것이 일어난 것을 본 적이 없다.
다른 사람이 이런 종류의 행동을 본 적이 있습니까? 그렇다면 그 드라이브에 대한 경험은 어떠 했습니까? 다시 일어 났습니까? 디스크가 결국 완전히 실패 했습니까? 아니면 설명 할 수없는 채로 남아있는 설명 할 수없는 결함일까요?
제 경우에는 이미 교체 드라이브 (보증서에 따름)가 있으므로 어쨌든 드라이브를 교체 할 것입니다. 그러나 내가 어떻게 든 이것을 잘못 진단했는지 알고 싶습니다. 도움이된다면 문제가 발생했을 때의 'smartctl -a'출력이 완료되었습니다. 조금 길어서 여기에 게시하지 않았습니다.