web-dev-qa-db-fra.com

cp ne parvient pas à copier avec les erreurs "cp: erreur de lecture du 'fichier': erreur d'entrée / sortie" et "cp: impossible d'étendre le 'fichier': erreur d'entrée / de sortie

Je suis un utilisateur d'Oracle Virtualbox sur Ubuntu. Et j’avais l’habitude de copier des fichiers vdi comme une sorte de sauvegarde. Auparavant, je faisais cela (copier un fichier vdi puis le recopier) plusieurs fois sans aucun problème.

Mais aujourd'hui j'ai vécu cette erreur

VirtualBox VMs/win_7$ cp ../../Bkps/win_7.vdi .
cp: error reading ‘../../Bkps/win_7.vdi’: Input/output error
cp: failed to extend ‘./win_7.vdi’: Input/output error

Je googlé un peu pour cela, mais des conseils sur des problèmes similaires, je n'ai malheureusement pas tout compris. Quelqu'un pourrait-il suggérer comment résoudre ce problème, s'il vous plaît?

La sortie de dmesg est (et je n'y comprends rien)

[ 2347.982876] ata1.00: exception Emask 0x0 SAct 0x1900406f SErr 0x0 action 0x0
[ 2347.982887] ata1.00: irq_stat 0x40000008
[ 2347.982895] ata1.00: failed command: READ FPDMA QUEUED
[ 2347.982908] ata1.00: cmd 60/08:70:d0:da:f4/00:00:2e:00:00/40 tag 14 ncq 4096 in
[ 2347.982908]          res 41/40:08:d0:da:f4/00:00:2e:00:00/00 Emask 0x409 (media error) <F>
[ 2347.982915] ata1.00: status: { DRDY ERR }
[ 2347.982919] ata1.00: error: { UNC }
[ 2348.395657] ata1.00: configured for UDMA/133
[ 2348.395727] sd 0:0:0:0: [sda] Unhandled sense code
[ 2348.395733] sd 0:0:0:0: [sda]  
[ 2348.395737] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 2348.395741] sd 0:0:0:0: [sda]  
[ 2348.395745] Sense Key : Medium Error [current] [descriptor]
[ 2348.395752] Descriptor sense data with sense descriptors (in hex):
[ 2348.395764]         72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00 
[ 2348.395770]         2e f4 da d0 
[ 2348.395772] sd 0:0:0:0: [sda]  
[ 2348.395774] Add. Sense: Unrecovered read error - auto reallocate failed
[ 2348.395775] sd 0:0:0:0: [sda] CDB: 
[ 2348.395776] Read(10): 28 00 2e f4 da d0 00 00 08 00
[ 2348.395781] end_request: I/O error, dev sda, sector 787798736
[ 2348.395792] ecryptfs_decrypt_page: Error attempting to read lower page; rc = [-5]
[ 2348.395795] ata1: EH complete
[ 2348.395797] ecryptfs_readpage: Error decrypting page; rc = [-5]
[ 2351.264987] ata1.00: exception Emask 0x0 SAct 0x7f80400 SErr 0x0 action 0x0
[ 2351.264998] ata1.00: irq_stat 0x40000008
[ 2351.265005] ata1.00: failed command: READ FPDMA QUEUED
[ 2351.265019] ata1.00: cmd 60/08:50:d0:da:f4/00:00:2e:00:00/40 tag 10 ncq 4096 in
[ 2351.265019]          res 41/40:08:d0:da:f4/00:00:2e:00:00/00 Emask 0x409 (media error) <F>
[ 2351.265025] ata1.00: status: { DRDY ERR }
[ 2351.265029] ata1.00: error: { UNC }
[ 2351.403371] ata1.00: configured for UDMA/133
[ 2351.403425] sd 0:0:0:0: [sda] Unhandled sense code
[ 2351.403426] sd 0:0:0:0: [sda]  
[ 2351.403428] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 2351.403429] sd 0:0:0:0: [sda]  
[ 2351.403430] Sense Key : Medium Error [current] [descriptor]
[ 2351.403433] Descriptor sense data with sense descriptors (in hex):
[ 2351.403434]         72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00 
[ 2351.403439]         2e f4 da d0 
[ 2351.403442] sd 0:0:0:0: [sda]  
[ 2351.403444] Add. Sense: Unrecovered read error - auto reallocate failed
[ 2351.403445] sd 0:0:0:0: [sda] CDB: 
[ 2351.403446] Read(10): 28 00 2e f4 da d0 00 00 08 00
[ 2351.403451] end_request: I/O error, dev sda, sector 787798736
[ 2351.403463] ecryptfs_decrypt_page: Error attempting to read lower page; rc = [-5]
[ 2351.403466] ecryptfs_readpage: Error decrypting page; rc = [-5]
[ 2351.403470] ata1: EH complete

Toute aide est grandement appréciée, merci d'avance

9
user907860

S'il ne s'agit pas d'un "disque" dans une boîte virtuelle, mais du disque physique réel sur lequel les images vm sont stockées, le résultat est plutôt mauvais.

Il y a eu des erreurs de lecture sur/dev/sda.
Il existe un traitement automatique en marquant un bloc de disque comme étant un bloc défectueux pour toujours, et utilisez un autre à la place.
Pour que cela fonctionne, le disque dur doit lire les données encore une fois , en essayant peut-être quelques centaines de lectures.
Mais le disque a abandonné à ce sujet:

"Add. Sens: Erreur de lecture non récupérée - Echec de la réallocation automatique"

Il y a vraiment de mauvaises erreurs sur le disque - il n'est tout simplement pas encore clair si elles se trouvent dans un seul emplacement ou sont réparties et si elles augmentent avec le temps.

Le disque dur peut échouer très bientôt,
like "tout à l'heure" .
Ou la semaine prochaine, ou pas du tout.

Si ça marche avec un test e2fsck, vous ne pouvez toujours pas l'utiliser pour quelque chose d'important.

Dès que e2fsck confirme l'existence d'erreurs de support, le mieux est de les remplacer.

Sinon, effectuez des sauvegardes dès que possible,
démarrer un live CD ou autre (ou trouver un moyen de démonter/ sans monter /home),
et recherchez les blocs défectueux, comme par

Sudo e2fsck -c -v /dev/sdXN

Tenez compte du fait que sur un disque dur mécanique plus grand , la recherche de blocs défectueux peut prendre beaucoup de temps , entre heures et peut-être un jour ou deux. Cela est dû en partie au fait que le programme doit vérifier chaque bloc de disque séparément et s’occuper des problèmes séparément. Mais aussi, si le disque donne des erreurs lors de la lecture, il y a de nombreuses tentatives sur plusieurs niveaux avant que e2fsck ne sache même qu'il y a un problème. Pour chaque bloc de disque.

Il peut être judicieux d'exécuter e2fsck en mode de réparation automatique et de laisser l'ordinateur seul pendant un moment:

Sudo e2fsck -p -c -v /dev/sdXN

Voir buntuforums: Freeze aléatoire et "Erreur de lecture non récupérée" dans/var/log/messages pour plus de détails.

6
Volker Siegel

Pour moi, j'ai eu cette erreur en essayant de copier des images de disque qui totalisaient quelque chose comme 128 Go. cp essayait de charger tout le contenu en mémoire afin de le réécrire et cela ne fonctionnerait évidemment pas, donc cela doit être fait en morceaux. Le meilleur moyen que j'ai trouvé de fragmenter le fichier est de le forcer via ssh.

scp user@localhost:/path/to/source /path/to/dest

Vous devez utiliser user@localhost; l'omettre reviendra à un comportement semblable à cp-.

5
jwallace

Les secteurs de votre disque dur ont été corrompus. DRDY ERR - Erreur de vérification du périphérique prêt. UNC - Non corrigible.

Pour diverses raisons, telles que l'arrêt brutal lors d'une écriture intensive, les opérations d'écriture haute température, lecture haute et la qualité du disque dur jouent un rôle majeur dans ce cas.

Une fois qu'un secteur est corrompu et si le noyau tente d'accéder à ces secteurs, vous obtiendrez cette erreur.

Vous pouvez utiliser seatools pour remédier temporairement à cette erreur. Mais ce ne sera pas pour résoudre ce problème pour toujours, il peut se reproduire plusieurs fois plus tard.

Si vous avez de la chance, cela ne se reproduira pas avant plusieurs jours.

Il est préférable de sauvegarder les données sur un nouveau disque dur et de remplacer le disque dur.

1
user314563