불량 섹터가 디스크 고장을 표시합니까?


16

내 Ubuntu 13.10 시스템은 지난 하루 동안 매우 성능이 떨어졌습니다. 커널 로그를 보면 <1 년 된 3TB SATA 디스크에 특정 섹터에 문제가있는 것으로 보입니다.

Nov  4 20:54:04 mediaserver kernel: [10893.039180] ata4.01: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
Nov  4 20:54:04 mediaserver kernel: [10893.039187] ata4.01: BMDMA stat 0x65
Nov  4 20:54:04 mediaserver kernel: [10893.039193] ata4.01: failed command: READ DMA EXT
Nov  4 20:54:04 mediaserver kernel: [10893.039202] ata4.01: cmd 25/00:08:f8:3f:83/00:00:af:00:00/f0 tag 0 dma 4096 in
Nov  4 20:54:04 mediaserver kernel: [10893.039202]          res 51/40:00:f8:3f:83/40:00:af:00:00/10 Emask 0x9 (media error)
Nov  4 20:54:04 mediaserver kernel: [10893.039207] ata4.01: status: { DRDY ERR }
Nov  4 20:54:04 mediaserver kernel: [10893.039211] ata4.01: error: { UNC }
Nov  4 20:54:04 mediaserver kernel: [10893.148527] ata4.00: configured for UDMA/133
Nov  4 20:54:04 mediaserver kernel: [10893.180322] ata4.01: configured for UDMA/133
Nov  4 20:54:04 mediaserver kernel: [10893.180345] sd 3:0:1:0: [sdc] Unhandled sense code
Nov  4 20:54:04 mediaserver kernel: [10893.180349] sd 3:0:1:0: [sdc]
Nov  4 20:54:04 mediaserver kernel: [10893.180353] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
Nov  4 20:54:04 mediaserver kernel: [10893.180356] sd 3:0:1:0: [sdc]
Nov  4 20:54:04 mediaserver kernel: [10893.180359] Sense Key : Medium Error [current] [descriptor]
Nov  4 20:54:04 mediaserver kernel: [10893.180371] Descriptor sense data with sense descriptors (in hex):
Nov  4 20:54:04 mediaserver kernel: [10893.180373]         72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00
Nov  4 20:54:04 mediaserver kernel: [10893.180384]         af 83 3f f8
Nov  4 20:54:04 mediaserver kernel: [10893.180389] sd 3:0:1:0: [sdc]
Nov  4 20:54:04 mediaserver kernel: [10893.180393] Add. Sense: Unrecovered read error - auto reallocate failed
Nov  4 20:54:04 mediaserver kernel: [10893.180396] sd 3:0:1:0: [sdc] CDB:
Nov  4 20:54:04 mediaserver kernel: [10893.180398] Read(16): 88 00 00 00 00 00 af 83 3f f8 00 00 00 08 00 00
Nov  4 20:54:04 mediaserver kernel: [10893.180412] end_request: I/O error, dev sdc, sector 2944614392
Nov  4 20:54:04 mediaserver kernel: [10893.180431] ata4: EH complete

kern.log파일 33메가바이트 주위에 반복 위의 오류의 대부분이 가득하고, 분야는 반복 메시지에 어떤 다르게 표시되지 않습니다.

현재 마운트 해제 된 디스크에서 다음 명령을 실행하여 디스크에있을 수있는 모든 문제를 테스트하고 정렬하려고합니다. 나는 약 12 ​​시간 안에 디스크가 너무 커서 24/48 시간이 더 걸릴 것으로 예상합니다.

e2fsck -c -c -p -v /dev/sdc1

내 질문은 :이 드라이브가 실패합니까, 아니면 일반적인 문제를보고 있습니까? 불량 섹터를 수리 또는 무시해야 할 시점이 있는지, 그리고 보증 기간 동안 디스크를 교체해야하는지 궁금합니다. 위의 명령에 대한 지식이 다소 부족하므로 도움이 될지 의심 스럽습니다.

빠른 업데이트!

e2fsck는 마침내 'inode의 다중 청구 블록 (multiply-claimed block (s))'으로 2 일 만에 끝났다. 파일 시스템을 마운트하려고하면 오류가 발생하여 파일을 읽기 전용으로 되돌려 놓았습니다.

Nov 11 08:29:05 mediaserver kernel: [211822.287758] EXT4-fs (sdc1): warning: mounting fs with errors, running e2fsck is recommended
Nov 11 08:29:05 mediaserver kernel: [211822.301699] EXT4-fs (sdc1): mounted filesystem with ordered data mode. Opts: errors=remount-ro

섹터를 수동으로 읽으려고 시도 :

sudo dd count=1 if=/dev/sdc of=/dev/null skip=2944614392
dd: reading ‘/dev/sdc’: Input/output error
0+0 records in
0+0 records out
0 bytes (0 B) copied, 5.73077 s, 0.0 kB/s

그것에 쓰려고 시도 :

sudo dd count=1 if=/dev/zero of=/dev/sdc seek=2944614392
dd: writing to ‘/dev/sdc’: Input/output error
1+0 records in
0+0 records out
0 bytes (0 B) copied, 2.87869 s, 0.0 kB/s

두 카운트에서 Reallocated_Sector_Ct나머지는 0입니다.

드라이브는 자주 슬립 상태가됩니다. 나는 이것이 파일 시스템 문제 일 수 있다고 생각하고 있습니까? 난 100 %가 아니야


4
백업이 제대로 수행되었는지 확인한 다음 하드웨어를 확인하는 것이 거의 / 확실히 / 기호입니다.
Shadur

흠. 그들은 약간 구식이지만 거기에 관계없이 있습니다. 이 드라이브가 다른 결함있는 드라이브를 교체했기 때문에 매우 실망 스럽습니다.
MrNorm

디스크 고장, 진행 방법에 대해 다룬 다음 Q & A를 참조하십시오. unix.stackexchange.com/search?q=user%3A7453+hdat
slm

2
...이 드라이브가 결함이있는 드라이브를 교체 한 경우 드라이브가 아닌 컨트롤러 일 가능성이 있습니다.
Shadur

답변:


17

불량 섹터는 항상 HDD 고장을 나타냅니다. 실제로 이와 같은 I / O 오류가 발생하면 이미 일부 데이터가 손실 / 손상되었을 수 있습니다. 아직 백업하지 않은 경우 백업을 만들고 자체 테스트를 실행하고 smartctl -t long /dev/diskSMART 데이터를 확인하십시오 smartctl -a /dev/disk. 가능하면 교체하십시오.

불량 섹터는 수리 할 수 ​​없으며 예비 섹터로만 교체 할 수 있으며, 액세스 할 때마다 예비 섹터를 추가로 검색해야하기 때문에 HDD 성능을 저하시킵니다. 파일 시스템 계층에서 이러한 섹터를 불량으로 표시하면 액세스 할 수 없으므로 도움이됩니다. 그러나 어떤 섹터가 디스크에 의해 이미 재 할당되었는지 결정하기가 어렵 기 때문에 파일 시스템이 영향을받는 지역을 피할 수 없을 가능성이 있습니다.


감사. 그것이 항상 회색 영역 이었음을 아는 것이 정말 도움이됩니다. 보증 기간 내에 드라이브를 0으로 되돌려 보내겠습니다.
MrNorm

1
별로. 불량 섹터는 단지 섹터에 대한 트래픽이 매우 높다는 것을 나타냅니다. 대부분의 경우 디스크 고장을 나타냅니다. 느린 응답을 나쁜 것으로 표시하기 위해 탐색 속도를 조정할 수 있습니다 ... 항상 말하기에는 너무 복잡합니다.
RobotHumans

2
또한 어떤 이유로 실제 디스크보다 큰 파일 시스템에서 읽기 오류가 나타날 수 있습니다.
Thorbjørn Ravn Andersen은

@frostschutz의 의미는 Get a replacement if you can.무엇입니까? 디스크를 교체 하시겠습니까?
항공기

10

드라이브가 섹터를 재 할당하도록하려면 일반적으로 섹터에 무언가를 써야합니다. 그러나 dd( D isk D estroyer)가 항상 작동하는 것은 아니며 매우 안전하지 않습니다. skipseek옵션 을 혼동 하면 첫 번째 블록을 하고 해당 블록의 "오프셋"에서 블록을 작성하여 쉽게 발을 쏠 수 있습니다 . 하드 디스크의 섹터 0skipN/dev/zero .

섹터를 0으로 덮어 쓰려고한다는 것을 정말로 알고 있다면 다음을 사용해야합니다 hdparm.

% sudo hdparm --read-sector 833192656 /dev/sda
/dev/sda:
reading sector 833192656: FAILED: Input/output error

예, 섹터 833192656은 스마트 테스트에서도 실패했습니다. 0을 쓰려면 다음을 사용하십시오 --write-sector.

% sudo hdparm --write-sector 833192656 /dev/sda
/dev/sda:
Use of --write-sector is VERY DANGEROUS.
You are trying to deliberately overwrite a low-level sector on the media.
This is a BAD idea, and can easily result in total data loss.
Please supply the --yes-i-know-what-i-am-doing flag if you really want this.
Program aborted.

보호 수단으로 스위치를 hdparm전달하지 않으면 실제로 아무것도 쓰지 않습니다 .--yes-i-know-what-i-am-doinghdparm

% sudo hdparm --yes-i-know-what-i-am-doing --write-sector 833192656 /dev/sda
/dev/sda:
re-writing sector 833192656: succeeded
% sudo hdparm --read-sector 833192656 /dev/sda                              

/dev/sda:
reading sector 833192656: succeeded
0000 0000 0000 0000 0000 0000 0000 0000
[      ... more zeroes here...        ]
0000 0000 0000 0000 0000 0000 0000 0000

%

이것은 고대의 aswer이지만 "dd가 항상 작동하지는 않는다"는 것이 무엇을 의미하는지 궁금합니다. 지시에 따라 데이터를 쓰지 못할 수 있음을 제안하고 있습니까? 특히 오류가 발생하기 쉬운 것이 아니라 데이터를 복사하는 것입니다. 거의 모든 프로그래밍 언어에서 두 줄을 사용하여 동일한 결과를 얻을 수 있습니다.
TooTea

7

아니요, 불량 섹터가 항상 드라이브 고장을 나타내는 것은 아닙니다 . 정전시 쓰기가 진행중인 경우 섹터의 데이터가 손상되어 읽을 때 오류가 발생하는 경우가 있습니다. 새로운 데이터를 섹터에 쓰려고 시도하는 것은 물리적으로 아무런 문제가 없으므로 제대로 작동 할 수 있습니다.

badblocks -n드라이브에서 실행 하여 모든 섹터를 읽고 다시 쓸 수 있으며, 문제의 섹터 수를 이미 알고 있으므로 dd0을 쓸 수 있습니다 . 로 SMART 통계를 확인할 수 있습니다 smartctl -a. 재 할당 된 계류 카운트는 읽지 못한 섹터 수를 나타내며, 섹터를 쓰려고 시도하면이 카운트가 내려갑니다. 재 할당 된 섹터 수는 증가 할 수 있으며,이 경우 물리적으로 나쁘고 스페어 풀로 다시 매핑되어 드라이브가 종료되고 있다는 신호일 수 있습니다. 그렇지 않다면, 그것은 단지 혼란에 빠졌고 지금은 괜찮을 것입니다.

먼저 섹터를 읽으십시오.

dd count=1 if=/dev/sda of=/dev/null skip=nnnn

그것이 실패하면, 당신은 숫자가 맞다면, 당신은 그것을 0으로 만들 수 있습니다 :

dd count=1 if=/dev/zero of=/dev/sda seek=nnnn

Enter 키를 누르기 전에 명령을 정확하게 입력했는지 다시 확인하십시오.


명령에 따라 흥미로운 정보를 얻었으므로 흥미 롭습니다. 위의 질문을 수정했습니다.
MrNorm

어떤 이유로 드라이브가 SMART를 지원하지 않습니까? 아니면 아직 확인하지 않은 이유는 무엇입니까?
frostschutz 10

1
@frostschutz "두 카운트에서 Reallocated_Sector_Ct 는 0으로 남아 있습니다." OP SMART 확인한 것 같습니다 .
CVn

@ MrNorm, smartctl -a질문에 전체 출력을 추가하십시오 .
psusi

2
이것을 사용하지 마십시오 (항상 작동하는 것은 아닙니다) 내 답변
Antti Haapala
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.