“Erro de entrada / saída” ao acessar um diretório

80

Quero listar e remover o conteúdo de um diretório em um disco rígido removível. Mas experimentei "Erro de entrada / saída":

$ 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

Eu queria saber qual é o problema?

Como posso recuperar ou remover o diretório pice todo o seu conteúdo?

Meu sistema operacional é o Ubuntu 12.04, e o disco rígido removível possui um sistema de arquivos NTFS. Outros diretórios que não contêm ou estão picno disco rígido removível estão funcionando bem.


Adicionado:

Última parte da saída de dmesgdepois que tentei listar o conteúdo do diretório:

[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
Tim
fonte
1
Um erro de E / S pode ser um problema de hardware (RAM ou disco rígido danificados). Também pode significar um sistema de arquivos danificado ou um bug de driver; como esse é o NTFS, eu não descartaria isso.
Gilles

Respostas:

36

Erros de entrada / saída durante tentativas de acesso ao sistema de arquivos geralmente significam problemas de hardware.

Digite dmesge verifique as últimas linhas de saída. Se o disco ou a conexão a ele estiver falhando, será anotado lá.

EDIT Você está montando via ntfsou ntfs-3g? Pelo que me lembro, o ntfsdriver herdado não tinha suporte de gravação estável e foi amplamente abandonado quando se mostrou ntfs-3gsignificativamente mais estável e seguro.

Shadur
fonte
3
Eu conecto o disco rígido removível ao meu Ubuntu 12.04, e ele é montado automaticamente. Então eu acho ntfs-3g?
Tim
8
Não " adivinhe ". Verificação - você pode ver como tudo é montado digitando o mountcomando e observando a saída.
#
1
(1) Adicionei a última parte da saída dmesgdepois de tentar listar o conteúdo do diretório. Não sei como isso ajuda. (2) Não consigo ver se ele é montado por nfts-3g ou ntfs, observando a saída de mount:/dev/sdb1 on /media/removable_drive type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)
Tim
2
fuseblksignifica que está usando o método fuserfilesystem-in-userspace, que é o que ntfs-3gusa. Então você é bom nesse sentido.
precisa saber é o seguinte
19

Como afirma Sadhur, isso provavelmente é causado por problemas de hardware do disco e a dmesgsaída é o lugar certo para verificar isso.

Você pode emitir uma varredura de superfície do seu disco a partir do Linux /sbin/badblocks /dev/sda.

Verifique a página do manual para testes mais detalhados e correções básicas (realocação de bloco). Isso é independente do sistema de arquivos, portanto é seguro mesmo com um sistema de arquivos NTFS, pois opera no nível da 'superfície do disco'.

Pessoalmente, fiz isso para executar mensalmente a partir do cron. É claro que você precisa verificar se recebe os e-mails cron na sua caixa de correio (o que geralmente não é o caso por padrão). Esses e-mails acabam em /var/mail/$USERou similares.

Eu criei /etc/cron.d/badblocks:

30 4 * * 3 root [ -x /sbin/badblocks ] && [ $(date +\%d) -le 7 ] && /sbin/badblocks /dev/sda
jippie
fonte
Obrigado! Para executar o comando que você sugeriu, é /sbin/badblocks /media/removable_driveno meu caso?
Tim
Não. De acordo com a saída dmesg, você precisa usar sdb: /sbin/badblocks /dev/sdbou sdc. Eu realmente não posso descobrir o que aconteceu / você fez dedmesg
jippie
Você pode encontrar seu /dev/sd{x}disco com o fdisk -lcomando
lucidyan
Lembre-se de que o aplicativo badblocks aceita blocos de início e de fim de trabalhar, caso você queira "suspender / retomar" :)
Aquarius Power
9

Seu sistema de arquivos está danificado. Para volumes NTFS, você deve executar um chkdsksistema Windows, mas é quase impossível recuperar. Às vezes, você pode precisar formatar o disco.

margarida
fonte
Obrigado! Meus outros diretórios estão bem. Não consigo formatar a unidade inteira, apenas recuperar o espaço do diretório em questão?
Tim
1
@ Tim, você tinha que copiar todo o resto, formatar e copiá-los de volta ... eu não sei se é possível remover um único nó ... não familiarizado com a estrutura NTFS
daisy
3
Antes de formatar, tente o badblockscomando no Linux.
jippie
7

Uma solução que funciona para mim é fazer o downgrade da ntfs-3gversão do lançamento de 2014 para o lançamento de 2012. Isso deve resolver o problema de acesso à partição NTFS. A longo prazo, isso não é uma solução, porque, eventualmente, você precisará executar a versão mais recente.

Mais informações aqui

GAD3R
fonte
3
Muito obrigado. Isso resolveu meu problema. Instalei a versão estável mais recente (2016.2.22) da fonte e agora está funcionando perfeitamente. As instruções de instalação que eu usei: tuxera.com/community/open-source-ntfs-3g
Ricardo Pereira
Ok, é bom saber. Então, basicamente, há uma janela entre 2012 e o início de 2016, durante a qual a unidade simplesmente não funcionou.
2

Eu só queria adicionar minha solução a esse segmento para o benefício de outras pessoas - fiz algum trabalho no meu sistema quando minha fonte de alimentação falhou - devo ter reconectado os cabos SATA na ordem errada, como quando os troquei, tudo funcionou novamente - não faço ideia por que o disco de inicialização precisava estar em uma porta SATA específica, de qualquer forma, pode ser a resposta para outra pessoa.

Alan Campbell
fonte
2

Ninguém mencionou o que fazer se as ferramentas do Linux não estiverem funcionando e apenas um Mac, mas não o Windows, estiver disponível.

Pode ser corrigido no OS X com o Paragon NTFS

No meu caso, gparteddisse para ir encontrar um PC com Windows que não estava em lugar nenhum. Mas havia um Mac, para o qual este excelente software está disponível. Instalou a versão de teste, executou a verificação e o reparo - e pronto!

BVengerov
fonte
Eu tive um caso no macos quando esse erro foi produzido pelo uso de sshfs (aparentemente) na cadeia de ferramentas de construção. A instalação do osxfuse & sshfs via brew ajudou.
sdd 02/09
2

Eu só queria compartilhar minha experiência: no FreeBSD 10.3, montei meu disco rígido externo com

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

Dentro do disco rígido, mkdircriei um diretório e depois movi alguns arquivos para ele, é claro com o mvcomando. Finalmente, eu fiz o seguinte comando:

$ sudo sync

Depois montei o disco rígido em uma máquina Linux com o kernel 4.4.0-78-generic. Agora, quando listo o conteúdo do disco rígido, o diretório criado no FreeBSD, chamado Jeff, é mostrado como abaixo:

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

insira a descrição da imagem aqui

Além disso, ao tentar remover o Jeffdiretório, recebo a seguinte mensagem de erro:

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

insira a descrição da imagem aqui

Não consegui me livrar do Jeffdiretório na máquina Linux; portanto, usei a máquina FreeBSD e montei o disco rígido no FreeBSD novamente. Mas os comandos ls, cde rmno FreeBSD geram o mesmo Input/output error. Parece que houve um bug no ntfs-3gpacote FreeBSD .


ATUALIZAR

Movi todos os meus dados do disco rígido externo para uma máquina Linux, é claro que o arquivo corrompido Jeffnão pôde ser movido devido a um erro de E / S. Em seguida, reformatei o disco rígido externo com zeragem do volume e verificação incorreta do setor da seguinte forma:

$ sudo mkfs.ntfs /dev/sdb1

E depois moveu todos os dados de volta para o volume externo. Dessa forma, perdi o arquivo corrompido chamado Jeff, no entanto, meu disco rígido externo está limpo de qualquer erro de E / S.

user3405291
fonte
0

Lancei que, quando tento acessar o disco que ocorre esse erro, ele tentou gravar os últimos arquivos copiados foram gravados no último arquivo e a tentativa de acesso falhou porque o registro já gravado não coincide com os últimos itens copiados, pelo que falhou. A maneira mais saudável de recuperar o disco é remover o último item ou itens copiados no Windows.

cagcak
fonte