Ergebnis 1 bis 1 von 1

Thema: Defekte SD Karte reparieren

  1. #1
    Junior Avatar von Silbereisen
    Registriert
    Mar 2015
    Beiträge
    94
    Gefällt mir!
    56
    Du gefällst: 197

    Defekte SD Karte reparieren

    Einer meiner Raspberry Pis wollte nicht hochfahren nach einem Reboot. Die SD Karte war leider defekt.
    In diesem Beitrag möchte ich euch zeigen, was ich unternommen habe um meine SD Karte noch zu retten (oder auch nicht).

    fsck
    Das File System Consistency Check Dienstprogramm hat mir bis jetzt immer gute Dienste geleistet, also starte ich damit. Die SD Karte besitzt ein ext4 Dateisystem und ist 16 GB groß.

    Code:
    # fsck /dev/mmcblk0p2
    Und es bricht gleich mal ab...

    Code:
    fsck from util-linux 2.25.2
    e2fsck 1.42.12 (29-Aug-2014)
    fsck.ext4: Filesystem revision too high while trying to open /dev/mmcblk0p2
    The filesystem revision is apparently too high for this version of e2fsck.
    (Or the filesystem superblock is corrupt)
    
    
    The superblock could not be read or does not describe a valid ext2/ext3/ext4
    filesystem.  If the device is valid and it really contains an ext2/ext3/ext4
    filesystem (and not swap or ufs or something else), then the superblock
    is corrupt, and you might try running e2fsck with an alternate superblock:
        e2fsck -b 8193 <device>
     or
        e2fsck -b 32768 <device>
    Der Superblock enthält Informationen über das Dateisystem, wie etwa file system type, size, status, Informationen über andere metadata structures, block counts, inode counts, supported features, maintenance information, und vieles weitere (Quelle). Sprich, der Superblock ist ein verdammt wichtiges Element zur Interpretation des Dateisystems.
    Die Karte ist also so defekt, dass der erste Superblock nicht mehr lesbar ist. Zum Glück hat ein ext4 Dateisystem mehrere Kopien seines Superblocks, also suchen wir die und versuchen es damit mittels fsck erneut. Um die Kopien zu finden machen wir folgendes:

    Code:
    mke2fs -n /dev/mmcblk0p2
    Output:

    Code:
    mke2fs 1.42.12 (29-Aug-2014)
    /dev/mmcblk0p2 contains a ext4 file system
    Proceed anyway? (y,n) y
    Creating filesystem with 3794688 4k blocks and 950272 inodes
    Filesystem UUID: a56c8a06-9907-41a2-86a0-dd601212880b
    Superblock backups stored on blocks:
            32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208
    Wir brauchen auch noch die Block Größe. Der Output zeigt uns eine Größe von 4k, also 4096. Mit einem alternativen Superblock können wir nun erneut fsck starten:

    Code:
    fsck -b 163840 -B 4096 /dev/mmcblk0p2
    wobei -b für den alternativen Superblock steht und -B für die Blockgröße.

    So viel hat das leider nicht gebracht. Es kommen lauter Fragen, nach deren Sichtung ich mich entschieden habe alles automatisch reparieren zu lassen:

    Code:
    fsck from util-linux 2.25.2
    e2fsck 1.42.12 (29-Aug-2014)
    Superblock has an invalid journal (inode 8).
    Clear<y>? yes
    *** ext3 journal has been deleted - filesystem is now ext2 only ***
    
    Resize inode not valid.  Recreate<y>? yes
    Pass 1: Checking inodes, blocks, and sizes
    yInode 1 has EXTENTS_FL flag set on filesystem without extents support.
    Clear<y>? yes
    Root inode has dtime set (probably due to old mke2fs).  Fix<y>? yes
    Quota inode is not in use, but contains data.  Clear<y>? yes
    Quota inode is not in use, but contains data.  Clear<y>? yes
    Inode 5, i_size is 2305843009213693952, should be 0.  Fix<y>? yes
    Inode 5, i_blocks is 131072, should be 0.  Fix<y>? yes
    Reserved inode 6 (<The undelete directory inode>) has invalid mode.  Clear<y>? yes
    Inode 6 has a bad extended attribute block 2064.  Clear<y>? yes
    Inode 6, i_size is 666532745924706320, should be 0.  Fix<y>? yes
    Journal inode is not in use, but contains data.  Clear<y>? yes
    Reserved inode 9 (<Reserved inode 9>) has invalid mode.  Clear<y>? yes
    Reserved inode 10 (<Reserved inode 10>) has invalid mode.  Clear<y>?
    Recreate journal<y>? cancelled!
    /dev/mmcblk0p2: e2fsck canceled.
    
    /dev/mmcblk0p2: ***** FILE SYSTEM WAS MODIFIED *****
    Mittels zusätzlich dem Kommando -y wird alles automatisch mit Ja beantwortet:

    Code:
    fsck -y -b 163840 -B 4096 /dev/mmcblk0p2
    Eine Zeit lang sah das gut aus. Dann kam leider folgendes:

    Code:
    Error storing directory block information (inode=5542, block=0, num=33754683): Memory allocation failed
    
    /dev/mmcblk0p2: ***** FILE SYSTEM WAS MODIFIED *****
    Recreate journal? yes
    
    Creating journal (32768 blocks):  Done.
    
    *** journal has been re-created - filesystem is now ext3 again ***
    e2fsck: aborted
    Nach Recherche im Netz wurde empfohlen folgendes an die Datei /etc/e2fsck.conf mit anzuhängen:

    Code:
    [scratch_files]
    directory = /var/cache/e2fsck
    Die man page beschreibt es so:

    Code:
       [scratch_files]
          This  stanza  controls  when  e2fsck will attempt to use scratch
          files to reduce the need for memory.
    Aus einer Mailingliste zu diesem Thema:
    This will cause e2fsck to store certain data structures which grow large with backup servers that have a vast number of hard-linked files in /var/cache/e2fsck instead of in memory. This will slow down e2fsck by approximately 25%, but for large filesystems where you couldn't otherwise get e2fsck to complete because you're exhausting the 2GB VM per-process limitation for 32-bit systems, it should allow you to run through to completion.
    Man muss den /var/cache/e2fsck Ordner allerdings erst erstellen, bevor man fsck erneut startet:

    Code:
    mkdir -p /var/cache/e2fsck
    Die scratch_files Instanz hat mehrer Optionen, aber eine, die für uns interessant sein könnte: set dirinfo.

    Man kann set dirinfo auf false setzen, wenn eine Vielzahl an unterschiedlichen Dateien und nur wenige Ordner vorhanden sind.

    Auf Stack Exchange gibt es auch eine gute Erklärung, woher der Out of Memory Fehler herkommen könnte.

    Die scratch_files Einstellungen haben bei mir leider nichts gebracht und ich bekomme immer noch den selben Out of Memory Fehler.
    Selbst nach dem Rumspielen der dirinfo Einstellungen oder einer angehängten 200 GB Swap Datei gibt er mir immer den selben Fehler.
    Außerdem ist dmesg voll mit dieser Art an Logs:
    Code:
    [12343.5678] end_request: I/O error, dev mmcblk0, sector 50944
    Badblocks
    Meine letzte Hoffnung war dann Badblocks. Dies ist ein *NIX Dienstprogramm um auf Geräten nach schlechten/kaputten Blöcken zu suchen.
    Das folgende Kommando scannt ein Gerät nach bad blocks. Dies ist allerdings eine destructive write operation, d.h. man verliert alle Daten auf dem Gerät/der SD Karte!

    Code:
    badblocks -o ./badblocks.list -w -s -v -b 4096 -c 16 /dev/mmcblk0
    -o um den Output in die Datei ./badblocks.list zu schreiben
    -w für den Schreibvorgang
    -s um den Prozess anzeigen zu lassen
    -v um verbose zu sein
    -b 4096 für die Blockgröße 4k
    -c 16 um 16 Blöcke auf einmal zu testen (default wären 64)


    Es zeigt mir an, dass ein Haufen Schreibvorgänge fehlgeschlagen ist:

    Code:
    Checking for bad blocks in read-write mode
    From block 0 to 3799039
    Testing with pattern 0xaa: 0.01% done, 1:57 elapsed. (0/292/0 errors)
    ^C
    Interrupted at block 294
    Der Fehler Output meint folgendes:
    Code:
    number of read errors/number of write errors/number of corruption errors
    Also sind die meisten Schreibvorgänge (292 von 294) fehlgeschlagen, was wiederum bedeutet:
    Meine SD Karte ist kaputt und kann nicht mehr repariert werden...

    Dies ist das worst-case Szenario. Ich habe damit allerdings schon einiges an Hardware reparieren können. Viele schwören noch auf Spinrite, welches ich allerdings nicht besitze und somit nicht testen konnte.

    Ich hoffe die Anleitung hilft einigen und ihr habt mehr Glück, falls euch so etwas zustoßen sollte.
    As you've noticed, this land is flush with the mad and wicked

  2. Diesen Mitgliedern gefällt dieser Beitrag:


  3. Werbung - Hier werben?

Ähnliche Themen

  1. Zahlen auf Karte anzeigen
    Von MongoBongo im Forum Daily Talk & Offtopic
    Antworten: 1
    Letzter Beitrag: 10.01.2021, 19:30
  2. Anonyme Lycamobile Karte, keine Anrufe mehr
    Von Grillmeister im Forum Offshore, Steuern & Zahlungen, Anonymes Business
    Antworten: 0
    Letzter Beitrag: 28.01.2019, 16:35

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
SzeneBox.org... im Mittelpunkt der Szene!
© since 2015 szeneBOX.org - All Rights Reserved
Domains: www.szenebox.org