불량 섹터는 디스크 오류를 나타냅니까?

불량 섹터는 디스크 오류를 나타냅니까?

내 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크기는 약 33MB로 대부분 위와 같은 반복 오류들로 채워져 있으며, 반복되는 메시지에서도 섹터는 크게 다르지 않은 것으로 보입니다.

현재 디스크에 발생할 수 있는 문제를 테스트하고 해결하기 위해 마운트 해제된 디스크에서 다음 명령을 실행하고 있습니다. 약 12시간이 걸렸으며 디스크가 너무 크기 때문에 추가로 24/48시간이 걸릴 것으로 예상됩니다.

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

내 질문은: 이 드라이브에 문제가 있습니까? 아니면 여기서 일반적인 문제를 보고 있습니까? 불량 섹터를 수정하거나 무시하는 것이 의미가 있는지, 보증 기간이 남아 있는 동안 디스크를 교체해야 하는지 궁금합니다. 위 명령에 대한 지식이 다소 부족하여 도움이 될지 의문입니다.

곧 업데이트하세요!

e2fsck는 많은 "inode에 선언된 블록"이 많아 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%가 아니다.

답변1

불량 섹터는 항상 HDD 고장을 나타내며 실제로 이러한 I/O 오류가 표시되면 일부 데이터가 손실/손상되었을 수 있습니다. 아직 수행하지 않은 경우 백업을 만들고 자체 테스트를 실행 smartctl -t long /dev/disk하고 SMART 데이터를 확인하십시오 smartctl -a /dev/disk. 가능하다면 다른 것을 구입하세요.

불량 섹터는 복구할 수 없으며 예약된 섹터로만 교체할 수 있습니다. 이는 액세스할 때마다 예약된 섹터를 추가로 조회해야 하기 때문에 HDD 성능을 저하시킵니다. 파일 시스템 계층에서 이러한 섹터를 불량으로 표시하면 액세스할 수 없기 때문에 도움이 됩니다. 그러나 디스크에 의해 어떤 섹터가 재할당되었는지 확인하기가 어렵기 때문에 파일 시스템이 영향을 받는 영역을 피하는 것을 알 수 없습니다.

답변2

섹터를 재할당하기 위한 드라이브를 얻으려면 일반적으로 해당 드라이브에 무언가를 써야 합니다. 하지만, dd(iskskipestroyer)는 항상 작동하지 않으며 매우 안전하지 않습니다. 및 seek옵션을 혼합하면발에 총을 쏘는 것은 쉽습니다skip평평한첫 번째 N블록을 /dev/zero만들고 해당 "오프셋"에서 블록을 작성합니다.하드 디스크의 섹터 0에.

섹터를 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

%

답변3

아니요, 불량 섹터는 그렇지 않습니다.언제나드라이브 오류를 나타냅니다. 때로는 전원이 끊긴 상태에서 쓰기가 진행 중이면 해당 섹터의 데이터가 손상되어 읽으려고 할 때 오류가 발생하는 경우가 있습니다. 해당 섹터에 새 데이터를 쓰려고 하면 물리적인 문제가 없기 때문에 아마도 잘 작동할 것입니다.

드라이브에서 실행하여 각 섹터를 읽고 다시 쓸 수 badblocks -n있습니다. 또는 귀하의 경우에는 문제의 섹터 번호를 이미 알고 있으므로 dd해당 섹터에 0을 쓸 수 있습니다. 를 사용하여 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를 누르기 전에 명령을 정확하게 입력했는지 다시 확인하세요.

관련 정보