Änderungen an der SD-Karte werden nach dem erneuten Mounten rückgängig gemacht (z. B. werden gelöschte Dateien erneut angezeigt)

7

Nachdem ich ein beschädigtes Dateisystem auf meiner SD-Karte habe (wahrscheinlich aufgrund einer unzureichenden Stromversorgung), möchte ich ein neues Dateisystem erstellen. ( e2fsckschlägt fehl, loggen Sie sich unten ein.)

Alle dateibezogenen Änderungen auf der SD-Karte werden jedoch auf magische Weise rückgängig gemacht!

  • Erstes Beispiel: Wenn ich die SD-Karte einbinde, einige Dateien lösche, verschwinden die Dateien. Wenn ich es aushänge und wieder einbinde, sind die Dateien wieder da! Wenn ich den Inhalt einer Datei ändere, ist der ursprüngliche Inhalt nach dem erneuten Mounten wieder verfügbar.
  • Zweites Beispiel: Wenn ich eine neue Partitionstabelle mit erstelle fdisk, ist die alte Partitionstabelle sofort wieder vorhanden. (Protokoll unten.)
  • Drittes Beispiel: Während ich renne dd if=/dev/zero of=/dev/mmcblk0 bs=1M, fdiskvernünftigerweise gesagt Disk /dev/mmcblk0 doesn't contain a valid partition table. Als dddies erledigt war, war die alte Partitionstabelle wieder da.

Ich habe die SD-Karte mit dem kleinen Schalter nicht physisch gesperrt. Ich erhalte keine schreibgeschützten Fehler. Tatsächlich bekomme ich überhaupt keine Fehler! dmesgmeldet nichts außer dass ich ein Dateisystem mit Fehlern einbinde.

Das Problem trat auch beim Ausführen einer Xubuntu-Live-CD (12.10) auf. Leider habe ich momentan keinen Zugriff auf andere Computer und / oder SD-Kartenleser.

Ist das ein Problem meines Computers, meiner SD-Karte oder fehlt mir ständig etwas? Irgendwelche Vorschläge, was ich versuchen könnte?


e2fsck schlägt fehl:

$ sudo e2fsck /dev/mmcblk0p2 
e2fsck 1.42.5 (29-Jul-2012)
/dev/mmcblk0p2: recovering journal
Superblock needs_recovery flag is clear, but journal has data.
Run journal anyway<y>? yes
e2fsck: unable to set superblock flags on /dev/mmcblk0p2


/dev/mmcblk0p2: ********** WARNING: Filesystem still has errors **********

Hier ist das Protokoll, das zeigt, dass fdiskes keine Auswirkungen hat:

$ sudo fdisk /dev/mmcblk0

Command (m for help): p

Disk /dev/mmcblk0: 31.5 GB, 31460425728 bytes
4 heads, 16 sectors/track, 960096 cylinders, total 61446144 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00017b69

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            8192      122879       57344    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          122880    61446143    30661632   83  Linux

Command (m for help): d
Partition number (1-4): 1

Command (m for help): d
Selected partition 2

Command (m for help): p

Disk /dev/mmcblk0: 31.5 GB, 31460425728 bytes
4 heads, 16 sectors/track, 960096 cylinders, total 61446144 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00017b69

        Device Boot      Start         End      Blocks   Id  System

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.



$ sudo fdisk -l /dev/mmcblk0

Disk /dev/mmcblk0: 31.5 GB, 31460425728 bytes
4 heads, 16 sectors/track, 960096 cylinders, total 61446144 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00017b69

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            8192      122879       57344    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          122880    61446143    30661632   83  Linux
chs
quelle

Antworten:

4

An dieser Stelle würde ich vorschlagen, Badblocks auf der SD-Karte auszuführen, um zu sehen, was sie findet.

Es hört sich so an, als ob die Schreiblogik der Karte beschädigt ist. Was Sie auf einem Einhängepunkt sehen, ist einfach die zwischengespeicherte Version Ihrer Daten. Es soll per Synchronisation und während des Umount zurückgeschrieben werden. Wenn Sie nicht erwähnen, dass die SD-Karte überhaupt hängt, ist der Schaden schwerwiegend genug, um falsch positive Rückschreibantworten zu erzeugen , oder einfacher ausgedrückt, Ihre Festplatte belügt Sie, wenn ein Schreibvorgang abgeschlossen ist .

Sie können versuchen, den Schreibschutzschalter umzuschalten, während die Karte aus dem System entfernt wird. z.B

  1. Schreibschutz umschalten
  2. einfügen
  3. Mach etwas Triviales
  4. aushängen / auswerfen
  5. Reverse Write Protect
  6. spülen / wiederholen

In dem Bestreben, die Schaltung zu kitzeln, die möglicherweise einen Wert festhält, der bei 1 steckt. Anders als das, zerquetsche es, damit niemand sonst mehr Kummer erleidet und wirf es weg.

ppetraki
quelle
Wurde heute mit genau dem gleichen Problem getroffen. Es ist die zweite SD-Karte in zwei Monaten, die auf diese Weise von meinem Telefon gebraten wird. Änderungen am Dateisystem werden anscheinend vorgenommen, aber nie beibehalten. Das Ein- und Ausschalten des Nur-Lese-Schalters hat leider keine Auswirkung. Wahrscheinlich kann das Telefon SDs irgendwie beschädigen.
Palantir
@Palantir, Festkörperspeicherung kann manchmal eine Pita sein. Es könnte sein, dass Sie gerade eine schlechte Menge Silizium bekommen haben. Oder Ihr Telefonbetriebssystem verwaltet die Medien nicht gut und hat die Schreibkapazität (Schreibdauer) der Medien erschöpft. Schwere Medien (Downloads) + schlechte SSD-Verwaltung können Ihre Karte leicht verbrennen.
ppetraki
Starke Nutzung + schlechtes Management können sehr gut der Fall sein. Ich habe diese SD-Karte verwendet, um Apps zu verarbeiten, nicht Medien (dh Link2SD), daher wurde eine starke Nutzung gewährt. Auch absolut schlechtes Management auch, weil das Problem nach einem Telefonabsturz aufgetreten ist ...: - @
Palantir
Vielen Dank für Ihre Kommentare ... Ich werde versuchen, in ein neues Telefon zu investieren, anstatt noch eine SD zu kaufen ;-)
Palantir
1

Ihre Karte scheint über das MMC-Schreibschutzflag gesperrt zu sein. Wenn Sie einen Linux-Computer mit einem SD / MMC-Kartenleser haben, versuchen Sie es

sudo sdtool /dev/mmcblk0 unlock

Beachten Sie, dass Sie ein MCC-Gerät (kein USB-Massenspeichergerät wie dieses /dev/sdX) benötigen, damit dies funktioniert.

sdtoolfinden Sie hier . Es gibt einen Raspberry Pi-Build, ansonsten müssen Sie aus Quellen erstellen. Es scheint, dass eine ähnliche Aktion ausgeführt werden kann hdparm, aber ich habe das nicht persönlich versucht.

Beachten Sie, dass sich defekte Karten auf ähnliche Weise intern sperren, um weiteren Datenschaden zu vermeiden, und Entsperrbefehle ignorieren.

Dmitry Grigoryev
quelle
1
Sehr sehr interessant! Wenn Sie eine Karte auf diese Weise sperren, wird beim Versuch, darauf zu schreiben, tatsächlich kein Fehler ausgegeben, und die Schreibaktion wird nicht ausgeführt (getestet mit einer bekanntermaßen guten SD-Karte). Leider hilft dies bei meiner (offensichtlich) defekten Karte nicht.
schlimmchen
@schlimmchen Die Karte ist nicht schuld. Massenspeichertreiber sind auf Geschwindigkeit optimiert, so dass sie häufig zwischengespeichert werden und auf die Überprüfung der SD / MMC-Statusflags verzichten, ganz zu schweigen von der Überprüfung der geschriebenen Daten.
Dmitry Grigoryev