드라이브의 특정 부분에서 불량 블록을 시작하는 방법


3

dd200GB Maxtor IDE 하드 드라이브의 마지막 몇 블록을 시도하는 동안 다음 오류가 발생합니다.

$ dd if=/dev/zero of=/dev/sdc bs=4M status=progress
203901894656 bytes (204 GB, 190 GiB) copied, 7283.07 s, 28.0 MB/s
dd: error writing '/dev/sdc': Permission denied
48621+0 records in
48620+0 records out
208223076351 bytes (208 GB, 194 GiB) copied, 8379.27 s, 24.8 MB/s 

이 오류는로 재개 dd를 시도한 후에도 지속 되었으며 seek=48620, 여기서 48620은 건너 뛸 블록의 양입니다. 이 오류가 불량 섹터의 결과인지 여부를 확인하기 위해 실패한 badblocks곳과 동일한 방식으로 실행하고 싶습니다 dd.

이것은 다음 badblocks과 같은 명령으로 변환됩니다 .

badblocks -svw -b 4000000 -c 500000 -p 1 -o /cygdrive/b/badblocks.txt /dev/sdc 199148543 48620

... 드라이브를 -b 4000000처음 시작할 때 사용한 4M 블록 크기 dd와 같으며 48620은 시작 first_block하는 첫 번째 블록을 지정하는 옵션입니다 badblocks.

그러나 이로 인해 두 가지 오류 중 하나가 발생합니다. 치명적이지 않은 오류 ...

badblocks: Invalid argument during seekrs)

... 명령을 실행하는 동안 나타나거나 한 번의 치명적인 오류로 인해 종료됩니다.

Segmentation fault (core dumped)

상기 오류 또한 때에도 계속 -c같은보다 온건 한 값으로 설정된다 2000.


또한 내가 실패한 badblocks정확한 블록에서 실행 을 포기 dd하고 대신 first_block옵션을 충분히 높은 수로 늘리려 고 시도합니다 .

badblocks -svw -b 4000000 -c 1000000 -p 1 -o /cygdrive/b/users/hashim/desktop/maxtorbadblocks.txt /dev/sdc 199148543 12345678 

... 명령을 위반하지 않고 다음과 같은 오류가 발생합니다.

badblocks: Invalid argument during seekrs)  again get several get the same error.

badblocks드라이브의 지정된 위치에서 시작 하여 실행하는 데 걸리는 시간을 크게 줄이려면 어떻게해야합니까?


48620은 4MB 블록입니다. 크기를 변경하면 금액을 다시 계산해야합니다. 그러나 208223076351 바이트를 쓸 때 하드 디스크에 몇 바이트가 있습니까?
matzeri

답변:


3

실패 하는지에 대한 절반의 대답 (현재) .

이 줄의 스위치가 잘못되었습니다 :

badblocks -svw -b 4000000 -c 500000 -p 1 \
          -o /cygdrive/b/badblocks.txt /dev/sdc 199148543 48620

-b통상의 배수 블록의 크기이며, (얼마나 많은 바이트 블록 단위), (512)는 , 일반적으로이 될 1,024 , 2,048 또는 4,096 . 4,000,000 의 값은 512 의 배수가 아니며 현재 HDD가 사용하는 것보다 큽니다.

(가) -c전달 된 값을 곱한 시간에서 테스트하는 방법을 몇 블록 거리에 -b있으므로 - 한 번에 읽을 수 얼마나 많은 바이트를 제공 -b 4000000 -c 500000읽을 수있는 컴퓨터를 알려줍니다 2,000,000,000,000 (이조)이 한 번에 바이트.

더 나쁜 것은 인수 199148543badblocks파일 시스템에 최소한 많은 블록을 포함하고 있으며 블록이 -b스위치에 의해 정의되기 때문에 badblocks파일 시스템에 최소한 796,594,172,000,000 바이트 (또는 거의 796TB , 페타 바이트)를 포함 한다는 사실을 알 수 있습니다.

전체 디스크가 200GB 이므로 badblocks오류 메시지가 중단되고 인쇄됩니다.


질문에서 언급하려고 시도한 바와 같이 :에 대한 내 연구에 badblocks따르면 -b물리적 대신 논리적 (파일 시스템) 섹터 를 참조 하는 것으로 이해합니다 . 따라서 장치의 물리적 기본값이 될 수있는 512 바이트는 아니지만 bs=4M내가 지정한 처음으로 드라이브를 제로화 할 때 dd(메가 바이트가 아닌 메가 바이트라고 가정했기 때문에 4,194,304가 아닌 4,000,000 ). 나는 이미 그 블록 크기로 드라이브에 쓰는 데 사용했기 때문에 ...dd
Hashim

... 블록 수를 동일하게 유지하기 위해 블록 크기를 동일하게 유지해야 badblocks -b하므로 원하는 HDD의 블록에 도달해야합니다. 위의 내용 중 잘못된 것이 있습니까?
Hashim

오류 메시지의 원인을 귀하의 설명은 이해가 않지만, 그 수는 모두 표시됩니다 badblockscat /proc/partitions장치의 전체 블록의 수가 - 내가 사용하여 얻은 여기에 답을 .
Hashim

@Hashim, Re " ...하지만 번호는 ... ": 죄송합니다. 어떤 숫자인지는 확실하지 않습니다. 정확히 어떤 숫자를 지정하십시오.
agc

드라이브의 총 크기 (블록) : 199148543.
Hashim
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.