181 votos

El uso de DD para la clonación de disco

Ha habido una serie de preguntas con respecto a la clonación de disco y herramientas de dd ha sugerido al menos una vez. Ya he considerado el uso de dd mí mismo, principalmente debido a la facilidad de uso, y que es fácilmente disponible en casi todo el arranque de las distribuciones de Linux.

¿Cuál es la mejor manera de utilizar dd para la clonación de un disco? Hice una rápida búsqueda en Google y el primer resultado fue un aparente intento fallido. Hay algo que deba hacer después de usar dd, es decir, hay algo que NO PUEDE ser leído utilizando la dd?

158voto

grapefrukt Puntos 16804

dd es, sin duda, la mejor herramienta para clonar, se creará un 100% de réplica, simplemente mediante el siguiente comando. Nunca he una vez tenido ningún problema con él.

dd if=/dev/sda of=/dev/sdb bs=32M

Ser conscientes de que, aunque la clonación de cada byte, usted no debe usar este en una unidad o partición que se utiliza. Especialmente en aplicaciones como bases de datos no pueden hacer frente a este muy bien y que podría terminar con la corrupción en los datos.

113voto

David Hicks Puntos 1445

Para ahorrar espacio, puede comprimir los datos producidos por el dd con gzip, por ejemplo:

dd if=/dev/hdb | gzip -c  > /image.img

Puede restaurar el disco:

gunzip -c /image.img.gz | dd of=/dev/hdb

Para ahorrar aún más espacio, desfragmentar la unidad de disco/partición que desea clonar de antemano (si es apropiado), luego a cero todo el resto del espacio no utilizado, lo que es más fácil para gzip para comprimir:

mkdir /mnt/hdb
mount /dev/hdb /mnt/hdb
dd if=/dev/zero of=/mnt/hdb/zero

Espera un poco, dd eventualmente fallará con un "disco lleno", entonces:

rm /mnt/hdb/zero
umount /mnt/hdb
dd if=/dev/hdb | gzip -c  > /image.img

También, usted puede conseguir un dd proceso que se ejecuta en segundo plano para que informe de la situación mediante el envío de una señal con el comando kill, por ejemplo:

dd if=/dev/hdb of=/image.img &
kill -SIGUSR1 1234

Revise su sistema - el comando de arriba es para Linux, OS x y BSD dd comandos difieren en las señales que aceptar (OSX utiliza SIGINFO - puede presionar Ctrl+T para informar el estado).

37voto

jldugger Puntos 7490

PRECAUCIÓN: dd ing un sistema de ficheros puede dañar los archivos. La razón es simple, no tiene la comprensión de que el sistema de ficheros de actividad que puede estar pasando, y no hace ningún intento de mitigar. Si la escritura es parcialmente curso, usted recibirá un parcial de escribir. Esto normalmente no es bueno para las cosas, y generalmente fatal para las bases de datos. Por otra parte, si el tornillo de seguridad de la errata propensas a si y de los parámetros, ¡ay de vosotros. En la mayoría de los casos, rsync es igual de eficaz herramienta escrita después de la llegada de la multitarea, y proporcionará la coherencia de las vistas de archivos individuales.

Sin embargo, DD debe captar con precisión los bits de estado de una de desmontar la unidad. Gestores de arranque, llvm volúmenes, los Uuid de la partición y etiquetas, etc. Sólo asegúrese de que usted tiene una unidad capaz de la creación de reflejo de la unidad de destino bit por bit.

17voto

Ramiro Berrelleza Puntos 1017

Para clonar un disco, todo lo que usted necesita hacer es especificar la entrada y salida de dd:

dd if=/dev/hdb of=/image.img

Por supuesto, asegúrese de que tiene los permisos adecuados para leer directamente desde /dev/hdb (yo recomiendo que se ejecuta como root), y que /dev/hdb no está montado (que no quiere copiar mientras el disco está siendo cambiado de montaje como de sólo lectura también es aceptable). Una vez completa, la imagen.img será un byte por byte clon de todo el disco.

Hay un par de inconvenientes con dd para clonar discos. En primer lugar, dd copia de todo el disco, incluso en el espacio vacío, y si se hace en un disco grande puede resultar en un gran archivo de imagen. Segundo, dd ofrece absolutamente ningún progreso indicaciones, lo cual puede ser frustrante, ya que la copia tarda mucho tiempo. Tercero, si copia esta imagen a otras unidades (de nuevo, usando dd), deben ser tan grandes o más grandes que el disco original, sin embargo, usted no será capaz de utilizar el espacio adicional que usted pueda tener en el disco de destino hasta que el tamaño de sus particiones.

Usted también puede hacer un directo de disco-a-disco de copia:

dd if=/dev/hdb of=/dev/hdc

pero usted todavía está sujeto a las anteriores limitaciones en cuanto a espacio libre.

Tan lejos como los problemas o defectos ir, dd, para la mayor parte, hace un trabajo excelente. Sin embargo, hace un tiempo tuve un disco duro que estaba a punto de morir, así que he usado el comando dd para intentar copiar lo que la información podría apagado antes de que muriera por completo. Fue entonces que se enteró de que dd no controla los errores de lectura muy bien - hubo varios sectores en el disco que dd no podía leer, causando dd renunciar y dejar la copia. En el momento en que no podía encontrar una manera de decirle a dd a continuar a pesar de encontrar un error de lectura (a pesar de que parece como si se tiene que establecer), así que me pasé un poco de tiempo manualmente especificando saltar y buscar el salto a través de las secciones ilegibles.

Pasé algún tiempo investigando soluciones a este problema (después de haber completado la tarea) y he encontrado un programa llamado ddrescue, que, según el sitio web, funciona como el dd, pero sigue leyendo, incluso si se encuentra un error. En realidad nunca he usado el programa, pero es que vale la pena considerar, especialmente si el disco está copiando desde que es viejo, que puede tener sectores defectuosos, incluso si el sistema parece bien.

16voto

pottedmeat Puntos 1625

Cuando se utiliza el comando dd para clonar un disco, el cual puede contener los sectores defectuosos, el uso de "conv=noerror,sync" para asegurarse de que no se detenga cuando se encuentra un error, y se llena en el sector de la falta(s) con bytes nulos. Este es generalmente el primer paso que debo tomar si tratando de recuperarse de un error o errores de disco -- obtener una copia antes de hacer cualquier intento de recuperación y, a continuación, hacer una recuperación en la buena (clonado) de disco. Lo dejo a la herramienta de recuperación para hacer frente a cualquier espacio en blanco sectores que no podía ser copiado.

También, usted puede encontrar las dd de la velocidad puede verse afectada por la bs (tamaño de bloque). Por lo general tratan de bs=32768, pero que te gustaría probarlo en sus propios sistemas para ver lo que funciona de la forma más rápida para usted. (Esto supone que no es necesario utilizar un tamaño específico de bloque por otra razón, por ejemplo, si usted está escribiendo a una cinta.)

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: