Utilizo dd en su forma más simple para clonar un disco duro:
dd if=INPUT of=OUTPUT
Sin embargo, leí en la página de manual que dd conoce un parámetro de tamaño de bloque. ¿Existe un valor óptimo para el parámetro de tamaño de bloque que acelerará el procedimiento de clonación?
Respuestas:
64k parece ser una buena elección:
(tomado de aquí ).
esto coincide con mis propios hallazgos con respecto al almacenamiento en búfer de lectura / escritura para acelerar un programa convertidor io-pesado que una vez proxeneté @work.
fuente
dd copiará felizmente usando el BS de lo que quiera, y copiará un bloque parcial (al final).
Básicamente, el parámetro de tamaño de bloque (bs) parece establecer la cantidad de memoria que se usa para leer en un bulto de un disco antes de intentar escribir ese bulto en el otro.
Si tiene mucha RAM, hacer que la BS sea grande (pero totalmente contenida en la RAM) significa que el subsistema de E / S se utiliza tanto como sea posible haciendo lecturas y escrituras masivamente grandes, explotando la RAM. Hacer que la BS sea pequeña significa que la sobrecarga de E / S como proporción de la actividad total aumenta.
Por supuesto, en esto hay una ley de rendimientos decrecientes. Mi aproximación aproximada es que un tamaño de bloque en el rango de aproximadamente 128K a 32M probablemente proporcionará un rendimiento tal que los gastos generales sean pequeños en comparación con la E / S simple, y el aumento de tamaño no hará mucha diferencia. La razón de que el límite inferior sea de 128K a 32M es que depende de su sistema operativo, hardware, etc.
Si fuera yo, haría algunos experimentos cronometrando una copia / clon usando un BS de 128K y nuevamente usando (digamos) 16M. Si uno es apreciablemente más rápido, úselo. Si no, entonces use la BS más pequeña de las dos.
fuente
Para aquellos que terminan aquí a través de Google, incluso si esta discusión es un poco vieja ...
Tenga en cuenta que dd es tonto por una razón: cuanto más simple es, menos formas puede arruinarlo.
Los esquemas de particionamiento complejos (considere un disco duro de arranque dual que también utiliza LVM para su sistema Linux) comenzarán a eliminar errores de la carpintería en programas como Clonezilla. Los sistemas de archivos mal desmontados pueden volar ntfsclone por las nubes.
Un sistema de archivos corrupto clonado sector por sector no es peor que el original. Un sistema de archivos corrupto después de una "copia inteligente" fallida puede estar REALMENTE en mal estado.
En caso de duda, use dd y vaya forense. Las imágenes forenses requieren copias sector por sector (de hecho, puede requerir más sectores de los que podrá realizar con dd, pero esa es una larga historia). Es lento y tedioso, pero hará el trabajo correctamente.
Además, conozca las opciones "conv = noerror, sync", para poder clonar unidades que están empezando a fallar, o hacer ISOs de CD rayados ( tos ), sin que tome meses.
fuente
sync
opción? La página del manual se limita a decir:"use synchronized I/O for data and metadata"
. ¿Con qué nos estamos sincronizando? Eso puede ser muchas cosas diferentes.Como han dicho otros, no hay un tamaño de bloque universalmente correcto; lo que es óptimo para una situación o una pieza de hardware puede ser terriblemente ineficiente para otra. Además, dependiendo de la salud de los discos, puede ser preferible usar un tamaño de bloque diferente al que es "óptimo".
Una cosa que es bastante confiable en el hardware moderno es que el tamaño de bloque predeterminado de 512 bytes tiende a ser casi un orden de magnitud más lento que una alternativa más óptima. En caso de duda, descubrí que 64K es un valor predeterminado moderno bastante sólido. Aunque 64K generalmente no es EL tamaño de bloque óptimo, en mi experiencia tiende a ser mucho más eficiente que el predeterminado. 64K también tiene un historial bastante sólido de desempeño confiable: puede encontrar un mensaje de la lista de correo Eug-Lug, alrededor de 2002, recomendando un tamaño de bloque de 64K aquí: http://www.mail-archive.com/eug- [email protected]/msg12073.html
Para determinar EL tamaño de bloque de salida óptimo, he escrito el siguiente script que prueba escribir un archivo de prueba de 128M con dd en un rango de diferentes tamaños de bloque, desde el predeterminado de 512 bytes hasta un máximo de 64M. Tenga cuidado, este script usa dd internamente, así que úselo con precaución.
dd_obs_test.sh:
Ver en GitHub
Solo probé este script en un sistema Debian (Ubuntu) y en OSX Yosemite, por lo que probablemente tomará algunos ajustes para que funcione en otros sabores de Unix.
Por defecto, el comando creará un archivo de prueba llamado dd_obs_testfile en el directorio actual. Alternativamente, puede proporcionar una ruta a un archivo de prueba personalizado proporcionando una ruta después del nombre del script:
El resultado del script es una lista de los tamaños de bloque probados y sus respectivas tasas de transferencia de la siguiente manera:
(Nota: la unidad de las tasas de transferencia variará según el sistema operativo)
Para probar el tamaño óptimo del bloque de lectura, podría usar más o menos el mismo proceso, pero en lugar de leer desde / dev / zero y escribir en el disco, leería desde el disco y escribiría en / dev / null. Un script para hacer esto podría verse así:
dd_ibs_test.sh:
Ver en GitHub
Una diferencia importante en este caso es que el archivo de prueba es un archivo escrito por el script. ¡No apunte este comando a un archivo existente o el archivo existente se sobrescribirá con datos aleatorios!
Para mi hardware en particular, descubrí que 128K era el tamaño de bloque de entrada más óptimo en un HDD y 32K era más óptimo en un SSD.
Aunque esta respuesta cubre la mayoría de mis hallazgos, me he encontrado con esta situación tantas veces que escribí una publicación de blog al respecto: http://blog.tdg5.com/tuning-dd-block-size/ Puede encontrar más detalles en las pruebas que realicé allí.
Esta publicación de StackOverflow también puede ser útil: dd: ¿Cómo calcular el tamaño de bloque óptimo?
fuente
Sí, pero no lo encontrarás sin muchas pruebas. Sin embargo, he descubierto que 32M es un buen valor para usar.
fuente
clonación de una unidad de arranque antigua a una nueva SSD en sata externa (SSD a SSD)
utilizando discos (herramienta)> formato> Borrado seguro ATA (2 minutos)
Pruebas de funcionamiento:
segundo intento después de un borrado seguro con el mismo resultado:
fuente