하드(HDD) 에러는 PC 의 안정성을 해치는 가장 1순위의 문제이다.
서버운영을 할때는 더욱더 문제가 된다. 왜냐 바로 서비스중지를 뜻하기 때문이다.

배드섹터 같은 부분적인 에러도 있고, 파티션 접근 불가.
하드 컨트롤러 I/O 에러 등 정말 다양하다.
이런 하드웨어 에러는 어떻게 방법이 없다. (새것으로 교체하는 것이 상책이다.)

그런데, 리눅스의 하드관련 에러는 어떤 것들이 있을까?
(공식적인 문서가 있는지는 아직 찾지 못했다. 경험 및 검색자료를 바탕으로 정리한다)

에러메시지 #1

ata1: translated ATA stat/err 0x51/40 to SCSI SK/ASC/ASCQ 0x3/11/04
ata1: status=0x51 { DriveReady SeekComplete Error }
ata1: error=0x40 { UncorrectableError }

sd 0:0:0:0: SCSI error: return code = 0x8000002
sda: Current: sense key: Medium Error
Additional sense: Unrecovered read error – auto reallocate failed
end_request: I/O error, dev sda, sector 64702406

 * http://kldp.org/node/89071
 * http://kerneltrap.org/node/8220

[이유] : 배드블럭(배드섹터) 인 경우가 대부분인듯.
[해결책] :  배드블럭을 체크하고, 파일시스템을 만들때 배드블럭은 피해서 만든다.

badblocks -v o hda1_bad_blocks /dev/hda1
mkfs.ext3 -l hda1_bad_blocks /dev/hda1
배드블럭이 많이 생긴경우 교체해서 사용하는 것이 좋을 것이다.
(시스템용으로는 피하고 데이터용으로 사용하는 것이 좋을 듯)

[기타] : 리눅스 시스템이 민감해서 인지, 저런 배드블럭이 발생했을때(/var 파티션에서 발생)
시스템이 동작하지 않는 상황이 발생했다.
하드에러가 발생해 /var 파티션을 read-only 로 바꿔서, 쓰기작업을 못해서(log) 그런것이었다.
왜 /var 파티션을 나눠놓는 것을 권장하는지 알것 같다.

에러메시지 #2

dma_intr: status=0x51 { DriveReady SeekComplete Error }
dma_intr: error=0x84 { DriveStatusError BadCRC }
ide: failed opcode was: unknown
 * http://kerneltrap.org/node/8220#comment-259389
 * http://forums.gentoo.org/viewtopic.php?t=37451
 * dma 세팅은 하드 수명을 단축시키는가?
 * DMA 옵션을 조정해 본다.( http://www.goldfisch.at/knowledge/316 )

[이유] : Bad block , hdparm DMA 세팅오류?  케이블 이상. UDMA 지원하는 케이블   등의 이유.

[해결책] : hdparm 조정 – http://gentoo-wiki.com/HOWTO_Use_hdparm_to_improve_IDE_device_performance
hdparm -iv /dev/hda 을 해보면

 DMA modes:  mdma0 mdma1 mdma2
 UDMA modes: udma0 udma1 udma2 udma3 *udma4 udma5
이런 부분이 있다.( * 체크된 부분이 현재 설정된 모드 )
UDMA 지원은 BIOS , 하드드라이브, 운영체제, 케이블 등 잘 맞추어져야 한다.

나의 경우 위의 에러가 발생했을때 hdparm 를 체크해보니,

DMA modes:  mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2
처럼 되어 있었다. UDMA100(udma5) 까지 지원하는데도 불구하고, 게다가 (*) 로 체크도 되어 있지 않았다.
위 문제는 케이블을 교체한 후에 이상없이 잘 쓰고 있다(바꾼지 얼마되지 않아, 아직 체크중이다)

[기타] : 참고로 SATA 하드는 hdparm 로 조정할 수 없다. 대신 sdparm 가 있다.(옵션은 좀 다르다.)


에러메시지 #2a
 #2 와는 좀 다른 메세지.( http://www.mail-archive.com/linux-newbie@vger.kernel.org/msg06860.html )

hdb: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hdb: dma_intr: error=0x10 { SectorIdNotFound }, LBAsect=39102336, sector=39102336
ide: failed opcode was: unknown
>> hdb: dma_intr: error=0x10 { SectorIdNotFound }, LBAsect=39102336, sector=39102336 두번째 부분 차이.

리눅스의 하드(HDD)에러 메세지들의 의미

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다