Was passiert, wenn ich Fundsachen lösche?

38

Wenn Sie einige Linux-Dateisysteme wie ext3 erstellen, wird ein 'lost + found'-Verzeichnis erstellt. Nach diesen Dateien werden dort platziert , wenn Dateien aus irgendeiner Art von Systemabsturz beschädigt wurden.

Was passiert, wenn dieses Verzeichnis entfernt wird und das System abstürzt? Wenn der Ordner entfernt wird, kann ich einfach ein neues Verzeichnis mit mkdir lost + found erstellen oder gibt es Attribute, die nur beim Erstellen des Dateisystems festgelegt werden können.

Zoredache
quelle

Antworten:

35

fsck erstellt das Fundbüro neu, wenn es fehlt.

Beim Start führen die meisten Distributionen fsck aus, wenn festgestellt wird, dass das Dateisystem nicht ordnungsgemäß entladen wurde. Wenn fsck das Lost + Found-Verzeichnis erstellt, falls es fehlt, wird es erstellt und alles, was es findet, in dieses Verzeichnis gestellt.

Dave Cheney
quelle
15

Wenn Sie nicht ausführen können oder möchten fsck, können Sie die lost+foundVerzeichnisse wie folgt neu erstellen mklost+found:

mklost + found weist dem Verzeichnis lost + found Festplattenblöcke vorab zu, sodass beim Ausführen von e2fsck (8) zur Wiederherstellung eines Dateisystems keine Blöcke im Dateisystem zugewiesen werden müssen, um eine große Anzahl nicht verknüpfter Dateien zu speichern. Dies stellt sicher, dass e2fsck während der Wiederherstellung keine Datenblöcke im Dateisystem zuordnen muss.

Andrew
quelle
Bei RHEL 6.4 wurde dies auch fscknicht e2fsckneu erstellt, egal ob das Verzeichnis gemountet wurde oder nicht. cd <root-dir-of-the-mount> && mklost+foundgeschafft.
Luis Antolín Cano
7

Ein bereits vorhandenes Fundbüro mit einer Größe, die ausreicht, um eine große Anzahl nicht verknüpfter Dateien aufzunehmen, belastet e2fsck weniger, das Verzeichnis zu erstellen und auf die entsprechende Größe zu vergrößern.

Es wird weiterhin versuchen, dies zu tun, aber angesichts eines beschädigten Dateisystems kann es riskanter sein.

Sehr alte fsck's für andere Dateisysteme auf anderen Plattformen konnten weder erstellen / lost + found, noch konnten sie es erweitern. Dies ist die Geschichte für die Begründung von / lost + found. Das derzeitige Ziel ist es jedoch, die Arbeit von e2fsck zu vereinfachen.

carlito
quelle
4
Es ist nicht so, dass sie das Fundbüro nicht erstellen könnten - es ist eine schlechte Idee, Dateien / Verzeichnisse auf einem Dateisystem zu erstellen, das bereits kaputt ist. Stattdessen erstellen Sie einfach ein Verzeichnis vor, das bereits groß genug ist, um die Verzeichniseinträge der vermischten Inodes in einem fehlerhaften Dateisystem zu speichern, wenn Sie versuchen, es zu bereinigen.
Chris
5

Wenn Sie keine lost+foundhaben e2fsck(ich habe den Code nicht auf andere fsckImplementierungen überprüft ), wird angeboten, ihn für Sie zu erstellen. Sie können es aber auch selbst neu erstellen. An diesem Verzeichnis ist nichts Besonderes (zumindest nicht, wenn man den Code überprüft).

Chris Jester-Young
quelle
2
fsck sollte lost + found bei bedarf neu erstellen, nein?
David Schmitt
2
Danke, ich habe den Code für e2fsck überprüft und in der Tat bietet es an, ihn für Sie neu zu erstellen. (Dies ist jedoch nicht garantiert erfolgreich --- weshalb ein vorgefertigtes Fundbüro auch nützlich ist.) Ordentlich!
Chris Jester-Young
6
@ ChrisJester-Young - Deine Antwort ist falsch. lost+foundist ein spezielles Verzeichnis. Es verfügt über vorab zugewiesene Festplattenblöcke, sodass die Wiederherstellungstools während der Wiederherstellung keine Blöcke zuweisen müssen. Tools wie mklost+foundexistieren speziell, weil mkdirsie nicht richtig erstellt werden. Siehe linux.die.net/man/8/mklost+found
aggregate1166877
2

e2fsck erstellt lost + found neu und zerstört auch alle Dateien, die möglicherweise im Weg sind, um sicherzustellen, dass sie als Verzeichnis erstellt werden können.

Beachten Sie, dass viele ältere Unix-Dateisysteme forderten, dass lost + found speziell an Inode Nummer 2 angehängt wurde. Daher muss das Dateisystem in den meisten Fällen neu erstellt werden, wenn das Verzeichnis verloren ging. e2fsck sucht einfach nach einem freien Inode und benötigt anscheinend nicht speziell Inode 2, was die Wiederherstellung viel einfacher macht als früher.

Alex North-Keys
quelle
1

Sie können dieses Verzeichnis nur mit mkdir erstellen. Es sollte sich im Besitz von root befinden, mit einer Gruppe von root oder wheel. Davon abgesehen hat es nichts Besonderes. Im Falle eines Stromausfalls oder eines nicht ordnungsgemäßen Herunterfahrens beim Systemstart sollte fsck automatisch gestartet werden. fsck durchsucht das System und versucht, alle gefundenen beschädigten Dateien wiederherzustellen. Alle Dateien, die möglicherweise beschädigt sind, werden dorthin verschoben.

Der andere Fall für Dateien, die dorthin verschoben werden sollen, ist, wenn fsck eine Datei findet, deren übergeordneter Inode fehlt. Dies ist normalerweise der Fall, wenn ein Block auf der Festplatte an dem bestimmten Speicherort beschädigt wird, an dem der Inode eines Ordners gespeichert ist. Der übergeordnete Inode wird dem Ordner Fundgegenstand zugewiesen.

Bearbeiten: Ich bin nicht sicher, ob der letzte Fall das Verzeichnis neu erstellen wird. Ich würde es in Ruhe lassen, um auf der sicheren Seite zu sein. Ich kann mir keinen Grund vorstellen, es zu löschen. Nichts Schlimmes wird ohne es passieren.

TrueDuality
quelle
1
Bist du sicher , dass es in Ordnung ist, nur mit zu erstellen mkdir?
Ja, die Speicherplatzzuweisung ist nicht an die Verzeichnisse inode oder sogar den Pfad gebunden. Die reservierte Speicherplatzzuweisung ist mehr oder weniger eine Markierung in einem Speicher, für den Root- / Kernel-Berechtigungen und spezielle Aufrufe für den Zugriff erforderlich sind, die fsck kennt. Sie nutzt diesen Speicherplatz nur, indem potenziell beschädigte oder beschädigte Dateien in diesen Speicher kopiert und eine erstellt werden Datei mit einem Inode, der auf den neuen Speicher zeigt. Dateivorgänge verhalten sich bei diesen Dateien normal, aber alle Änderungen wie Verschieben oder Speichern ziehen die Daten aus dem reservierten Speicher.
TrueDuality
1

Außerdem wurde auf Debian 6 und Ubuntu 12 LTS das cronPaket ausgeliefert, /etc/cron.daily/standarddas fehlende lost+foundVerzeichnisse auf lokalen Dateisystemen bemerkt und täglich per E-Mail daran erinnert und die Verwendung von empfiehlt mklost+found.

Dies wurde jedoch zum Zeitpunkt von Debian 7 bzw. Ubuntu 14 LTS entfernt, da es veraltet war.

Josip Rodin
quelle