이 두 dd 명령의 차이점은 무엇입니까?

이 두 dd 명령의 차이점은 무엇입니까?

곱셈이 같다면 합계 값이 dd다른 두 명령의 차이점은 무엇입니까? 예를 들어:bscount

  1. dd if=/dev/random of=aa bs=1G count=2
  2. dd if=/dev/random of=aa bs=2G count=1

답변1

최종 결과에 관한 한, 그들도 똑같이 할 것입니다. 차이점은 dd데이터가 처리되는 방식에 있습니다. 실제로 두 가지 예 모두 이와 관련하여 매우 극단적입니다. bs매개변수는 dd출력하기 전에 메모리에 버퍼링되어야 하는 데이터의 양을 알려줍니다.

따라서 본질적으로 첫 번째 명령은 다음과 같습니다.노력하다2GB를 두 개의 1GB 블록으로 나누어 읽습니다.노력하다2GB 전체를 한 번에 읽고 파일로 출력합니다 aa.

답변2

결과는 동일하지만 첫 번째 경우에는 dd두 개의 1GB 블록이 기록되고 두 번째 경우에는 2GB 블록이 기록됩니다. 차이점은 dd복사된 블록이 메모리에 유지된다는 것입니다. 첫 번째 경우에는 1GB RAM이 필요하고 두 번째 경우에는 2GB가 필요합니다.

그렇게 큰 블록을 사용할 필요는 없을 것 같아요. 몇 가지 테스트를 할 수 있지만 제 경우에는 더 작은 청크(< 1MB)를 사용하여 더 빠른 속도를 달성했습니다.

답변3

첫 번째는 1G의 메모리를 차지하며 입력 파일의 데이터로 채우고 두 번 출력합니다.

두 번째는 2G의 메모리를 차지하며 입력 파일의 데이터로 채우고 출력합니다.

답변4

사용되는 블록 크기는 원본 및 대상 장치의 최적 속도 설정과 일치해야 합니다.

LV 장치를 복사해 보면 차이점을 가장 잘 확인할 수 있습니다. 매우 작은 BS 크기를 사용하면 읽기 프로세스가 불필요하게 중단됩니다. 매우 큰 BS 크기를 사용하면 쓰기 중에 오랜 대기 시간이 발생합니다.

표준 LV는 일반적으로 4MB 블록으로 구성되며 이는 물리적 디스크 액세스에 적합한 크기이므로 bs=4M을 사용합니다.

16K 또는 256M으로 실험해 보십시오. 차이점을 알 수 있을 것이며 복사 프로세스 중에 디스크 표시기를 살펴보십시오.

관련 정보