Cómo determinar el mejor tamaño de bytes para el comando dd

Cómo determinar el mejor tamaño de bytes para el comando dd

Sé que hacer un dd if=/dev/hda of=/dev/hdbhace uncopia profunda del disco duro. Escuché que las personas han podido acelerar el proceso aumentando la cantidad de bytes que se leen y escriben a la vez (predeterminado 512:) con la bsopción.

Mi pregunta es:

  • ¿Qué determina el tamaño de byte ideal para copiar desde un disco duro?

y

  • ¿Por qué eso determina el tamaño de byte ideal?

Respuesta1

ComoChris S.escribió enesta respuestael tamaño de bloque óptimo depende del hardware. En mi experiencia, siempre es mayor que los 512 bytes predeterminados. Si trabaja con dispositivos sin formato, la geometría del sistema de archivos superpuesto no tendrá ningún efecto. He utilizado el siguiente script para ayudar a "optimizar" el tamaño del bloque de dd.

#!/bin/bash
#
#create a file to work with
#
echo "creating a file to work with"
dd if=/dev/zero of=/var/tmp/infile count=1175000

for bs in  1k 2k 4k 8k 16k 32k 64k 128k 256k 512k 1M 2M 4M 8M 
 
do
        echo "Testing block size  = $bs"
        dd if=/var/tmp/infile of=/var/tmp/outfile bs=$bs
        echo ""
done
rm /var/tmp/infile /var/tmp/outfile

Respuesta2

Desafortunadamente, el tamaño perfecto dependerá del bus del sistema, del controlador del disco duro, del disco en particular y de los controladores para cada uno de ellos. La única forma de encontrar la talla perfecta es seguir probando diferentes tallas. Es una advertencia justa que algunos dispositivos solo admiten un tamaño de bloque, aunque esto es poco común y, por lo general, los controladores compensan la diferencia de todos modos.

Creo que el tamaño de bloque de 2^15 o 2^16 funciona mejor para mis unidades SATA WDC (caché de 8 MB) conectadas a un controlador RAID SAS Adaptec, 4x PCIe, FreeBSD 8.0-STABLE de 64 bits. Pero para mi vieja memoria USB barata, los tamaños de 2^10 parecen ser los más rápidos.

El "tamaño perfecto" es casi siempre una potencia de dos.

Respuesta3

Puedo dar fe del mérito de medir el resultado de realizar una prueba en el dispositivo que se utiliza antes de perder el tiempo. Estúpidamente no me molesté y después de medir y luego ajustar el tamaño de mi bloque, reduje a la mitad la duración de mi DD de una transferencia de 590 Gb. El mismo valor de BS solo habría reducido el tiempo en un 20% usando una combinación de carrito/unidad diferente.

información relacionada