¿Cuál es la diferencia entre estos dos comandos dd?


23

¿Cuál es la diferencia entre dos ddcomandos que tienen valores bsy countvalores diferentes , siempre que se multipliquen por el mismo? Por ejemplo:

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

44
Ambos comandos tomarán años. Use urandom si necesita números aleatorios. Use cero si solo necesita una entrada rápida de algo.
Nils

Respuestas:


26

En lo que respecta al resultado final, harán lo mismo. La diferencia está en cómo ddprocesar los datos. Y en realidad, ambos ejemplos son bastante extremos en ese sentido: el bsparámetro indica ddcuántos datos debe almacenar en la memoria antes de enviarlo.

Entonces, esencialmente, el primer comando intentaría leer 2GB en dos fragmentos de 1GB, y el último intentaría leer 2GB completos de una vez y luego enviarlo al aaarchivo.


17

El resultado será el mismo pero en el primer caso ddescribirá dos bloques de 1GB mientras que en el segundo bloque de 2GB. La diferencia es que ddmantiene el bloque copiado en la memoria. Necesitará 1 GB de RAM en el primer caso y 2 GB en el segundo.

En mi opinión, no hay necesidad de usar bloques tan grandes. Puedes hacer un par de pruebas, pero en mi caso logro una mayor velocidad con bloques mucho más pequeños (<1 MB)


9

La primera ocupará 1G de memoria, la llenará con datos del archivo de entrada y la enviará dos veces.

El segundo ocupará 2G de memoria, lo llenará con datos del archivo de entrada y lo generará.


2

El tamaño de bloque utilizado debe coincidir con la mejor configuración de velocidad para el dispositivo de origen y de destino.

Puede ver la diferencia mejor si intenta copiar un dispositivo LV. El uso de un tamaño BS muy pequeño interrumpirá el proceso de lectura innecesario. El uso de un tamaño BS muy grande dará lugar a largas esperas durante la escritura.

Dado que los LV estándar consisten normalmente en fragmentos de 4 MB, que también es un buen tamaño para el acceso al disco físico, uso bs = 4M para estos.

Intente experimentar con 16K o 256M, notará la diferencia, y observe el indicador de disco durante la copia ...


Las penalizaciones por tamaños de bloque pequeños o grandes se compensan en cierta medida por el almacenamiento en caché realizado por el núcleo. Vea aquí para un mini punto de referencia.
Gilles 'SO- deja de ser malvado'

@Gilles No recuerdo los números en mis pruebas, pero fueron mucho más dramáticos que los tuyos. ¿Qué configuración física de disco duro usó en su prueba? El mío estaba en un RAID de hardware 5 dividido en 5 discos (SAS 15k) con 128 KB. tamaño de la raya
Nils

Discos SATA, sin RAID, de lo contrario, máquina inactiva. No recuerdo las especificaciones exactas.
Gilles 'SO- deja de ser malvado'
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.