블록 장치에 일부 이미지를 다시 쓰고 있는데 dd
이전에 본 적이 없는 매우 이상한 출력이 나타납니다.
# xz -dc goren.img.xz | dd bs=1M of=/dev/storage2/goren
35+2475166 records in
35+2475166 records out
21474836480 bytes (21 GB) copied, 222.912 s, 96.3 MB/s
# xz -dc gronn.img.xz | dd bs=1M of=/dev/storage2/gronn
50+2413782 records in
50+2413782 records out
21474836480 bytes (21 GB) copied, 233.478 s, 92.0 MB/s
# xz -dc grummle.img.xz | dd bs=1M of=/dev/storage2/grummle
63+2443466 records in
63+2443466 records out
21474836480 bytes (21 GB) copied, 222.898 s, 96.3 MB/s
# xz -dc hozen.img.xz | dd bs=1M of=/dev/storage2/hozen
19+2556787 records in
19+2556787 records out
21474836480 bytes (21 GB) copied, 250.989 s, 85.6 MB/s
각 경우에 표시될 것으로 예상되는 출력(및 이미지 파일을 생성할 때 얻는 출력)은 다음과 같습니다.
20480+0 records in
20480+0 records out
내가 알 수 있는 한, 표시되는 레코드 수가 걱정되지만 이미지가 올바르게 작성되었습니다. 이는 어떤 상황에서도 분명히 올바르지 않습니다. 그러나 내가 말했듯이 작성된 이미지는 원본 이미지와 일치하고 파일 시스템 검사 등을 통과합니다.
저는 Fedora 21 x86_64와 coreutils 8.22를 사용하고 있습니다.
답변1
이는 불완전한 읽기입니다. . 을 추가하면 iflag=fullblock
사라집니다.
기본적으로 dd
더 이상 데이터를 사용할 수 없으면 파이프라인의 더 작은 청크가 허용됩니다. iflag를 사용하면 dd
전체 데이터 블록이 수집되거나 EOF될 때까지 기다립니다.
데이터 일관성에 관해서는 문제가 없어야 하므로 어느 쪽이든 올바른 결과를 얻어야 합니다.
문제는 를 사용하는 이유입니다 dd
. 예를 다음과 같이 단순화할 수도 있습니다.
xz -dc goren.img.xz > /dev/storage2/goren