dd가 bs 매개변수를 사용하고 있지만 IO 오류가 발생하지만 오류가 발생하지 않습니다.

dd가 bs 매개변수를 사용하고 있지만 IO 오류가 발생하지만 오류가 발생하지 않습니다.

저는 HDD 4TB WD 40EFRX(빨간색 시리즈)를 가지고 있고 해당 디스크의 상태를 확인하려고 합니다. 실제로 gparted를 통해 모든 파티션과 테이블을 삭제하고 새 테이블 + ex4 파티션을 만들었습니다. 그런 다음 모든 데이터를 0으로 덮어쓰고 오래된 데이터를 제거하고 싶습니다. 그러나 나는

dd if=/dev/zero of=/dev/sdb status=progress

처음부터 I/O 오류가 발생했습니다.

sudo dd if=/dev/zero of=/dev/sdb status=progress
474558976 bytes (475 MB, 453 MiB) copied, 38.0445 s, 12.5 MB/s
dd: writing to '/dev/sdb': Input/output error
927977+0 records in
927976+0 records out
475123712 bytes (475 MB, 453 MiB) copied, 46.6914 s, 10.2 MB/s

이 명령은 bs=64MB(HDD의 캐시는 64MB) 옵션을 추가할 때 매우 잘 실행됩니다. 하지만 IO 오류로 볼 때 HDD가 어떻게든 손상된 것 같습니다. 아니면 제가 할 수 있는 다른 해결 방법이 있나요? 그런데 내 하드 드라이브는 SATA/USB를 통해 내 노트북에 연결되어 있습니다.

답변1

저는 다음과 같은 문제를 접한 적도 들은 적도 없다는 점을 인정하지만, 반면에 저는 하드 드라이브 오류에 대한 전문가는 아닙니다... :-)

I/O 작업의 엄청난 양으로 인해 어떤 방식으로든 문제가 발생할 수 있습니다. 두 호출 dd간의 읽기 및 쓰기 작업 수의 차이는 128,000회입니다. Linux 블록 계층이 블록 장치에 대한 직접 액세스 순서를 어떻게 변경하는지 모르겠습니다. 그렇다면 이 요소는 더 낮을 것입니다.

더 작은 청크 크기를 시도해 볼 수 있습니다. bs=512KB1024배로 줄어들게 됩니다. 어쩌면 블록 크기가 캐시 크기보다 훨씬 작더라도 문제가 사라지는 것을 발견할 수도 있습니다.

관련 정보