Ich habe einen Gameserver auf meinem Ubuntu Server 16.04 und kann ihn aus heiterem Himmel nicht starten / neu starten, da folgende Datei vorliegt:
-????????? ? ? ? ? ? proceduralmap.3000.1499245715.149.sav
Dies scheint die einzige Datei in der fs mit dieser Situation zu sein. Jetzt ist der Server ein dedizierter Server, der von einem Hosting-Anbieter erworben wurde. Das Laufwerk, auf dem sich die Datei befindet, ist eine SCSI-Festplatte ( /dev/sdb1
).
Die df -hT
Ausgabe:
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 3.7G 0 3.7G 0% /dev
tmpfs tmpfs 744M 81M 663M 11% /run
/dev/sda4 ext4 21G 16G 4.7G 77% /
tmpfs tmpfs 3.7G 24K 3.7G 1% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs tmpfs 3.7G 0 3.7G 0% /sys/fs/cgroup
/dev/sda3 ext4 946M 143M 739M 17% /boot
cgmfs tmpfs 100K 0 100K 0% /run/cgmanager/fs
/dev/sdb1 ext2 985G 265G 670G 29% /storage
tmpfs tmpfs 744M 0 744M 0% /run/user/1011
Was wäre die geeignete Methode zum Reparieren / Entfernen dieser Datei? Ich würde es vorziehen, es zu reparieren, aber das Entfernen wird ebenso gut tun. Ich bin schon gelaufen:
debugfs -w /dev/sdb1
In dem ich geschrieben habe:
clri home/steam/serverfiles/server/rustserver/proceduralmap.3000.1499245715.149.sav
Ich verstehe, was ich im Web finden konnte, dass ich e2fsck ausführen müsste, aber ich verstehe, dass ich das Laufwerk zuerst aushängen müsste. Ich würde das, wenn möglich, nicht nur für diese eine Datei tun wollen.
Vielen Dank!
fsck -f
?debugfs -w
ist viel wahrscheinlicher ein Problem zu erstellen alsfsck -f
/dev/sdb1 is in use.
. Irgendwelche Ideen?Antworten:
Was ist mit der Fehlermeldung "Struktur muss gelöscht werden"?
Der Fehler "Struktur muss gelöscht werden" ist der Fehler, den Dateisysteme (insbesondere ext4 und xfs) zurückgeben, wenn sie ein Problem mit der Beschädigung des Dateisystems festgestellt haben. Unglücklicherweise ist die einzige sichere Maßnahme, um die Beschädigung zu beheben, die Bereitstellung der Festplatte aufzuheben und sie
e2fsck
auf dem Dateisystem auszuführen. (Technisch gesehen benötigen Sie diese-f
Option nicht, da das Dateisystem bereits Probleme erkannt und das Dateisystem als fehlerhaft markiert hat. Wenn Sie es also ausführene2fsck
, wird ein vollständiger Scan durchgeführt, um diese Probleme zu beheben. Dies ist nicht erforderlich die-f
Option, einen Scheck zu erzwingen.)Berichte über Dateisystembeschädigungen
Sie sollten auch in der Lage sein, die Berichte über Dateisystembeschädigungen in den Kernel-Protokollen anzuzeigen. (z. B. durch Ausführen
dmesg
oder Anzeigen von/var/log/kern.log
oder überall dort, wo Ihrsyslog
oderjournald
konfiguriert wurde, um Kernelnachrichten zu protokollieren. Es sollten Nachrichten angezeigt werden, die beginnenEXT4-fs error (device sdXX)
. Zum Beispiel:Sie können Hinweise auf Fehler auch
dumpe2fs -h
im Dateisystem anzeigen . Interessensgebiete:Dies bedeutet, dass der Kernel 25 Mal Dateisysteminkonsistenzen gefunden hat.
Der erste Fehler wurde am 1. Januar 2015 zum angegebenen Zeitpunkt festgestellt. Anhand der Fehlerfunktion und der Zeilennummer können Sie genau feststellen, an welchem Teil des Kernel-Codes das Problem aufgetreten ist. Die Inode-Nr. Gibt an, welcher Inode an der Inkonsistenz des Dateisystems beteiligt war.
Hier erfahren Sie, wann der Kernel zuletzt eine Dateisysteminkonsistenz festgestellt hat. Die großen Deltas zwischen den beiden Zeiten bedeuten, dass jemand seine Kernelnachrichten nicht gescannt hat. Das liegt daran, dass ext4 alle 24 Stunden Warnmeldungen protokolliert, dass es ein Dateisystem mit Beschädigungen gibt. Diese Kernelmeldungen sehen dann folgendermaßen aus:
Hinweis: Die Zeit in den Kernelnachrichten ist die Anzahl der Sekunden seit dem 1. Januar 1970, Mitternacht UTC. Sie können dies mit dem Befehl date in eine besser lesbare Zeit umwandeln. Beispiel:
Was tun, wenn Sie feststellen, dass Ihr Dateisystem beschädigt ist?
Sie möchten wirklich nicht mit Inkonsistenzen im Dateisystem arbeiten, da dies zu mehr Datenverlust führen kann. Es ist wirklich eine gute Idee, auf diese Berichte zuzugreifen, gegebenenfalls Ausfallzeiten zu planen und sie so schnell wie möglich zu beheben.
Warum habe
e2fsck
ich mich beschwert, dass das Gerät verwendet wurde, nachdem ich es abmontiert habe?Zum Schluss als Antwort auf Ihre Frage: "Ich bin
fsck
nach dem Aushängen gelaufen und erhalte folgende Fehlermeldung:/dev/sdb1 is in use.
Irgendwelche Ideen?" Dies liegt wahrscheinlich daran, dass Sie einen oder mehrere Prozesse in einem alternativen Mount-Namespace haben und diese Prozesse immer noch/dev/sdb1
in diesem Mount- Namespace gemountet sind. Vielleicht möchten Sie versuchen:Wenn Sie Prozesse finden, die in einem alternativen Mount-Namespace ausgeführt werden, müssen Sie diese Prozesse am einfachsten beenden und neu starten. (Es handelt sich wahrscheinlich um Daemon-Prozesse.) Wenn der letzte Prozess, der einen Mount-Namespace verwendet, beendet wird, verschwindet der Mount-Namespace. Und sobald es keine Mount-Namespaces mehr gibt, die
/dev/sdb1
gemountet wurden, wird das Mounten wirklich aufgehoben.Die Art, darüber nachzudenken, ist, dass man sich so
umount
verhältunlink
. Wenn Sie eine Datei mit mehreren Hardlinks haben, wird der Speicherplatz nur freigegeben, wenn der letzte Hardlink gelöscht wird. Wenn Sie mehrere Namespaces aktiv haben, fungiert jeder Namespace als "harte Verbindung" zum fraglichen Mount. Das bloße Abmelden des Dateisystems im Standard-Mount-Namespace hilft also nicht, wenn ein Prozess den Standard-Mount-Namespace gespalten hat und sich selbst und möglicherweise einige untergeordnete Prozesse in dieser Kopie des übergeordneten Mount-Namespace ausführen.quelle