dd crashing – que faire à ce sujet

J'ai dd s'écraser après avoir exécuté quelques heures. Typiquement avec un message comme

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

Y a-t-il quelque chose que je peux faire à ce sujet? Y a-t-il un moyen d'utiliser la sortie? Ou recommence-t-il là où il s'est arrêté?

Y at-il une raison de penser que c'est parce que la partition sauvegardée est utilisée?

Il se bloque toujours autour de 70-80%, souvent lorsque la partition doit être less utilisée.

Puisque ce process prend si longtime, il est difficile d'essayer différentes choses.

Je sors à une image. Je pourrais probablement utiliser une partition, mais LVM est impliqué:

 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) copyd, 4625.3 s, 74.0 MB/s 220856+2 records in 220858+0 records out 441716000000 bytes (442 GB) copyd, 6138.1 s, 72.0 MB/s 

Vendredi matin 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 propos de copyr 441714 MBytes depuis / dev / centos / home vers /run/media/ob/X_1T_Media1GHD-PCTU3/c/sd7c_dd.image Positions de départ: infile = 0 B, outfile = 0 B Taille du bloc de copy: 131072 secteurs Taille initiale du segment: 32 secteurs Taille du secteur: 2048 Octets

Appuyez sur Ctrl-C pour interrompre sauvé: 441714 MB, errsize: 8192 B, taux actuel: 0 B / s ipos: 342124 MB, erreurs: 1, taux moyen: 60675 kB / s opos: 342124 MB, lecture réussie: il y a 9 s Terminé

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

Si cela aide,

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

    Vous ne devriez jamais lancer dd sur un système de files monté, car cela peut corrompre l'image, en particulier. si vous voulez faire une sauvegarde. Vous pouvez utiliser du tar place.

    Si vous êtes sûr que le périphérique ne fonctionne pas, vous pouvez utiliser la seek (pour searchr N blocs dans le file de sortie) et skip=N (pour ignorer N blocs de l'input). Sur un système Linux, vous pouvez utiliser la command dmesg pour get le journal actuel du kernel.

    Si vous ne savez pas si le périphérique que vous souhaitez copyr peut échouer, je vous recommand d'utiliser ddrescue pour get une image de l'appareil. Cet outil n'interrompt pas les erreurs de lecture et consigne les positions des blocs qu'il n'a pas pu lire correctement.

    Si vous essayez de copyr une partition en cours d'utilisation, vous vous préparez à une très mauvaise chute. Copier une partition comme celle-ci nécessite que rien n'y écrive. Du tout.

    Si vous pouvez suspendre la partition, vous pouvez utiliser ddrescue , qui est conçu pour lire les disques et les partitions avec des secteurs défectueux. Une invocation typique pour extraire /dev/sda1 dans le file image /media/sda1.img serait comme ceci:

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

    Le secteur et les tailles de cluster définissent ddrescue up pour la lecture des unités 64 Mo. Vous pouvez essayer d'augmenter cette valeur à 128 Mo ou même 256 Mo, mais sachez que cela n'accroîtra pas nécessairement le débit.

    Dans votre cas particulier, votre partition source est en réalité un volume LVM, c'est une aide précieuse: vous pouvez prendre un instantané de la partition à sauvegarder. Dans cet exemple, je l'ai appelé 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 le périphérique est plus grand que le 342 Go qu'il a copié, vous avez probablement un secteur défectueux sur ce disque.

    Vous pouvez utiliser seek et skip avec des valeurs identiques pour reprendre.

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

    68424 ne produira probablement que la même erreur d'E / S, vous devrez donc l'augmenter. Vous n'avez pas dit quelle taille de bloc vous avez utilisée (et je suis trop paresseux pour faire les calculs), pour sauter des régions d'erreur plus petites, vous préférerez peut-être une plus petite taille de blocs.

    N'utilisez pas conv=noerror , il corrompt les choses . Si vous rencontrez plus d'erreurs, utilisez ddrescue , c'est un outil qui gère mieux les erreurs de lecture que dd .