O que acontece se eu excluir os itens perdidos + encontrados

38

Quando você cria alguns sistemas de arquivos Linux como o ext3, um diretório 'perdido + encontrado' é criado. De acordo com esses arquivos, serão colocados lá se os arquivos foram danificados por algum tipo de falha no sistema.

O que acontece se esse diretório for removido e o sistema travar. Se a pasta for removida, posso apenas criar um novo diretório com mkdir perdido + encontrado ou existem atributos que só podem ser definidos quando o sistema de arquivos está sendo criado.

Zoredache
fonte

Respostas:

35

O fsck recriará o diretório perdido + encontrado, se estiver ausente.

Na inicialização, a maioria das distribuições executa o fsck se o sistema de arquivos for detectado como não sendo desmontado corretamente. Como o fsck cria o diretório perdido + encontrado, se ele estiver ausente, ele será criado e colocará tudo o que encontrar nesse diretório.

Dave Cheney
fonte
15

Se você não pode ou não deseja executar fsck, pode recriar os lost+founddiretórios com mklost+found:

O mklost + found pré-aloca os blocos de disco para o diretório lost + found, de modo que quando o e2fsck (8) está sendo executado para recuperar um sistema de arquivos, ele não precisa alocar blocos no sistema de arquivos para armazenar um grande número de arquivos não vinculados. Isso garante que o e2fsck não precisará alocar blocos de dados no sistema de arquivos durante a recuperação.

Andrew
fonte
No RHEL 6.4, nem fscktampouco e2fsckonde re-criar este para mim, não importa se o diretório foi montado ou não. cd <root-dir-of-the-mount> && mklost+foundfez isso.
Luis Antolín Cano
7

Um diretório perdido + encontrado preexistente com um tamanho grande o suficiente para conter um grande número de arquivos desvinculados coloca uma carga menor no e2fsck para criar o diretório e aumentá-lo para o tamanho apropriado.

Ele ainda tentará fazê-lo, mas diante de um sistema de arquivos corrompido, pode ser mais arriscado.

Os fsck muito antigos para outros sistemas de arquivos em outras plataformas não foram capazes de criar / perder + encontrado, nem foram capazes de cultivá-lo. Esta é a história da lógica de / lost + encontrada. Mas a lógica atual é simplesmente facilitar o trabalho do e2fsck.

Carlito
fonte
4
Não é que eles não tenham conseguido criar o + achado perdido - é uma má idéia criar arquivos / diretórios em um sistema de arquivos que já está errado. Em vez disso, você apenas pré-constrói um diretório que já é grande o suficiente para armazenar as entradas de diretório de quaisquer inodes que você encontrar em um sistema de arquivos danificado ao tentar limpá-lo.
chris
5

Se você não tiver lost+found, e2fsck(eu não inspecionei o código para outras fsckimplementações) se oferecerá para criá-lo para você. Mas você pode recriar você mesmo, se quiser; não há nada de especial nesse diretório (pelo menos não pela inspeção do código).

Chris Jester-Young
fonte
2
fsck deve recriar perdido + encontrado, se necessário, não?
David Schmitt
2
Obrigado, verifiquei o código do e2fsck e, de fato, ele oferece recriá-lo para você. (Não é garantido que isso tenha sucesso - e é por isso que um achado + perdido pré-criado também é útil.)
21119 Chris Jester-Young
6
@ ChrisJester-Young - Sua resposta está incorreta. lost+foundé um diretório especial. Ele possui blocos de disco pré-alocados para que as ferramentas de recuperação não precisem alocar blocos durante a recuperação. Ferramentas como mklost+foundexistem especificamente porque mkdirnão serão criadas corretamente. Veja linux.die.net/man/8/mklost+found
aggregate1166877
2

O e2fsck recriará os achados e perdidos e também destruirá qualquer arquivo que possa estar no caminho com o mesmo nome para garantir que ele possa ser criado como um diretório.

Observe que muitos sistemas de arquivos Unix mais antigos exigiam que o achado + perdido fosse anexado ao inode número 2 especificamente, daí a necessidade de recriar o sistema de arquivos na maioria dos casos, se o diretório fosse perdido. O e2fsck simplesmente faz uma busca por qualquer inode livre, aparentemente sem precisar especificamente do inode 2, o que torna a recuperação muito mais simples do que nos velhos tempos.

Alex North-Keys
fonte
1

Você pode criar esse diretório usando o mkdir. Ele deve pertencer à raiz, com um grupo de raiz ou roda. Fora isso, não há nada de especial nisso. No caso de uma falta de energia ou um desligamento inadequado, quando o sistema é inicializado, ele deve iniciar automaticamente o fsck. O fsck examinará o sistema e tentará recuperar os arquivos corrompidos que encontrar. Todos os arquivos que aparecerem potencialmente corrompidos serão movidos para lá.

O outro caso de arquivos a serem movidos é se fsck encontrar um arquivo cujo inode pai esteja ausente. Geralmente, esse é o caso se um bloco for corrompido no disco no local específico em que o inode de uma pasta está sendo armazenado. Ele reatribuirá seu inode pai para a pasta perdida + encontrada.

Edit: Não tenho certeza se o último caso irá recriar o diretório. Eu deixaria em paz para estar do lado seguro. Não consigo pensar em nenhum motivo para excluí-lo. Nada de ruim vai acontecer sem ele.

TrueDuality
fonte
11
Tem certeza de que está tudo bem apenas para criar mkdir?
Sim, a alocação de espaço não está vinculada ao inode dos diretórios ou mesmo ao caminho. A alocação de espaço reservado é mais um sinalizador em alguma memória que requer privilégios de root / kernel e chamadas especiais para acessar de que o fsck está ciente, ele apenas utiliza esse espaço copiando arquivos potencialmente corrompidos ou quebrados na memória e criando um arquivo com um inode apontando para a nova memória. As operações de arquivo se comportarão normalmente nesses arquivos, mas quaisquer alterações, como mover ou salvar, extrairão os dados da memória reservada.
precisa saber é o seguinte
1

Além disso, no Debian 6 e no Ubuntu 12 LTS, o cronpacote é enviado, /etc/cron.daily/standardque nota os lost+founddiretórios ausentes nos sistemas de arquivos locais e envia lembretes diários sobre isso por e-mail, recomendando o uso de mklost+found.

No entanto, isso foi removido na época do Debian 7 e Ubuntu 14 LTS, respectivamente, porque havia se tornado obsoleto.

Josip Rodin
fonte