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


23

둘 사이의 차이는 무엇인가 dd다른이 명령 bscount값만큼 그들이 곱셈에 동일? 예를 들면 다음과 같습니다.

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

4
두 명령 모두 시간이 걸립니다. 난수가 필요한 경우 urandom을 사용하십시오 . 빠른 입력이 필요한 경우 0을 사용하십시오 .
Nils

4
사용 /dev/urandom하지 말고 사용하십시오 /dev/random. 참조 security.stackexchange.com/questions/3936/... , security.stackexchange.com/questions/3259/... , ...
질 'SO-정지되는 악'

답변:


26

최종 결과에 관한 한 그들은 똑같이 할 것입니다. 차이는 방법에 dd데이터를 처리 할 것입니다. 그리고 실제로, 두 예제 모두 그 점에서 매우 극단적입니다. bs매개 변수는 dd출력하기 전에 메모리에 버퍼링 해야하는 데이터의 양을 나타냅니다.

따라서 기본적으로 첫 번째 명령은 2GB의 1GB 청크에서 2GB를 읽으 려고 시도 하고 후자는 2GB 전체를 한 번에 읽은 다음 파일 로 출력 하려고 시도aa 합니다.


17

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

제 생각에는 그러한 큰 블록을 사용할 필요가 없습니다. 몇 가지 테스트를 수행 할 수 있지만 제 경우에는 훨씬 작은 블록 (<1MB)으로 더 빠른 속도를 얻습니다.


9

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

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


2

사용 된 블록 크기는 소스 및 대상 장치의 최고 속도 설정과 일치해야합니다.

LV 장치를 복사하려고하면 차이점을 가장 잘 알 수 있습니다. 매우 작은 BS 크기를 사용하면 읽기 프로세스가 불필요하게 중단됩니다. 매우 큰 BS 크기를 사용하면 쓰기 중 대기 시간이 길어집니다.

표준 LV는 일반적으로 4MB 청크로 구성되므로 물리적 디스크 액세스에 적합한 크기이기도합니다.

16K 또는 256M을 시험해보십시오-차이점을 알아 차리고 복사하는 동안 디스크 표시기를보십시오 ...


작거나 큰 블록 크기에 대한 처벌은 커널이 수행하는 캐싱에 의해 다소 상쇄됩니다. 미니 벤치 마크는 여기 를 참조 하십시오 .
Gilles 'SO- 악마 그만'12

@Gilles 나는 내 테스트에서 숫자를 기억하지 못하지만 그것들은 당신보다 훨씬 극적이었다. 테스트에서 어떤 물리적 하드 디스크 설정을 사용 했습니까? Mine은 128KB로 5 개의 디스크 (SAS 15k)에 스트라이핑 된 하드웨어 RAID 5를 사용했습니다. 스트라이프 크기.
Nils

SATA 디스크, RAID 없음, 그렇지 않으면 유휴 시스템 정확한 사양은 기억 나지 않습니다.
Gilles 'SO- 악의를 멈춰라'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.