-
Vous utilisez les 512 octets par défaut
dd
taille de bloc. Vous amélioreriez considérablement les performances en utilisant une taille de bloc plus grande, disons128k
ou même1m
. -
Il y a deux sorties car vous exécutez deux
dd
commandes, la première est le lecteur de périphérique et affiche une erreur d'E/S. -
Vous utilisez probablement LVM compte tenu du nom de périphérique que vous utilisez :
/dev/Storage/Storage
. Êtes-vous sûr qu'il s'agit du disque entier et non d'un sous-ensemble ? Utilisezlvdisplay
pour découvrir ce qui se cache derrière ce nom d'appareil.
Regardez dans vos messages de journal du noyau (dmesg
, ou /var/log/kern.log
) pour des messages plus détaillés des pilotes SATA, s'il s'agissait d'une erreur matérielle. Aussi utile :smartctl -x /dev/sda
. S'il s'agissait simplement d'une tentative de lecture au-delà de la fin d'une partition ou quelque chose du genre, cela pourrait également apparaître dans le journal du noyau.
Pour que dd continue après une erreur d'e/s, pour lire les parties lisibles qui suivent l'erreur, utilisez
dd if=... of=... conv=noerror bs=128k # it doesn't get any faster beyond about 128k, because of L2 cache size
(Comme mentionné dans les commentaires sur l'OP, ddrescue
a cela et plus encore. conv=noerror
a été ajouté à GNU dd après ddrescue
existait, IIRC.)
Si vous souhaitez reprendre là où vous vous étiez arrêté, vous pouvez utiliser le seek
et skip
options, avec conv=notrunc
.
Si vous voulez vraiment voir à quelle distance se trouve dd, regardez la position du fichier de son stdin :
cat /proc/$(pidof dd)/fdinfo/0 # dd opens its infile as fd #0
(ou ls -lh
la taille du fichier de sortie). Copier un disque dur entier de données 2 fois de plus en les faisant passer par quelque chose me semble idiot, car cela rendra simplement votre ordinateur un peu plus lent que nécessaire pour les heures que prendra la copie.
Ou au moins faire :
dd if=... conv=noerror bs=128k | pv > Storage.img