dd crashing – qué hacer al respecto

Me he desplomado después de correr unas horas. Típicamente con un post como

 Input/output error 68424+1 records in 68424+1 records out 342124883968 bytes (342 GB) copied, 5114.68 s, 66.9 MB/s 

¿Hay algo que pueda hacer al respecto? ¿Hay alguna forma en que pueda usar la salida? ¿O reiniciar donde lo dejó?

¿Hay alguna razón para pensar que se debe a que se está utilizando la partición que se está respaldando?

Siempre se bloquea alnetworkingedor del 70-80%, a menudo cuando la partición debe ser less utilizada.

Dado que este process lleva tanto time, es difícil probar cosas diferentes.

Saludo a una image. Probablemente podría usar una partición, pero LVM está involucrado:

 sudo lvmdiskscan /dev/centos/swap [ 3.89 GiB] /dev/sda1 [ 500.00 MiB] /dev/centos/root [ 50.00 GiB] /dev/sda2 [ 465.27 GiB] LVM physical volume /dev/centos/home [ 411.38 GiB] /dev/sdb1 [ 931.51 GiB] 3 disks 2 partitions 0 LVM physical volume whole disks 1 LVM physical volume dd conv=sync,noerror if=/dev/centos/home bs=2000000 of=/run/media/ob/X_1T_Media1GHD-PCTU3/c/sd9e22_cel.image dd: error reading '/dev/centos/home': Input/output error 171062+1 records in 171063+0 records out 342126000000 bytes (342 GB) copied, 4625.3 s, 74.0 MB/s 220856+2 records in 220858+0 records out 441716000000 bytes (442 GB) copied, 6138.1 s, 72.0 MB/s 

Friday Morning ddrescue --sector-size=2048 --cluster-size=$((256*512)) --sparse --verbose /dev/centos/home /run/media/ob/X_1T_Media1GHD-PCTU3/c/sd7c_dd.image /run/media/ob/X_1T_Media1GHD-PCTU3/c/sd7c_dd.map

GNU ddrescue 1.18.1 A punto de copyr 441714 MBytes desde / dev / centos / home a /run/media/ob/X_1T_Media1GHD-PCTU3/c/sd7c_dd.image Posiciones de inicio: infile = 0 B, file de salida = 0 B Tamaño de bloque de copy: 131072 sectores Tamaño de salto inicial: 32 sectores Tamaño del sector: 2048 Bytes

Presione Ctrl-C para interrumpir rescatado: 441714 MB, errsize: 8192 B, tasa actual: 0 B / s ipos: 342124 MB, errores: 1, tasa promedio: 60675 kB / s opos: 342124 MB, time de ejecución: 2.02 h, versión exitosa: hace 9 s Finalizado

Pero extundelete sd7c_dd.image --restre-directory /home/ob/p -o /tmp/tt extundelete: Bad magic number in super-block when trying to open filesystem sd7c_dd.image

Si ayuda,

 /dev/mapper/centos-home on /home type xfs (rw,relatime,attr2,inode64,noquota) 

Nunca debe ejecutar dd en un sistema de files montado, ya que eso puede dañar la image, especialmente. si quieres hacer una copy de security Es posible que desee utilizar tar lugar.

Si está seguro de que el dispositivo no está fallando, puede usar los indicadores de seek (para search N bloques en el file de salida) y skip=N (para omitir N bloques de la input). En un sistema Linux, puede usar el command dmesg para get el logging actual del kernel.

Si no está seguro de si el dispositivo que desea copyr puede estar fallando, le recomiendo usar ddrescue para get una image del dispositivo. Esa herramienta no aborta los errores de lectura y registra las posiciones de los bloques que no pudo leer correctamente.

Si intenta copyr imágenes de una partición que está en uso, se está preparando para una caída realmente mala. Copiar una partición como esta requiere que nada esté escribiéndole. En absoluto.

Si puede desactivar la partición, puede usar ddrescue , que está diseñado para leer discos y particiones con sectores defectuosos. Una invocación típica para extraer /dev/sda1 al file de image /media/sda1.img sería así:

 ddrescue --sector-size=2048 --cluster-size=$((64*512)) --sparse --verbose /dev/sda1 /media/sda1.img /media/sda1.map 

Los tamaños de sector y clúster configuran ddrescue para leer unidades de 64MB. Es posible que desee intentar boost esto a 128 MB o incluso 256 MB, pero tenga en count que esto no necesariamente boostá el performance.

En su caso particular, su partición fuente es en realidad un volumen LVM, por lo que es una gran ayuda: puede tomar una instantánea de la partición para hacer una copy de security. En este ejemplo, lo llamé home-snap .

 lvcreate --snapshot --name home-snap --size 1G /dev/centos/home ddrescue --sector-size=2048 --cluster-size=$((64*512)) --sparse --verbose /dev/centos/home-snap /run/media/ob/X_1T_Media1GHD-PCTU3/c/sd9e22_cel.image /run/media/ob/X_1T_Media1GHD-PCTU3/c/sd9e22_cel.map lvremove -y /dev/centos/home-snap 

Si el dispositivo es más grande que el 342GB que copió, lo más probable es que tenga un sector defectuoso en este disco.

Puede usar seek y skip con valores idénticos para reanudar.

 dd <your previous options here ...> seek=68424 skip=68424 conv=notrunc 

68424 muy probable que 68424 produzca el mismo error de E / S nuevamente, por lo que tendrá que boostlo. No dijiste qué tamaño de bloque usaste (y soy demasiado perezoso para hacer los cálculos), para omitir regiones de error más pequeñas podrías preferir un tamaño de bloques más pequeño (entonces debes adaptar seek y skip consecuencia).

No use conv=noerror , corrompe las cosas . Si encuentra más errores, use ddrescue , es una herramienta que maneja los errores de lectura mejor que dd .