badblocks 유틸리티는 "잘못된 마지막 블록"을 계속 보고합니다.

badblocks 유틸리티는 "잘못된 마지막 블록"을 계속 보고합니다.

badblocks단일 파티션이 있는 드라이브에서 실행하려고 합니다 . 드라이브에는 FreeBSD 파일 시스템이 포함되어 있습니다.

Linux 라이브 USB 드라이브를 사용하여 부팅합니다. 드라이브가 마운트 해제되었습니다. 출력은 다음과 fdisk -l같습니다.

   Device  Boot     Start          End    Id     System
/dev/sda1     *        63   976773167+    a5     FreeBSD

그래서 나는 다음을 실행합니다.

# badblocks -v /dev/sda1

그리고 그것은 말한다 :

badblocks: invalid last block - /dev/sda1

이에 대한 유용한 정보를 찾을 수 없습니다. badblocks여기서 유틸리티를 올바르게 사용하고 있습니까 ? 아니면 드라이브에 문제가 있다는 표시입니까?

답변1

아니요, 이는 드라이브에 문제가 있다는 의미가 아닙니다. 이 오류가 발생하는 이유는 badblocks가 /dev/sda1을 장치로 받아들이는 대신 마지막 블록 인수로 받아들이기 때문입니다.

귀하의 질문에 구문이 올바른 것 같습니다. 장치 뒤에 마지막 블록 인수를 지정해 보십시오:
badblocks -v /dev/sda1 976773167

그래도 문제가 해결되지 않으면 여기에 첫 번째 블록도 추가해 보세요.
badblocks -v /dev/sda1 976773167 63

이것이 드라이브에 문제가 있음을 나타내지 않는다는 점을 확인하기 위해 잘못된 마지막 블록 인수 "nope"를 추가했을 때의 출력은 다음과 같습니다.

sudo badblocks -v /dev/sdb1 아니요
badblocks: 잘못된 마지막 블록 - 아니요


다음은 마지막으로 배드 블록을 사용한 bash 기록의 예입니다(내 시스템에서 이러한 드라이브에 액세스하려면 sudo 액세스가 필요합니다).
sudo badblocks -v /dev/sdb1

산출:

블록 확인 중 0 ~ 976751967
불량 블록 확인(읽기 전용 테스트):

Ctrl+C를 눌러 잠시 후 프로세스를 취소하면 출력은 다음과 같습니다.

블록 7470720에서 중단됨

프로세스를 재개하는 구문은 다음과 같습니다(참고자료 참조 man badblocks).
badblocks -v 장치 [마지막 블록] [첫 번째 블록]

"마지막 블록"은 장치에서 읽을 마지막 블록이고 "첫 번째 블록"은 읽기를 시작해야 하는 위치입니다. 예:
sudo badblocks -v /dev/sdb1 976751967 7470720

산출:

블록 7470720 ~ 976751967 확인 중 불량 블록 확인(읽기 전용 테스트):

답변2

요즘 최신 디스크 드라이브 하드웨어의 badblocks 명령은 노력할 가치가 거의 없습니다. 이는 드라이브 컨트롤러 보드가 내부적으로 불량 블록을 식별하고 자동 교체를 위해 초기에 할당된 "예비" 블록을 대체하기 때문입니다. 이러한 예비 블록이 부족하고 불량 블록 문제가 있는 경우 하드웨어가 불량해지기 때문에 디스크 교체를 강력히 제안합니다.

드라이브 상태를 찾으려는 경우 대부분의 최신 드라이브는 디스크 상태를 보고하는 SMART 드라이브 인터페이스를 지원합니다. 디스크 상태에 대한 정보를 상태로 표시하고 표시하는 유틸리티가 많이 있습니다. 다음 중 하나를 시도해 보세요.

답변3

웹페이지에서 명령을 복사했습니다. 대시는 -v에서 다른 대시 문자로 대체되었습니다. (일반 대시보다 조금 더 깁니다.) 명령을 입력하거나 어떻게든 수정하세요.

답변4

올바른 구문을 사용했음에도 불구하고 이 오류가 발생하고 블록 크기가 작은(예: 512바이트) 대용량 디스크(예: 수 TB)를 사용하는 경우 badblocks블록 번호에 32비트를 사용하는 데 제한이 있을 수 있습니다.

해결 방법으로 더 큰 블록을 사용할 수 있습니다. badblocks작업할 수 있는 최소 블록 크기를 찾으려면 시작/끝 블록에 badblocks대해 다른 값을 사용 하거나 사용하지 않고 간단히 실행할 수 있습니다. -b이런 오류가 발생하면

badblocks: 정의된 데이터 유형에 비해 값이 너무 큽니다. 잘못된 종료 블록: 32비트 값이어야 합니다.

그런 다음 작동할 때까지 블록 크기를 늘려 보십시오(예 -b 512: -b 1024또는 ). -b 2048이를 통해 어느 정도 해상도를 사용할 수 있지만 아무것도 사용하지 않는 것보다 낫습니다.

이 시점에서 사용하거나 다음 버전에서 문제를 해결하기 위해 ddrescue관리자에게 문의할 수도 있습니다.badblocks

관련 정보