Que se passe-t-il si j'efface lost + found?

38

Lorsque vous créez des systèmes de fichiers Linux tels que ext3, un répertoire 'lost + found' est créé. En fonction de cela, les fichiers seront placés là si des fichiers ont été endommagés à la suite d'une panne système.

Que se passe-t-il si ce répertoire est supprimé et que le système se bloque? Si le dossier est supprimé, puis-je simplement créer un nouveau répertoire avec mkdir lost + found ou existe-t-il des attributs qui ne peuvent être définis que lors de la création du système de fichiers?

Zoredache
la source

Réponses:

35

fsck recréera le répertoire lost + found s'il est manquant.

Au démarrage, la plupart des distributions exécutent fsck si le système de fichiers est détecté comme n'étant pas démonté proprement. Lorsque fsck crée le répertoire lost + found s'il est manquant, il le crée ensuite et place tout ce qu'il trouve dans ce répertoire.

Dave Cheney
la source
15

Si vous ne pouvez pas ou ne voulez pas exécuter fsck, vous pouvez recréer les lost+foundrépertoires avec mklost+found:

mklost + found pré-alloue des blocs de disque au répertoire lost + found afin que, lors de l'exécution de e2fsck (8) pour récupérer un système de fichiers, il ne soit pas nécessaire d'allouer des blocs dans le système de fichiers pour stocker un grand nombre de fichiers non liés. Cela garantit que e2fsck n'aura pas à allouer de blocs de données dans le système de fichiers lors de la récupération.

Andrew
la source
Sous RHEL 6.4, ni fsckni e2fsckoù recréer cela pour moi, peu importe si le répertoire a été monté ou non. cd <root-dir-of-the-mount> && mklost+foundl'a fait.
Luis Antolín Cano
7

Un répertoire lost + found préexistant avec une taille suffisante pour contenir un grand nombre de fichiers non liés alourdit la tâche de e2fsck pour créer le répertoire et l’agrandir à la taille appropriée.

Il tentera toujours de le faire, mais face à un système de fichiers corrompu, cela peut être plus risqué.

Les très anciens fichiers fsck pour d'autres systèmes de fichiers sur d'autres plateformes ne pouvaient pas créer / ont perdu + ont été trouvés, ni ont pu être développés. Ceci est l'historique de la justification de / perdu + trouvé. Mais la raison actuelle est simplement de faciliter le travail de e2fsck.

carlito
la source
4
Ce n'est pas qu'ils ne pouvaient pas créer le + perdu - c'est que c'est une mauvaise idée de créer des fichiers / répertoires sur un système de fichiers déjà foiré. Au lieu de cela, vous ne faites que pré-construire un répertoire suffisamment grand pour stocker les entrées de répertoire de tous les inodes encombrés que vous trouverez dans un système de fichiers vissé lorsque vous essayez de le nettoyer.
chris
5

Si vous n'avez pas lost+found, e2fsck(je n'ai pas inspecté le code pour d'autres fsckimplémentations) vous proposera de le créer pour vous. Mais vous pouvez le recréer vous-même si vous le souhaitez. il n'y a rien de spécial à propos de ce répertoire (du moins pas d'inspecter le code).

Chris Jester-Young
la source
2
fsck devrait recréer lost + found si nécessaire, non?
David Schmitt
2
Merci, j'ai vérifié le code pour e2fsck et effectivement il propose de le recréer pour vous. (Ce n'est pas garanti pour réussir cependant --- c'est pourquoi un pré-créé lost + found est également utile.) Neat!
Chris Jester-Young
6
@ ChrisJester-Young - Votre réponse est incorrecte. lost+foundest un répertoire spécial. Il comporte des blocs de disque pré-alloués, de sorte que les outils de récupération n'ont pas besoin d'allouer de blocs pendant la récupération. Des outils tels mklost+foundqu'existent spécifiquement parce mkdirqu'ils ne le créeront pas correctement. Voir linux.die.net/man/8/mklost+found
aggregate1166877
2

e2fsck va recréer lost + found, et va également détruire tout fichier qui pourrait être gênant avec le même nom pour être sûr qu'il puisse le créer en tant que répertoire.

Notez que beaucoup de systèmes de fichiers Unix plus anciens exigeaient que lost + found soit spécifiquement attaché à l'inode numéro 2, d'où la nécessité de recréer le système de fichiers dans la plupart des cas si le répertoire était perdu. e2fsck effectue simplement une recherche sur n'importe quel inode libre, ne nécessitant apparemment pas l'inode 2, ce qui rend la récupération beaucoup plus simple qu'auparavant.

Alex North-Keys
la source
1

Vous pouvez créer ce répertoire en utilisant simplement mkdir. Il doit appartenir à root, avec un groupe de root ou de wheel. À part cela, il n'y a rien de particulièrement spécial à ce sujet. En cas de panne de courant ou d’arrêt incorrect lors du démarrage du système, il convient de lancer automatiquement fsck. fsck passera par le système et tentera de récupérer tous les fichiers corrompus trouvés. Tous les fichiers potentiellement corrompus qui seront détectés y seront déplacés.

L'autre cas de déplacement de fichiers existe si fsck trouve un fichier dont l'inode parent est manquant. C'est généralement le cas si un bloc est corrompu sur le disque à l'emplacement spécifique où l'inode d'un dossier est en cours de stockage. Il va réaffecter leur inode parent pour être le dossier lost + found.

Edit: Je ne sais pas si ce dernier cas recréera le répertoire. Je le laisserais seul pour être du bon côté. Je ne vois aucune raison de le supprimer. Rien de grave ne se passera sans elle cependant.

TrueDuality
la source
1
Êtes-vous sûr de pouvoir créer avec mkdir?
Oui, l'allocation d'espace n'est pas liée aux répertoires inode ou même au chemin. L’allocation d’espace réservé est plus un indicateur sur une mémoire nécessitant des privilèges racine / noyau et des appels spéciaux d’accès dont fsck a connaissance, elle utilise simplement cet espace en copiant dans cette mémoire des fichiers potentiellement corrompus ou cassés et en créant un fichier. fichier avec un inode pointant vers la nouvelle mémoire. Les opérations de fichier se comporteront normalement sur ces fichiers, mais toute modification, telle que le déplacement ou l'enregistrement, extraira les données de la mémoire réservée.
TrueDuality
1

De plus, sur Debian 6 et Ubuntu 12 LTS, le cronpaquetage livré /etc/cron.daily/standardindique les lost+foundrépertoires manquants sur les systèmes de fichiers locaux et envoie des rappels quotidiens à ce sujet par courrier électronique, en recommandant l'utilisation de mklost+found.

Cependant, cela a été supprimé au moment de Debian 7 et Ubuntu 14 LTS, respectivement, car il était devenu obsolète.

Josip Rodin
la source