글 수 367
출처 : devlgo.experlab.com
하드(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 }* http://kerneltrap.org/node/8220#comment-259389
dma_intr: error=0x84 { DriveStatusError BadCRC }ide: failed opcode was: unknown
* 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처럼 되어 있었다. UDMA100(udma5) 까지 지원하는데도 불구하고, 게다가 (*) 로 체크도 되어 있지 않았다.
UDMA modes: udma0 udma1 udma2
위 문제는 케이블을 교체한 후에 이상없이 잘 쓰고 있다(바꾼지 얼마되지 않아, 아직 체크중이다)
[기타] : 참고로 SATA 하드는 hdparm 로 조정할 수 없다. 대신 sdparm 가 있다.(옵션은 좀 다르다.)
에러메시지 #2a
#2 와는 좀 다른 메세지.( http://www.mail-archive.com/linux-newbie@vger.kernel.org/msg06860.html )
>> hdb: dma_intr: error=0x10 { SectorIdNotFound }, LBAsect=39102336, sector=39102336 두번째 부분 차이.hdb: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hdb: dma_intr: error=0x10 { SectorIdNotFound }, LBAsect=39102336, sector=39102336
ide: failed opcode was: unknown