
이 명령은 다음과 같습니다.
badblocks -svn /dev/sda
그것은 무엇을 합니까? 불량 블록만 보고하나요? 아니면 어떻게든 했어?다루다불량 블록이므로 걱정할 필요가 없나요?
설명서를 읽었 man badblocks
지만 다음 -n
옵션이 표시되지 않습니다.
-s Show the progress of the scan by writing out rough percentage completion of
the current badblocks pass over the disk. Note that badblocks may do multiple
test passes over the disk, in particular if the -p or -w option is requested
by the user.
-v Verbose mode. Will write the number of read errors, write errors and data-
corruptions to stderr.
-n Use non-destructive read-write mode. By default only a non-destructive read-
only test is done. This option must not be combined with the -w option, as
they are mutually exclusive.
badblocks -svn /dev/sda
거의 이틀 동안 지속된 작업의 결과는 다음과 같습니다.
고쳐 쓰다
일부 게시물에서는 를 실행한 후 badblocks -svn /dev/sda
하드 드라이브 컨트롤러가 불량 블록을 처리한다고 제안합니다. 확실하지 않다.
하드 드라이브 컨트롤러가 불량 블록을 예비 블록으로 교체하도록 합니다.
https://askubuntu.com/a/490552/507217
이런 방식으로 디스크를 완전히 처리했다면 디스크 컨트롤러는 모든 불량 블록을 작업 블록으로 교체해야 하며 SMART 로그의 재할당 수가 증가합니다.
https://askubuntu.com/a/490549/507217
영리한
다음 명령을 실행한 후 SMART 테이블을 확인했습니다 badblocks
.
smartctl --all /dev/sda
Current_Pending_Sector
원래 값은 입니다 56
. 28
보고된 것의 두 배 입니다 badblocks
. 어쩌면 그들은 관련이 있을 수도 있습니다.
오류 설명
이에 따르면:
badblocks
오류 로그 형식은 입니다 reading/writing/comparing
. 제 경우에는 모든 28
오류가 읽기 오류였습니다. 의미아니요애플리케이션은 이러한 블록을 읽을 수 있습니다.
운영 체제 로그
운영 체제 로그를 확인했습니다 sudo journalctl -xe
. 실제로 SMART는 이러한 56
불량 섹터( 불량 블록)에 대해 28
오류를 발생시킵니다.
smartd[1243]: 장치: /dev/sda [SAT], 56개 현재 섹터를 읽을 수 없습니다(보류 중).
결론적으로
너무 늦기 전에 데이터를 백업하고 하드 드라이브를 교체하고 싶습니다.
답변1
이것"비파괴 읽기 및 쓰기 모드" 이 -n
옵션에 의해 실행되면 테스트 데이터가 마치 작성된 것처럼 각 블록에 기록되고 -w
디스크가 쓰기를 허용하거나 실패한 블록을 재할당하거나 쓰기 오류를 반환하도록 강제합니다.
하지만 가장 큰 장점은 덮어쓸 블록을 먼저 읽고 테스트 데이터를 쓴 후 해당 데이터를 다시 쓴다는 것입니다. 이는 badblocks
완료되면 디스크에 실행을 시작하기 전과 동일한 데이터가 포함되어야 함을 의미합니다.
프로세스
- 청크 읽기 및 저장
- 테스트 데이터 블록 쓰기
- 상태 결과를 캡처하고 필요한 경우 보고합니다.
- 저장된 블록 덮어쓰기
- 완료될 때까지 다음 블록에서 반복
경고하다
좋은 데이터 블록을 디스크에 기록하면 예상한 작업이 수행됩니다. 블록이 기록됩니다. 그러나 쓰기가 실패하면 디스크 펌웨어는 자동으로 투명하게 블록 주소를 예비 블록 중 하나로 다시 매핑하고 디스크의 새 위치에서 쓰기를 다시 시도합니다. 쓰기가 성공하면 다른 것은 알 수 없으며 디스크는 완전히 정상적으로 보일 것입니다. (SMART 테이블에서 섹터 재할당 카운터는 1씩 증가합니다.) 결국 시간이 지남에 따라 예비 블록 세트가 모두 사용될 수 있으며 그 시점부터 다시 매핑되었을 디스크 쓰기는 단순히 실패하게 됩니다.
전체 디스크 쓰기 테스트(예: badblocks
또는 에서 -w
제공하는 테스트 -n
)는 모든 디스크 블록을 강제로 기록하여 모두 사용할 수 있는지 확인하고, 그렇지 않으면 다시 매핑할 수 없는 디스크 블록을 강조 표시합니다.
참고하세요badblocks
데이터가 손실되지 않는다는 보장은 없습니다: 블록을 읽을 수 없으면 테스트 후 다시 쓸 수 없으므로 쓰기 테스트를 수행하지 않습니다(그러나 블록을 불량으로 보고함). 블록을 읽을 수 없으면 badblocks
다른 응용 프로그램도 읽을 수 없습니다.당신의 데이터가 손실되었습니다.
내 조언은 당신이 얻는다면어느다시 매핑할 수 없는 디스크 블록최대한 빨리 디스크를 교체하세요더 이상 안전망이 없기 때문입니다. (개인적으로는 이 단계에 도달하기 전에 이러한 디스크를 교체하고 싶습니다.)ddrescue
도구도움이 될 수 있습니다존재하다데이터 복사손상된 디스크에서 새 디스크로.