Eu tenho um sistema bem básico rodando o Ubuntu 16.04, 1 HDD, rodando algumas partições:
sda1 - EXT4 - 100G - /
sda2 - EXT4 - 723.5G - /home
sda3 - NTFS - 100G - (windows)
sda5 - SWAP - 8G
Sempre que eu tento acessar um dos 3-4 arquivos em um diretório específico na partição /home
(a pasta específica que causa os problemas é /home/path/to/broken/folder
), a partição /home
terá erro e remontará somente leitura . dmesg
mostra os seguintes erros:
EXT4-fs error (device sda2): ext4_ext_check_inode:497: inode #1415: comm rm: pblk 0 bad header/extent: invalid magic - magic 0, entries 0, max 0(0), depth 0(0)
Aborting journal on device sda2-8.
EXT4-fs (sda2): Remounting filesystem read-only
EXT4-fs error (device sda2): ext4_ext_check_inode:497: inode #1417: comm rm: pblk 0 bad header/extent: invalid magic - magic 0, entries 0, max 0(0), depth 0(0)
EXT4-fs error (device sda2): ext4_ext_check_inode:497: inode #1416: comm rm: pblk 0 bad header/extent: invalid magic - magic 0, entries 0, max 0(0), depth 0(0)
Então eu entendo o que está acontecendo ... algum bloco ruim está causando um erro e está remontando a unidade somente leitura para evitar mais corrupção. Eu sei que são esses arquivos específicos porque eu posso desfazer o erro por
- Fazendo login como root
- executando
sync
- Parando
lightdm
(e todos os subprocessos)
- Pare todos os arquivos abertos restantes no
/home
encontrando-os com lsof | grep /home
- Desmontando
/home
- Executando
fsck /home
(corrigindo os erros)
- Remontar
/home
Tudo está bem novamente, leia e escreva, até que eu tente acessar os mesmos arquivos novamente , então todo esse processo é repetido para corrigi-lo novamente.
A maneira que eu tentei acessar os arquivos foi rodando ls /home/path/to/broken/folder
e rm -r /home/path/to/broken/folder
, então parece que qualquer tipo de operação de HDD naquela parte da unidade comete erros e a coloca em somente leitura novamente. / p>
Eu sinceramente não me importo com os arquivos, eu só quero que eles desapareçam. Estou disposto a remover toda a pasta /home/path/to/broken/folder
, mas toda vez que eu tentar isso, ela falha e é liberada para leitura.
Como posso corrigir isso sem reformatar a unidade /home
inteira?
EDIT 1:
Eu corri badblocks -v /dev/sda2
no meu disco rígido, mas ele ficou limpo, sem blocos ruins. Qualquer ajuda ainda seria muito apreciada.
EDIT 2:
Ainda procurando uma solução para isso. Algumas informações que podem ser úteis abaixo:
$ debugfs -R 'stat <1415>' /dev/sda2
debugfs 1.42.13 (17-May-2015)
Inode: 1415 Type: regular Mode: 0644 Flags: 0x80000
Generation: 0 Version: 0x00000000
User: 0 Group: 0 Size: 0
File ACL: 0 Directory ACL: 0
Links: 1 Blockcount: 0
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x5639ad86 -- Wed Nov 4 01:02:30 2015
atime: 0x5639ad86 -- Wed Nov 4 01:02:30 2015
mtime: 0x5639ad86 -- Wed Nov 4 01:02:30 2015
Size of extra inode fields: 0
EXTENTS:
Agora eu olhei para isso e comparei com o que eu suspeito ser um inode não corrompido:
$ debugfs -R 'stat <1410>' /dev/sda2
debugfs 1.42.13 (17-May-2015)
Inode: 1410 Type: regular Mode: 0644 Flags: 0x80000
Generation: 0 Version: 0x00000000
User: 0 Group: 0 Size: 996
File ACL: 0 Directory ACL: 0
Links: 1 Blockcount: 0
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x5639ad31 -- Wed Nov 4 01:01:05 2015
atime: 0x5639ad31 -- Wed Nov 4 01:01:05 2015
mtime: 0x5639ad31 -- Wed Nov 4 01:01:05 2015
Size of extra inode fields: 0
EXTENTS:
(0):46679378
Eu tenho ousado o que acredito serem as principais diferenças aqui. Eu olhei para outros inodes não corrompidos e eles exibem algo semelhante ao 1410
que tem um tamanho diferente de zero e uma extensão.
Cabeçalho / extensão ruim faz sentido aqui ... não tem limites ... como faço para corrigir isso?
Eu realmente sinto que entreguei essa pergunta para alguém mais inteligente do que eu em uma bandeja de prata, eu simplesmente não sei qual é a refeição (resposta)!