Pi와 함께 사용할 오래된 하드 드라이브를 준비하고 있습니다. 하지만 불량 섹터가 36개가 넘습니다(Avoce 임계값). 그래서 어떤 섹터가 영향을 받았는지 조사하기 위해 달려가서 badblocks
파일에 저장했습니다.
이제 파일에는 기본적으로 줄 바꿈으로 구분된 영향을 받는 모든 섹터 목록이 포함됩니다.
mkfs.ext4
이 주소에 데이터 블록을 할당하지 않도록 지금 이 정보를 어떻게 사용합니까 ?
답변1
그래서 실수를 저질렀습니다. 먼저 -c 옵션과 함께 mkfs.ext4를 사용하는 대신 badblocks 명령을 사용하여 하드 드라이브의 불량 섹터를 검색했습니다.
유일한 문제는 약 2일 정도 걸렸기 때문에 검색을 반복하고 싶지 않다는 것입니다.
디스크립터 파일 sda를 가리키는 명령을 실행했기 때문에 지금 가지고 있는 정보는 섹터(LBA 주소)인 것 같습니다.
섹터가 거의 같은 위치에 있기 때문에 두 개의 파티션을 계산하고 만들 수 있습니다.
- 하지만 분할하지 않고 단일 파티션을 만드는 것이 더 좋습니다.
--그렇게 교활한 사람이 있나요?그리고 예를 들어 블록 크기가 4K인 파티션을 생성하는 경우 명령에 필요한 정보 형식을 파악합니다. 누구든지 나를 도울 수 있다면 좋을 것입니다!
몇 가지 문제:
- 정보를 변환할 때 파티션 시작 주소와 파티션 블록 크기는 어떤 방식으로 관련됩니까?
답변2
나는 이제 그것을 스스로 알아냈다. 기본적으로 파티션이 아닌 /dev/sda와 같은 장치를 가리킬 때 블록 크기 1k(1024)가 사용됩니다.
파티션(시작 및 끝 주소 포함) 대신 장치를 가리키는 mke2fs를 실행하면 MBR이 기록되지 않고 MBR이 덮어쓰여집니다.
$ sudo dd if=/dev/sda bs=512 count=1 | hexdump -C
1+0 레코드의 1+0 레코드
복사됨
512바이트(512B), 0.00240179초, 213kB/s
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |.... ......
*
00000200
그래서 주소를 4로 나누고 4k 블록 1개에 1k 블록이 4개 있다는 것을 기억하면 간단히 주소를 계산할 수 있습니다. 그런 다음 파일을 생성하고 새로 생성된 파일을 사용하여 mke2fs를 실행하여 불량 블록을 격리할 수 있습니다. 다음과 같습니다:
mke2fs -f ext4 -l badblocks_file /dev/sdX