WARNUNG: Im Dateisystem liegt ein Fehler vor. Übergeordneter Knoten von Knoten 47322B43 konnte nicht repariert werden. Übergeordneter Verzeichniseintrag konnte nicht gefunden werden.

WARNUNG: Im Dateisystem liegt ein Fehler vor. Übergeordneter Knoten von Knoten 47322B43 konnte nicht repariert werden. Übergeordneter Verzeichniseintrag konnte nicht gefunden werden.

WARNUNG: Im Dateisystem liegt ein Fehler vor. Übergeordnetes Element von Knoten 47322B43 konnte nicht repariert werden. Übergeordnetes Verzeichniseintrag konnte nicht gefunden werden.

Ich habe das Betriebssystem Ubuntu 22.04.2 LTS (Jammy Jellyfish) installiert. Beim Booten erhalte ich immer den folgenden Fehler. Ich habe es versucht und fsck -f /dev/sda2bekomme immer noch diesen Fehler. Bitte geben Sie mir Tipps, wie ich mein System reparieren kann. Bildbeschreibung hier eingeben

Antwort1

Lassen Sie uns zunächst Inodes in Laiensprache verstehen

Indem wir ... Das Dateisystem unserer Wahl für diese Demonstration istEXT2weil es keineTagebuch schreibenMechanismus und kann daher zum Zwecke der Demonstration einiger Inode-bezogener Probleme leicht beschädigt werden.

Lassen Sie uns eine „Disk“-Image-Datei erstellen:

$ truncate -s 10M myfilesystem

Und formatieren Sie es

$ mkfs.ext2 myfilesystem
mke2fs 1.46.5 (30-Dec-2021)
Discarding device blocks: done
Creating filesystem with 2560 4k blocks and 2560 inodes

Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done

Beachten Sie die Anzahl der Inodes ... and 2560 inodes... Dies ist die permanente Maximalzahl für dieses Dateisystem auf dieser Festplattenpartition ... Sie können so viele Dateien erstellen (alle Arten einschließlich Verzeichnisse) als diese Zahl(abzüglich der speziellen Inodes des Dateisystems), aber nicht mehr als diese Zahl auf diesem Dateisystem.

Lassen Sie uns einen Einhängepunkt erstellen und dieses Dateisystem einhängen:

$ mkdir mymount
$
$ mount myfilesystem mymount/
$
$ ls -la mymount/
total 24
drwxr-xr-x 3 root   root    4096 May  8 14:24 .
drwxr-xr-x 3 ubuntu ubuntu  4096 May  8 14:29 ..
drwx------ 2 root   root   16384 May  8 14:24 lost+found
$
$ df -ih mymount/
Filesystem     Inodes IUsed IFree IUse% Mounted on
/dev/loop1       2.5K    11  2.5K    1% /home/ubuntu/test/mymount

Beachten Sie die Anzahl der verwendeten Inodes 11... Diese werden als spezielle Inodes bezeichnet und standardmäßig für spezielle, vordefinierte Zwecke des Dateisystems reserviert/verwendet ... Lassen Sie uns noch ein paar davon verwenden:

$ touch mymount/file{1..2}
$
$ ls -lai mymount/
total 24
   2 drwxr-xr-x 3 root   root    4096 May  8 14:33 .
2552 drwxr-xr-x 3 ubuntu ubuntu  4096 May  8 14:29 ..
  12 -rw-r--r-- 1 root   root       0 May  8 14:33 file1
  13 -rw-r--r-- 1 root   root       0 May  8 14:33 file2
  11 drwx------ 2 root   root   16384 May  8 14:24 lost+found
$
$ df -ih mymount/
Filesystem     Inodes IUsed IFree IUse% Mounted on
/dev/loop1       2.5K    13  2.5K    1% /home/ubuntu/test/mymount

Wir haben zwei Dateien erstellt und zwei weitere Inodes verwendet und sind zu folgendem Ergebnis gekommen 11 + 2 = 13:

Lasst uns einen davon befreien:

$ rm mymount/file1
$
$ df -ih mymount/
Filesystem     Inodes IUsed IFree IUse% Mounted on
/dev/loop1       2.5K    12  2.5K    1% /home/ubuntu/test/mymount

Das sind normal 13 - 1 = 12verwendete Inodes und der, den wir gerade freigegeben haben, wird bei Bedarf wiederverwendet … Inodes sind recycelbar.

Das ist unter normalen Umständen so ... Aber was, wenn wirin einer anderen SchaleKontinuierliches Öffnen und Verwenden einer Datei:

$ tail -f mymount/file2
-

Gehen Sie dann zurück zu unserer ursprünglichen Shell, um diese Datei zu löschen, und hängen Sie das Dateisystem anschließend sofort ungeordnet aus:

$ rm mymount/file2 && umount -l myfilesystem
$
$ ls -lai mymount/
total 8
6425 drwxr-xr-x 2 root   root   4096 May  8 14:29 .
2552 drwxr-xr-x 3 ubuntu ubuntu 4096 May  8 14:29 ..

Mounten Sie es dann erneut:

$ mount myfilesystem mymount/
$
$ ls -lai mymount/
total 24
   2 drwxr-xr-x 3 root   root    4096 May  8 14:44 .
2552 drwxr-xr-x 3 ubuntu ubuntu  4096 May  8 14:29 ..
  11 drwx------ 2 root   root   16384 May  8 14:24 lost+found
$
$ df -ih mymount/
Filesystem     Inodes IUsed IFree IUse% Mounted on
/dev/loop1       2.5K    12  2.5K    1% /home/ubuntu/test/mymount

Beachten Sie, dass die Datei zwar tatsächlich gelöscht wurde, ihr Inode jedoch nicht freigegeben wird. Dabei handelt es sich um eine „Simulation“ einer Beschädigung des Dateisystems. Lassen Sie uns die Datei aushängen und überprüfen:

$ umount myfilesystem
$
$ e2fsck myfilesystem
e2fsck 1.46.5 (30-Dec-2021)
myfilesystem was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Deleted inode 13 has zero dtime.  Fix<y>? yes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Inode bitmap differences:  -13
Fix<y>? yes
Free inodes count wrong for group #0 (2548, counted=2549).
Fix<y>? yes

myfilesystem: ***** FILE SYSTEM WAS MODIFIED *****
myfilesystem: 11/2560 files (0.0% non-contiguous), 170/2560 blocks

Schließen wir die andere Shell, mounten wir sie erneut und überprüfen:

$ mount myfilesystem mymount/
$
$ df -ih mymount/
Filesystem     Inodes IUsed IFree IUse% Mounted on
/dev/loop1       2.5K    11  2.5K    1% /home/ubuntu/test/mymount

Jetzt kennen Sie die Grundlagen der Verwendung von Inodes ... Und einige der Dinge, die bei ihnen schiefgehen können, um eine Dateisystemprüfung auszulösen, und wie ... Dasselbe kann beim Ein- und Ausstecken einer Festplatte passieren oder wenn das System plötzlich die Stromversorgung verliert, wenn Dateien (insbesondere Systemdateien) werden ständig von Systemprozessen erstellt/gelöscht/aktualisiert ... Bei Verzeichnissen ist dies etwas weniger der Fall, da es normalerweise nicht möglich ist, ein Verzeichnis durch einen Prozess offen zu halten, da sie keinen Handle wie normale Dateien haben. Bei Verzeichnis-Inodes kann es jedoch zu Beschädigungen kommen, wenn das oben genannte passiert, während ihre Metadaten aktualisiert/geändert werden. Außerdem kann es, obwohl selten, passieren, wenn das Dateisystem aufgrund eines defekten/sich verschlechternden Festplattenlaufwerks den Zugriff auf bestimmte Blöcke verliert.

Die meisten Probleme mit Inodes können jedoch problemlos automatisch durch Dienstprogramme zur Dateisystemprüfung behoben werden.

Zurück zu Ihrer Frage

Es kommt jedoch vor, dass diese Dienstprogramme manchmal den Pfad verlieren und nicht wissen, wie sie ein Problem mit Inodes beheben können, insbesondere bei Verzeichnissen, die keine gültigen, lesbaren Metadaten haben, denn zu den Methoden, die diese Tools zum Beheben von Beschädigungen bei Inodes verwenden, gehören eigentlich Metadaten, die den Inhalt, die übergeordneten Verzeichnisse usw. identifizieren.

Der Screenshot, den Sie beigefügt haben, macht es mir etwas schwer, Text zu lesen und zu kopieren ... Was Sie jedoch zu haben scheinen, ist ein Inode 4732284(unter/usr/src/linux ... /net/ ...), das im Dateisystem als Verzeichnis gekennzeichnet ist, aber nicht über die üblichen Metadaten verfügt, die seine Beziehung zu seinen übergeordneten Verzeichnissen beschreiben, wodurch es verwaist wird und nicht den üblichen Speicherplatz von einem Block belegt, z. B. 4ksondern 0Speicherplatz belegt und daher NULL... Während in den meisten Dateisystemen Dateien die Größe null/0 haben dürfen, ist dies bei Verzeichnissen nicht der Fall. Weitere Informationen finden Sie unterdieser BeitragUnddieser Beitragfür mehr Details.

Diese Art von Problem,wenn der Wert nicht dramatisch ansteigt, was auf ein defektes Laufwerk/schlechte und beschädigte Blöcke hinweisen könnte, ist kein großes Problem und sollte harmlos sein ... Um es auf einfache Weise loszuwerden, müssen Sie es nur verwenden ... d. h. eine Datei in diesem Verzeichnis erstellen und sie dann entfernen, um ihre Metadaten zu aktualisieren, sodass sie wieder die volle Blockgröße des Dateisystems verwendet und einigermaßen normal aussieht ... Dieses Verzeichnis sollte leicht zu erkennen sein, da es seine 0Größe in der Ausgabe von zB anzeigt ls -laund nachdem Sie es verwendet haben, sollte es die übliche Blockgröße anzeigen, zB 4kwie andere Verzeichnisse im selben Dateisystem ... Wenn das nicht ausreicht, um es wieder in den Normalzustand zu versetzen, rütteln Sie weiter daran, indem Sie zB seinen Eigentümer festlegen chown root:rootoder zB seine Berechtigungen ändern, chmod 755bis ls -laeine andere Größe als die 0für dieses Verzeichnis angezeigt wird.

Hängen Sie dann das enthaltene Dateisystem aus und führen Sie das Dienstprogramm zur Dateisystemprüfung erneut aus. Diesmal sollte das Problem behoben sein.

Das sollte funktionieren, aber wenn es nicht funktioniert, haben Sie zwei Alternativen ...Entwedermit einem Dateisystem-Debugger wiedebugfsum den Eintrag dieses Inodes manuell zu reparieren/löschenoderAlternativ können Sie Ihre Daten sichern und die Festplattenpartition neu formatieren.

Technische Referenzen:

verwandte Informationen