"Errore di input / output" quando si accede a una directory


80

Voglio elencare e rimuovere il contenuto di una directory su un disco rigido rimovibile. Ma ho riscontrato "Errore di input / output":

$ rm  pic -R
rm: cannot remove `pic/60.jpg': Input/output error
rm: cannot remove `pic/006.jpg': Input/output error
rm: cannot remove `pic/008.jpg': Input/output error
rm: cannot remove `pic/011.jpg': Input/output error

$ ls -la pic
ls: cannot access pic/60.jpg: Input/output error
-????????? ? ?    ?         ?            ? 006.jpg
-????????? ? ?    ?         ?            ? 006.jpg
-????????? ? ?    ?         ?            ? 011.jpg

Mi chiedevo quale fosse il problema?

Come posso recuperare o rimuovere la directory pice tutto il suo contenuto?

Il mio sistema operativo è Ubuntu 12.04 e il disco rigido rimovibile ha il filesystem ntfs. Altre directory che non contengono o non sono presenti picsul disco rigido rimovibile funzionano correttamente.


Inserito il:

Ultima parte dell'output di dmesgdopo che ho provato a elencare il contenuto della directory:

[19000.712070] usb 1-1: new high-speed USB device number 2 using ehci_hcd
[19000.853167] usb-storage 1-1:1.0: Quirks match for vid 05e3 pid 0702: 520
[19000.853195] scsi5 : usb-storage 1-1:1.0
[19001.856687] scsi 5:0:0:0: Direct-Access     ST316002 1A               0811 PQ: 0 ANSI: 0
[19001.858821] sd 5:0:0:0: Attached scsi generic sg2 type 0
[19001.861733] sd 5:0:0:0: [sdb] 312581808 512-byte logical blocks: (160 GB/149 GiB)
[19001.862969] sd 5:0:0:0: [sdb] Test WP failed, assume Write Enabled
[19001.865223] sd 5:0:0:0: [sdb] Cache data unavailable
[19001.865232] sd 5:0:0:0: [sdb] Assuming drive cache: write through
[19001.867597] sd 5:0:0:0: [sdb] Test WP failed, assume Write Enabled
[19001.869214] sd 5:0:0:0: [sdb] Cache data unavailable
[19001.869218] sd 5:0:0:0: [sdb] Assuming drive cache: write through
[19001.891946]  sdb: sdb1
[19001.894713] sd 5:0:0:0: [sdb] Test WP failed, assume Write Enabled
[19001.895950] sd 5:0:0:0: [sdb] Cache data unavailable
[19001.895953] sd 5:0:0:0: [sdb] Assuming drive cache: write through
[19001.895958] sd 5:0:0:0: [sdb] Attached SCSI disk
[19113.024123] usb 2-1: new high-speed USB device number 3 using ehci_hcd
[19113.218157] scsi6 : usb-storage 2-1:1.0
[19114.232249] scsi 6:0:0:0: Direct-Access     USB 2.0  Storage Device   0100 PQ: 0 ANSI: 0 CCS
[19114.233992] sd 6:0:0:0: Attached scsi generic sg3 type 0
[19114.242547] sd 6:0:0:0: [sdc] 312581808 512-byte logical blocks: (160 GB/149 GiB)
[19114.243144] sd 6:0:0:0: [sdc] Write Protect is off
[19114.243154] sd 6:0:0:0: [sdc] Mode Sense: 08 00 00 00
[19114.243770] sd 6:0:0:0: [sdc] No Caching mode page present
[19114.243778] sd 6:0:0:0: [sdc] Assuming drive cache: write through
[19114.252797] sd 6:0:0:0: [sdc] No Caching mode page present
[19114.252807] sd 6:0:0:0: [sdc] Assuming drive cache: write through
[19114.280407]  sdc: sdc1 < sdc5 >
[19114.289774] sd 6:0:0:0: [sdc] No Caching mode page present
[19114.289779] sd 6:0:0:0: [sdc] Assuming drive cache: write through
[19114.289783] sd 6:0:0:0: [sdc] Attached SCSI disk

1
Un errore I / O può essere un problema hardware (RAM o disco rigido danneggiati). Può anche significare un filesystem danneggiato o un bug del driver; dato che si tratta di NTFS, non lo escluderei.
Gilles,

Risposte:


36

Gli errori di input / output durante i tentativi di accesso al filesystem generalmente significano problemi hardware.

Digitare dmesge controllare le ultime righe di output. Se il disco o la connessione non funzionano, verrà annotato lì.

EDIT Lo stai montando tramite ntfso ntfs-3g? Per quanto ricordo, il ntfsdriver legacy non aveva un supporto di scrittura stabile ed è stato in gran parte abbandonato quando si è scoperto che ntfs-3gera significativamente più stabile e sicuro.


3
Collego il disco rigido rimovibile al mio Ubuntu 12.04 e viene montato automaticamente. Quindi immagino ntfs-3g?
Tim

8
Non " indovinare ". Controlla: puoi vedere come è montato tutto digitando il mountcomando e guardando l'output.
Shadur,

1
(1) Ho aggiunto l'ultima parte dell'output di dmesgdopo aver provato a elencare il contenuto della directory. Non so come sia d'aiuto. (2) Non riesco a vedere se è montato da nfts-3g o ntfs, guardando l'output di mount:/dev/sdb1 on /media/removable_drive type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)
Tim

2
fuseblksignifica che sta usando il fusermetodo filesystem-in-userspace che è quello che ntfs-3gusa. Quindi sei bravo in questo senso.
Shadur,

19

Come afferma Sadhur, questo è probabilmente causato da problemi hardware del disco e l' dmesgoutput è il posto giusto per verificarlo.

Puoi eseguire una scansione di superficie del tuo disco da Linux /sbin/badblocks /dev/sda.

Controllare la pagina del manuale per test più approfonditi e correzioni di base (rilocalizzazione dei blocchi). Tutto questo è indipendente dal filesystem, quindi è sicuro anche con un filesystem NTFS poiché funziona a livello di "superficie del disco".

Personalmente l'ho fatto funzionare su base mensile da cron. Ovviamente devi controllare se ricevi le cron mail nella tua casella di posta (che spesso non è il caso per impostazione predefinita). Queste mail finiscono in /var/mail/$USERo simili.

Ho creato /etc/cron.d/badblocks:

30 4 * * 3 root [ -x /sbin/badblocks ] && [ $(date +\%d) -le 7 ] && /sbin/badblocks /dev/sda

Grazie! Per eseguire il comando che hai suggerito, è /sbin/badblocks /media/removable_drivenel mio caso?
Tim

No. Secondo l'output di dmesg devi usare sdb: /sbin/badblocks /dev/sdbo sdc. Non riesco davvero a capire cosa è successo / che hai fattodmesg
jippie il

Puoi trovare il tuo /dev/sd{x}disco con il fdisk -lcomando
lucidyan

ricorda che l'app Badblocks accetta i blocchi di inizio e fine con cui lavorare nel caso in cui tu voglia "sospendere / riprendere" :)
Aquarius Power

9

Il tuo filesystem è danneggiato, per i volumi NTFS dovresti eseguire un chkdsksistema sotto Windows, ma è quasi impossibile recuperarlo. A volte potrebbe essere necessario formattare il disco.


Grazie! Le mie altre directory vanno bene. Non posso formattare l'intero disco, ma solo recuperare lo spazio dalla directory in questione?
Tim

1
@Tim, hai dovuto copiare tutto il resto, formattarlo e copiarlo di nuovo ... non so se si può rimuovere un singolo nodo ... non avere familiarità con la struttura NTFS
daisy

3
Prima di formattare, prova il badblockscomando su Linux.
jippie,

7

Una soluzione che funziona per me è il downgrade della ntfs-3gversione dalla versione 2014 alla versione 2012. Questo dovrebbe risolvere il problema di accesso alla partizione NTFS. A lungo termine questa non è una soluzione perché alla fine dovrai eseguire l'ultima versione.

Maggiori informazioni qui


3
Grazie mille. Ciò ha risolto il mio problema. Ho installato l'ultima versione stabile (2016.2.22) dalla fonte e ora funziona perfettamente. Istruzioni per l'installazione che ho usato: tuxera.com/community/open-source-ntfs-3g
Ricardo Pereira

Va bene, è buono a sapersi. Quindi sostanzialmente c'è una finestra tra il 2012 e l'inizio del 2016 durante la quale l'unità semplicemente non ha funzionato.

2

Volevo solo aggiungere la mia soluzione a questo thread a beneficio di altri - ho fatto un po 'di lavoro sul mio sistema in caso di interruzione dell'alimentazione - Devo aver ricollegato i cavi SATA nell'ordine sbagliato come quando li ho scambiati, tutto ha funzionato di nuovo - non ho idea del perché il disco di avvio debba trovarsi su una porta SATA specifica, comunque, potrebbe essere la risposta per qualcun altro.


2

Nessuno ha menzionato cosa fare se gli strumenti di Linux non funzionano e solo un Mac, ma non Windows, è disponibile.

Può essere riparato su OS X con Paragon NTFS

Nel mio caso ha gparteddetto di andare a trovare un PC Windows che non si trovava da nessuna parte. Ma c'era un Mac in giro, per il quale è disponibile questo fantastico software. Installata la versione di prova, eseguita verifica , quindi riparazione - e voilà!


Ho avuto un caso su macos quando tale errore è stato prodotto dall'uso di sshfs (apparentemente) nella build toolchain. L'installazione di osxfuse e sshfs tramite brew ha aiutato.
sdd

2

Volevo solo condividere la mia esperienza: su FreeBSD 10.3 ho montato il mio disco rigido esterno

$ sudo ntfs-3g /dev/da0s1 /media

All'interno del disco rigido, ho fatto un mkdirper creare una directory e quindi spostato alcuni file su di esso, ovviamente con mvcomando. Alla fine ho fatto il seguente comando:

$ sudo sync

Quindi ho montato il disco rigido su una macchina Linux con kernel 4.4.0-78-generico. Ora, quando elenco il contenuto del disco rigido, la directory creata su FreeBSD, denominata Jeff, viene mostrata come di seguito:

$ ls -lhrtci
ls: cannot access 'Jeff': Input/output error
total 20K
  ? d????????? ? ?    ?       ?            ? Jeff

inserisci qui la descrizione dell'immagine

Inoltre, quando Jeffprovo a rimuovere la directory, ricevo il seguente messaggio di errore:

$ sudo rm -f -R Jeff
rm: cannot remove 'Jeff': Input/output error

inserisci qui la descrizione dell'immagine

Non riuscivo a liberarmi della Jeffdirectory su una macchina Linux, quindi ho usato la macchina FreeBSD e ho ricollegato il disco rigido su FreeBSD. Ma i ls, cde rmcomandi su FreeBSD generano lo stesso Input/output error. Sembra che ci sia stato un bug nel ntfs-3gpacchetto di FreeBSD .


AGGIORNARE

Ho spostato tutti i miei dati dal disco rigido esterno su una macchina Linux, ovviamente il file corrotto Jeffnon può essere spostato a causa di un errore I / O. Quindi ho riformattato il disco rigido esterno con l'azzeramento del volume e il controllo del settore danneggiato in questo modo:

$ sudo mkfs.ntfs /dev/sdb1

E quindi trasferito tutti i dati nel volume esterno. In questo modo, ho perso il file corrotto denominato Jeff, tuttavia, il mio disco rigido esterno è privo di errori I / O.


0

Ho rilasciato che quando provo ad accedere al disco che si verifica questo errore, ha provato a scrivere gli ultimi file copiati erano sovrascritti nell'ultimo file, quindi il tentativo di accesso fallisce perché il record già scritto non corrisponde agli ultimi elementi copiati, quindi fallisce. Il modo più salutare per ripristinare il disco è rimuovere l'ultimo o gli elementi copiati in Windows.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.