25 votos

¿el comando 'dd' tarda demasiado?

Yo preparé dd para clonar un disco duro del sistema más pequeño de 40,00GB (/dev/sda) a uno nuevo más grande de 111,00GB conectado a través de un lector USB (dev/sdb) y ya lleva dos horas. El medidor de actividad del nuevo disco duro muestra que está haciendo algo. Pero la CPU sólo está al 20%. ¿Cuándo se completará esta cosa? ¿Debo reiniciar el proceso?

1 votos

Dd es silenciosa por lo que al hacerlo la primera vez parece que tarda una eternidad. Pero ten paciencia. La 'manera unix' es que a menos que se queje probablemente está funcionando. Echa un vistazo a esta respuesta para más detalles: askubuntu.com/questions/435694/

59voto

Jim Salter Puntos 2940

En el futuro, deberá utilizar pv para obtener una barra de progreso en funcionamiento.

sudo apt-get install pv

Con pv instalado, supongamos que quieres clonar una unidad de 20 GB, /dev/foo a otra unidad (¡de 20 GB o más!), /dev/baz :

sudo dd if=/dev/foo bs=4M | pv -s 20G | sudo dd of=/dev/baz bs=4M

Puntos importantes a tener en cuenta: el bs=4M establece el tamaño del bloque para las operaciones de dd a 4MB, que drásticamente mejora la velocidad del conjunto. Y el -s 20G El argumento dice pv la magnitud de esta operación, por lo que puede darle un tiempo estimado de llegada, así como la velocidad actual.

Me encanta pv tan fuerte que probablemente debería ser ilegal.

1 votos

Por supuesto, pv es muy útil, pero si está copiando una gran cantidad de datos que añade más cambios de contexto y copias de búfer por lo que consumirá más CPU y tal vez puede ralentizar las cosas un poco. Pero como la copia de datos está limitada por la velocidad de las unidades, no añadirá mucha sobrecarga.

0 votos

En la práctica, es MUY poco probable que pv añada un 0,1% al tiempo de copia. Si lo hace, es casi seguro que es una operación tan cegadoramente rápida que no tenía sentido tratar de añadir una barra de progreso en primer lugar.

1 votos

Muy cierto. Sólo soy un ingeniero a la antigua usanza acostumbrado a ahorrar todos los ciclos que puedo.

26voto

Steve smith Puntos 11

Puedes ver hasta dónde ha llegado enviándole una señal SIGUSR1 para ver cuántos datos ha copiado y la velocidad de transferencia:

kill -SIGUSR1 $(pidof dd)

Para la actividad de copia está limitada por la velocidad de E/S del dispositivo, por lo que la CPU no debería estar totalmente cargada, así que no te preocupes por eso.

1 votos

Tomo nota. Bueno, me mató el proceso de darse cuenta de que iba bastante lento .. tuvo que rehacer la tabla de particiones, pero es de nuevo a todos los vacíos ahora. ¿Conoces alguna forma mejor de clonar un disco duro que no te lleve todo el día?

0 votos

@SeanWebber: la ejecución de ese comando en realidad no debe terminar el dd proceso. En man dd : " Envío de una señal USR1 a un dd hace que imprima las estadísticas de E/S en el error estándar y luego reanude la copia". Para acelerar el proceso prueba a especificar un tamaño de bloque mayor como sugiere Jim Salter en la otra respuesta.

4 votos

El dd de OS X debe estar estropeado ya que el envío del SIGUSR1 también me lo ha matado.

7voto

Elder Geek Puntos 6273

He utilizado pv, así como (ps y matar) en el pasado como se sugiere en las otras respuestas, pero más recientemente he estado usando sólo dc3dd que produce los mismos resultados a la vez que proporciona un informe de progreso a lo largo del proceso.

Puedes comprobar si ya está instalado con: which dc3dd

Si no, puedes instalarlo con sudo apt-get install dc3dd

Los comandos son similares a dd (para la clonación, aunque el borrado es un poco más sencillo).

En tu caso utilizaría el comando dc3dd if=/dev/sda of=/dev/sdb

0voto

Tobias Puntos 126

Tuve un problema similar. La causa era diferente en mi caso.

La unidad de destino es un disco duro externo.

Si el disco se montó automáticamente a través de udisks y udisks-glue entonces la tasa de transferencia del cdrom al hd era de unos 40kB/s.

Cuando desmonté el hd y lo monté directamente a través de mount Conseguí una tasa de transferencia de unos 2,4 MB/s.

4 votos

Por favor, añada más información a esta respuesta como la forma de montarlo utilizando mount y no udisks .

0voto

atmelino Puntos 139

En su lugar, puede utilizar ddrescue:

sudo ddrescue -v /dev/sda /dev/sdb

v significa verboso.

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:

X