Ich habe eine Festplatte, auf der im Journal ein Hardwareproblem aufgetreten zu sein scheint. Dies verhindert, dass das Laufwerk geladen wird. Das Ausführen mount -r -t ext4 /dev/sda5 /mnt/root
führt zu folgendem Kernel-Spew:
[ 1420.671055] ata1.00: exception Emask 0x0 SAct 0x1000000 SErr 0x0 action 0x0
[ 1420.673862] ata1.00: irq_stat 0x40000008
[ 1420.676600] ata1.00: failed command: READ FPDMA QUEUED
[ 1420.679326] ata1.00: cmd 60/40:c0:a8:9d:0a/00:00:08:00:00/40 tag 24 ncq 32768 in
[ 1420.679326] res 41/40:40:e1:9d:0a/00:00:08:00:00/00 Emask 0x409 (media error) <F>
[ 1420.685014] ata1.00: status: { DRDY ERR }
[ 1420.687858] ata1.00: error: { UNC }
[ 1420.761064] ata1.00: configured for UDMA/133
[ 1420.763863] sd 0:0:0:0: >[sda] Unhandled sense code
[ 1420.766653] sd 0:0:0:0: >[sda]
[ 1420.769364] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 1420.772104] sd 0:0:0:0: >[sda]
[ 1420.774780] Sense Key : Medium Error [current] [descriptor]
[ 1420.777491] Descriptor sense data with sense descriptors (in hex):
[ 1420.780249] 72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00
[ 1420.783175] 08 0a 9d e1
[ 1420.785972] sd 0:0:0:0: >[sda]
[ 1420.788730] Add. Sense: Unrecovered read error - auto reallocate failed
[ 1420.791545] sd 0:0:0:0: >[sda] CDB:
[ 1420.794331] Read(10): 28 00 08 0a 9d a8 00 00 40 00
[ 1420.797242] end_request: I/O error, dev sda, sector 134913505
[ 1420.800072] ata1: EH complete
[ 1420.800077] JBD2: Failed to read block at offset 2748
[ 1420.812529] JBD2: recovery failed
[ 1420.815275] EXT4-fs (sda5): error loading journal
Ich verstehe kaum, was dies bedeutet, aber es sieht sicher nach einem Hardwareproblem aus, das das Laden des Journals verhindert. Gibt es überhaupt etwas zu umgehen? Kann das Journal beispielsweise auf einen anderen Versatz verschoben werden, während der Rest des Laufwerks größtenteils intakt bleibt? Ich habe nicht die Absicht, das Laufwerk weiter zu verwenden. Ich möchte es nur mounten, damit ich ein paar wichtige Dateien kopieren kann.
hard-disk
data-recovery
ext4
JSB ձոգչ
quelle
quelle
fsck
das Dateisystem?Antworten:
Um es schreibgeschützt zu mounten, ohne das Journal erneut abzuspielen, damit Sie auf Ihre Dateien zugreifen können (Sie werden wahrscheinlich einige Änderungen verlieren, die noch nicht für die regulären fs übernommen wurden):
mount -o ro,noload
...quelle
Schauen Sie sich die Ausgabe von an
smartctl -a /dev/sda
. Wenn es sich nicht um ein Kabelproblem handelt, stirbt die Festplatte möglicherweise ab. Wenn Sie keine aktuelle Sicherung haben, sollten Sie versuchen, den Inhalt des Blockgeräts (ohne Mounten) mit dd_rescue oder dd mit den entsprechenden Optionen zu kopieren.Danach können Sie es versuchen
hdparm --write-sector
(immer lustig diese "SEHR GEFÄHRLICHEN" Optionen ...).Eine andere Möglichkeit besteht darin, ein DM-Gerät zu erstellen, das die defekten Sektoren umgeht. Das stellt ihren Inhalt natürlich nicht wieder her. Sie müssen den SDA-Offset (134913505) in einen SDA5-Offset konvertieren (ermitteln Sie die Nummer des ersten SDA5-Sektors und subtrahieren Sie ihn). Nehmen wir an, der sda5-Offset ist 12345. Sie erstellen ein Blockgerät, dessen Sektor 12345 nicht sda5 zugeordnet ist, sondern an einer anderen Stelle (z. B. Schleifengerät). Die Gerätedefinition (für dmsetup create) sieht folgendermaßen aus:
Sie werden nicht so viel Glück haben, dass es nur einen defekten Sektor gibt. Sie können so viele zuordnen, wie Sie möchten (was dazu führt, dass das DM-Gerät Nullen für diese Sektoren liefert, aber beschreibbar ist), aber die Berechnung der Offsets in loop0 kann Spaß machen. Eine andere Möglichkeit wäre, ein virtuelles Gerät derselben Größe für die Neuzuordnung zu verwenden und entweder Thin Provisioning oder einen Snapshot (mit kleiner Blockgröße, z. B. 1 Sektor) eines Null-Zielgeräts zu verwenden.
Bearbeiten 1
Das Loop-Gerät sollte natürlich nicht auf eine Datei auf derselben Festplatte (sda) verweisen.
quelle
--write-sector
ist FAR von „gefährlich“. In der Tat, das ist eigentlich die ist ideal zu verwenden Sie die Option , wenn bestimmte korrupte einzelne Sektoren verhindern , dass Sie einen bekommt kontinuierliche rohe Sektorbild (dd
würde aus der Patsche helfen mit „Device I / O - Fehler“, einige hdds erfordern sogar Stromzyklus der Maschine ( !) um wieder vom Betriebssystem erkannt zu werden). Doch Sie müssen über Shell-Scripting wissen , wenn Sie verwenden möchten--write-sector
für den Sektor Bereiche .Sie können im Wiederherstellungsmodus booten, in dem der FS schreibgeschützt bereitgestellt wird, und Ihre Daten kopieren.
quelle