• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Prüfung der Kapazitätsangabe SD-Card

gehrke

Administrator
Teammitglied
Moin *,

ich hatte jüngst ein Problem mit einer SD-Card, welche nur so tat, als ob sie Daten schreiben würde:
https://linux-club.de/forum/viewtopic.php?f=92&t=121767

Ob das nun in diesem konkreten Fall eine Alterserscheinung war oder bewusste Manipulation, lässt sich nicht mehr klären. Aber ich lese immer wieder davon, dass Billig-Importe tatsächlich ab Werk mehr Kapazität vorgeben als tatsächlich verbaut ist. Da ich nun eine neue Karte besorgt habe, wollte ich das frühzeitig testen, um die Karte gleich wieder zurückzuschicken (oder gleich Strafanzeige wegen Betrugs zu erstatten).

Im Folgenden das von mir gewählte Verfahren zur Überprüfung: Es wird eine Datei aus Zufallszahlen im lokalen Dateisystem erstellt, welche (ungefähr) so groß ist wie die vermeintliche Kapazität der Karte. Diese Datei wird dann auf die SD-Card kopiert und anschließend mit einem Diff sichergestellt, dass diese gleich sind.

Partitionierung + Formatierung:
Code:
[root@j2 ~]# fdisk -l /dev/sde1

Disk /dev/sde1: 31.9 GB, 31910789120 bytes, 62325760 sectors
Units = Sektoren of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

[root@j2 ~]# mkfs.ext4 /dev/sde1
mke2fs 1.42.9 (28-Dec-2013)
Dateisystem-Label=
OS-Typ: Linux
Blockgröße=4096 (log=2)
Fragmentgröße=4096 (log=2)
Stride=0 Blöcke, Stripebreite=0 Blöcke
1949696 Inodes, 7790720 Blöcke
389536 Blöcke (5.00%) reserviert für den Superuser
Erster Datenblock=0
Maximale Dateisystem-Blöcke=2155872256
238 Blockgruppen
32768 Blöcke pro Gruppe, 32768 Fragmente pro Gruppe
8192 Inodes pro Gruppe
Superblock-Sicherungskopien gespeichert in den Blöcken: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000

Platz für Gruppentabellen wird angefordert: erledigt                        
Inode-Tabellen werden geschrieben: erledigt                        
Erstelle Journal (32768 Blöcke): erledigt
Schreibe Superblöcke und Dateisystem-Accountinginformationen: erledigt

Bestimmung des Größenparameters:
Code:
[root@j2 temp]# mount /dev/sde1 /mnt
[root@j2 temp]# df /mnt
Dateisystem    1K-Blöcke Benutzt Verfügbar Verw% Eingehängt auf
/dev/sde1       30542260   45080  28922652    1% /mnt
Erzeugung einer Testdatei aus Zufallszahlen, die (ungefähr) das gesamte Fassungsvermögen der Karte umfasst.
Code:
[root@j2 temp]# time dd if=/dev/urandom of=test.random count=28922651 bs=1K
28922651+0 Datensätze ein
28922651+0 Datensätze aus
29616794624 Bytes (30 GB) kopiert, 2580,26 s, 11,5 MB/s

real    43m1.301s
user    0m6.589s
sys     40m42.559s
Kopie auf die Karte:
Code:
[root@j2 temp]# cp test.random /mnt/
Vergleich der Dateien via diff: Die Dateien müssen gleich sein!
Code:
[root@j2 temp]# diff test.random /mnt/test.random
Keine Unterschiede, die Karte scheint in Ordnung zu sein.

cu, gehrke
 
OP
gehrke

gehrke

Administrator
Teammitglied
Gräfin Klara schrieb:
Ich befürchte, dass dieser Test nicht das kann was du willst
Ich halte mich nicht für unfehlbar und kann meistens mit Kritik umgehen. Sag doch einfach, was Du meinst und mach' es nicht so spannend...
 

/dev/null

Moderator
Teammitglied
Hallo!

Ich nutze zum Testen das kleine Tool "f3". Genau so wie das Windows-Tool "h2TestW" schreibt es den Datenträger voll mit kleinen definierten Dateien und liest selbige hinterher wieder aus und vergleicht sie. Dabei wird als "Nebeneffekt" auch noch die jeweilige aktuelle und gemittelte Schreib- und Lesegeschwindigkeit angezeigt.
(BTW: Ich habe allerdings damit bislang "nur" sämtliche meiner Festplatten und USB-Sticks getestet. Bei SD-Karten bin ich mir jetzt nicht so sicher ... .)

MfG Peter
 
gehrke schrieb:
Gräfin Klara schrieb:
Ich befürchte, dass dieser Test nicht das kann was du willst
Ich halte mich nicht für unfehlbar und kann meistens mit Kritik umgehen. Sag doch einfach, was Du meinst und mach' es nicht so spannend...

Deinen Eintrag habe ich übersehen.
Von Kritik kann überhaupt keine Rede sein!
Lege deine card ein, dann sehen wir und das an
 
OP
gehrke

gehrke

Administrator
Teammitglied
Gräfin Klara schrieb:
Lege deine card ein, dann sehen wir und das an
Irgendwie verstehen wir uns falsch. Der Inhalt meines Beitrages war ein Verfahren, wie man mit Bordmitteln prüfen kann, dass auf die Karte tatsächlich Daten in der erwarteten Menge geschrieben und wieder gelesen werden können. Das Verfahren ist mit dem ersten Beitrag vollständig dokumentiert - nicht mehr, aber auch nicht weniger.

Beispiel für einen solchen Artikel:
https://www.heise.de/newsticker/meldung/Gefaelschte-USB-Sticks-und-Micro-SD-Karten-weiter-im-Angebot-2635511.html

Die Karte ist mittlerweile bei der Besitzerin im produktiven Einsatz, da komme ich nicht mehr ran. Dafür sehe ich auch keinen Grund mehr, der Test für diese Karte ist erfolgreich abgeschlossen.
 
gehrke schrieb:
Irgendwie verstehen wir uns falsch.
Keine Sorge, wir verstehen uns richtig.
Du willst die reale Speicherkapazität eines Flash-Speichermediums prüfen, nicht mehr und nicht weniger.
Dafür verwendest du
1. ausschliesslich die Informationen des OS
2. eine partition
3. ein filesystem und als Kirsche auf der Torte auch noch
4. mounted

Dazu möchte ich folgendes anmerken
Es ist nicht die Aufgabe des OS, die Angaben des Herstellers auf deren Richtigkeit zu prüfen.
Was der Hersteller als Kapazitäts- und Partitionsinformation über den Bus liefert, das wird vom OS, und letztendlich vom FS, als richtig angenommen.
Mit deinem Test läßt sich ein 10MB Flash Speichermedium, angebunden über USB, als ein 100GByte Medium verkaufen.
Da kannst du 100x 100G an Zufallsdaten über USB in das FS auf die Partition schreiben, es wird dir außer bad blocks, keinen Fehler anzeigen.
Selbst ein umount/mount bei jedem Vorgang ändert nichts an dieser Situation.

gehrke schrieb:
Dafür sehe ich auch keinen Grund mehr, der Test für diese Karte ist erfolgreich abgeschlossen.
Ok, erledigt

Gruß
Gräfin Klara
 

marce

Guru
bis auf das, daß er eine lokale Datei erzeugt und diese auf das Medium kopiert - und dann lokal und Medium vergleicht. Dabei fällt auf, wenn auf dem Medium irgendwas passiert, was die Integrität der Test-Datei verändert.

(ob diff oder sha/md/xxx-sum geeigneter wäre - darüber ließe sich noch streiten).

Der Test ist also doch geeignet.
 
marce schrieb:
Der Test ist also doch geeignet.

Für was?
Um je physikalischer Blockgröße einen kaputten Block angezeigt zu bekommen?
Um einen FS-Fehler vorgesetzt zu bekommen?
Bleib bitte beim Thema. "Prüfung der Kapazitätsangabe SD-Card"
Das hat mit dem OS, FS, dem gewählten Format Layout oder partitions nichts zu tun.
 

marce

Guru
Tu ich.

Karte sagt "32GB" - wir erstellen also eine 32GB große Datei. Kopieren diese auf die Karte. Kopieren erfolgreich und beide Dateien identisch -> Karte also (min.) 32GB groß. Prüfung im Sinne des TE erfolgreich abgeschlossen.

Kommt ein Fehler beim Kopieren oder sind beide Dateien hinterher nicht identisch (auch ohne ausgegebenen Kopierfehler, z.B. weil eine falsch dekl. Karte wieder "von vorne angefangen hat, Daten zu überschreiben) -> Karte nicht ok. Prüfung im Sinne des TE "erfolgreich" abgeschlossen.
 
marce schrieb:
Tu ich.

Karte sagt "32GB" - wir erstellen also eine 32GB große Datei. Kopieren diese auf die Karte. Kopieren erfolgreich und beide Dateien identisch -> Karte also (min.) 32GB groß. Prüfung im Sinne des TE erfolgreich abgeschlossen.

Kommt ein Fehler beim Kopieren oder sind beide Dateien hinterher nicht identisch (auch ohne ausgegebenen Kopierfehler, z.B. weil eine falsch dekl. Karte wieder "von vorne angefangen hat, Daten zu überschreiben) -> Karte nicht ok. Prüfung im Sinne des TE "erfolgreich" abgeschlossen.

Ok, dann ändere den Titel auf:
Prüfung einer SD-Card ob kaputt
Ist mir auch Recht. Für mich das das Thema hier erledigt!
 

marce

Guru
Der Titel passt durchaus. Ich frag' mich eher, was Dich daran stört ode rwo Du der Meinung bist,, daß mit dem Vorgehen des TE das Ziel nicht erreicht wird...

Es gibt nunmal Billigkarten, die nicht die beworbene Kapazität bieten - und es ist ein durchaus valides Vorgehen, dies durch eine Testdatei mit der beworbenen Kapazität zu überprüfen.
 
Oben