고쳐 쓰다

고쳐 쓰다

이 명령은 다음과 같습니다.

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완료되면 디스크에 실행을 시작하기 전과 동일한 데이터가 포함되어야 함을 의미합니다.

프로세스

  1. 청크 읽기 및 저장
  2. 테스트 데이터 블록 쓰기
  3. 상태 결과를 캡처하고 필요한 경우 보고합니다.
  4. 저장된 블록 덮어쓰기
  5. 완료될 때까지 다음 블록에서 반복

경고하다

좋은 데이터 블록을 디스크에 기록하면 예상한 작업이 수행됩니다. 블록이 기록됩니다. 그러나 쓰기가 실패하면 디스크 펌웨어는 자동으로 투명하게 블록 주소를 예비 블록 중 하나로 다시 매핑하고 디스크의 새 위치에서 쓰기를 다시 시도합니다. 쓰기가 성공하면 다른 것은 알 수 없으며 디스크는 완전히 정상적으로 보일 것입니다. (SMART 테이블에서 섹터 재할당 카운터는 1씩 증가합니다.) 결국 시간이 지남에 따라 예비 블록 세트가 모두 사용될 수 있으며 그 시점부터 다시 매핑되었을 디스크 쓰기는 단순히 실패하게 됩니다.

전체 디스크 쓰기 테스트(예: badblocks또는 에서 -w제공하는 테스트 -n)는 모든 디스크 블록을 강제로 기록하여 모두 사용할 수 있는지 확인하고, 그렇지 않으면 다시 매핑할 수 없는 디스크 블록을 강조 표시합니다.

참고하세요badblocks데이터가 손실되지 않는다는 보장은 없습니다: 블록을 읽을 수 없으면 테스트 후 다시 쓸 수 없으므로 쓰기 테스트를 수행하지 않습니다(그러나 블록을 불량으로 보고함). 블록을 읽을 수 없으면 badblocks다른 응용 프로그램도 읽을 수 없습니다.당신의 데이터가 손실되었습니다.

내 조언은 당신이 얻는다면어느다시 매핑할 수 없는 디스크 블록최대한 빨리 디스크를 교체하세요더 이상 안전망이 없기 때문입니다. (개인적으로는 이 단계에 도달하기 전에 이러한 디스크를 교체하고 싶습니다.)ddrescue도구도움이 될 수 있습니다존재하다데이터 복사손상된 디스크에서 새 디스크로.

관련 정보