dd 입/출력 오류 설명

dd 입/출력 오류 설명

/dev/Storage/Storage파이프를 사용하여 (LVM 아래의 LV)를 이미지 파일에 복사해 보았습니다 dd | pv | dd. 오류를 보고하는데, 디스크 복사가 완료되었는지, 아니면 오류로 인해 중지되었는지 dd알고 싶습니다 . dd두 가지 다른 출력을 제공하기 때문에 확실하지 않습니다. 하나는 상단에 오류가 있고 다른 하나는 오류가 없습니다. 나는 그 사이에 0.1초만 추가되고 추가 데이터가 없기 때문에 추측하고 아니오라고 말하고 싶지만 실제로 있는지는 확실하지 않습니다. /dev/Storage/Storage1TB 디스크(TB = 10 12 = 1000 4 ) 또는 931.51 GiB(기비바이트 = 2 30 = 1024 3 ) 또는 1953513472 섹터입니다. 디스크의 파일 시스템이 복잡해 제대로 작동하지 않습니다.

$ sudo dd if=/dev/Storage/Storage | pv | dd of=Storage.img
dd: error reading ‘/dev/Storage/Storage’: Input/output error                   ]
1627672400+0 records ins] [   <=>                                              ]
1627672400+0 records out
833368268800 bytes (833 GB) copied, 75181 s, 11.1 MB/s
776GB 20:53:01 [10.6MB/s] [  <=>                                              ]
1627672400+0 records in
1627672400+0 records out
833368268800 bytes (833 GB) copied, 75181.1 s, 11.1 MB/s

답변1

하드웨어 오류인 경우 커널 로그 메시지( dmesg, 또는 )에서 SATA 드라이버의 자세한 메시지를 확인하세요. /var/log/kern.log또한 유용합니다: smartctl -x /dev/sda.파티션의 끝이나 다른 것을 읽으려는 경우 커널 로그에도 나타날 수 있습니다.

I/O 오류 후에도 dd가 계속 실행되도록 하고 오류 이후에 읽을 수 있는 부분을 읽으려면 다음을 사용하십시오.

dd if=... of=... conv=noerror bs=128k   # it doesn't get any faster beyond about 128k, because of L2 cache size

(댓글에서 OP가 언급했듯이 ddrescue이것 말고도 더 많은 것이 있었습니다. IIRC는 conv=noerrorGNU dd가 존재한 후 추가되었습니다 ddrescue.)

중단한 부분부터 계속하려면 seekskip옵션도 사용할 수 있습니다 conv=notrunc.


dd가 얼마나 멀리 있는지 알고 싶다면 표준 입력의 파일 위치를 살펴보세요.

cat /proc/$(pidof dd)/fdinfo/0  # dd opens its infile as fd #0

(또는 ls -lh출력 파일의 크기). 파이프를 통해 전체 하드 드라이브의 데이터를 두 번 더 복사하는 것은 나에게는 어리석은 것처럼 보입니다. 마치 복사하는 데 걸리는 시간보다 컴퓨터가 약간 느려지는 것처럼 보입니다.

아니면 적어도 이렇게 하세요:

dd if=... conv=noerror bs=128k | pv > Storage.img

답변2

  • 기본 블록 dd크기인 512바이트를 사용하고 있습니다. 더 큰 블록 크기(예: 128k짝수) 를 사용하면 성능이 크게 향상될 수 있습니다 1m.

  • 두 개의 명령을 실행하기 때문에 두 개의 출력이 있습니다 dd. 첫 번째는 I/O 오류를 표시하는 장치 판독기입니다.

  • 사용 중인 장치 이름을 보면 아마도 LVM: 을 사용하고 있을 것입니다 /dev/Storage/Storage. 이것이 하위 세트가 아닌 전체 디스크입니까? lvdisplay장치 이름 뒤에 숨은 의미를 알아내는 데 사용됩니다 .

답변3

저도 같은 문제를 겪고 있는데 이 문제를 해결하는 데 도움이 될 수 있는 특정 양식에 대한 튜토리얼이나 게시물이 없습니다 dd. 좀 파다가 발견한이 문제.이 솔루션그것은 나에게 정말 잘 작동합니다.

사용 사례의 예는 다음과 같습니다.

$ sudo apt-get install gddrescue

$ sudo ddrescue /dev/Storage/Storage Storage.img | pv

일반적인 형태는 다음과 같습니다.

$ sudo ddrescue <in_file> <out_file>

물론, 진행 상황 모니터링 도구로 | pv파이프하려는 경우입니다 .stdout

관련 정보