Wie geht dd mit Defekten auf der SD-Karte um ?

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Moin, ich bin gerade dabei meine SD-Karte zu klonen, beide sind 64GB SanDisk.
    Laut fdisk -l haben beide exakt die gleiche Grösse.
    Mittels zweier USB-Adapter habe ich die SD-Karten in einen Linuxrechner geschoben.
    Dummerweise habe ich kein status=progress dahinter gesetzt, sondern lediglich

    Code
    sudo dd if=/dev/sdd of=/dev/sde bs=1M


    eingetippelt. In der nächsten Stunde sind seitdem 24 Std. vergangen.
    Das ist doch ein bisschen viel Zeit, selbst für eine 64GB-Karte, deshalb geistert mir jetzt die Möglichkeit durch den Kopf, das die zu klonende SD-Karte möglicherweise einen Defekt hat, obwohl sie bisher einwandfrei lief.
    Jetzt möchte ich den Vorgang natürlich nicht beenden und mir die Karten beschädigen.
    Kann es sein, dass dd versucht defekte Sektoren zu klonen und dabei hängt ?
    Wenn ja, wie oft probiert dd das, ohne eine Fehlermeldung zu bringen, oder abzubrechen ? :s

    MfG

  • Nach meiner Erinnerung, würde dd bei defekten Sektoren den Kopiervorgang einfach abbrechen, nähere Infos sollten sich mit man dd herausfinden lassen. Auch falls Du den Kopiervorgang abbrichst, werden die SD Karten keinen physikalischen Schaden erleiden. Es ist halt manchmal so, dass bei einigen Sektoren die Lese-/ Schreibrate extrem einbricht, aber 24h für 64G ist schon recht lang. Ich benutze deshalb ddrescue zum Kopieren von Datenträgern, das hat eine Statusanzeige u. bricht ( neben vielen anderen Vorteilen ) auch nicht bei Fehlern ab.

  • Abbrechen werde ich jetzt nicht, es läuft ja schon seit 26 Stunden, da kanns nochmal solange dauern, bevor ich abbreche, der neue Pi kommt ja erst am Dienstag.
    Zugegeben, ich habe den freien Speicher vorher auch nicht mit Nullen gefüllt.
    Nun ja, mal abwarten. :daumendreh2:

  • Zitat von "fred0815" pid='298147' dateline='1504420907'


    Dummerweise habe ich kein status=progress dahinter gesetzt, sondern lediglich

    Code
    sudo dd if=/dev/sdd of=/dev/sde bs=1M


    eingetippelt. In der nächsten Stunde sind seitdem 24 Std. vergangen.

    BTW: Lt. UU-Wiki gibt es auch andere Möglichkeiten den Fortschritt zu sehen:

    https://wiki.ubuntuusers.de/dd/#Einmalige-…es-Signals-USR1

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    Einmal editiert, zuletzt von rpi444 (3. September 2017 um 12:46)

  • Servus,

    Zitat von "Fliegenhals" pid='298159' dateline='1504430987'


    ... würde dd bei defekten Sektoren den Kopiervorgang einfach abbrechen,...


    yepp, der würde einen I/O error bringen und Ende.
    Hast Du mal ins syslog geschaut (dmesg)?
    Da sollten, wenn eine der Karten einen weg hat, massenhaft Meldungen wie "try to reset, ..." auftauchen.

    //EDIT: das mit dem SIGUSR1 kannte ich noch nicht ... das ist genial, wieder was dazugelernt ;)

    cu,
    -ds-

  • man dd
    ...
    noerror
    continue after read errors
    ---
    [fdatasync
    physically write output file data before finishing
    fsync likewise, but also write metadata] auch zu empfehlen


    Mit < badblocks ...> kannst Du ein Device auf Badblocks überprüfen, siehe < man badblocks >

    Servus !

    RTFM = Read The Factory Manual, oder so

    Einmal editiert, zuletzt von RTFM (3. September 2017 um 13:12)

  • Zitat von &quot;fred0815&quot; pid='298168' dateline='1504432678'


    Zugegeben, ich habe den freien Speicher vorher auch nicht mit Nullen gefüllt


    Das ist auch für 1:1 Kopie unnötig, da dd Bit für Bit kopiert und es egal ist ob das Bit einen Wert von 0 o. 1 hat. Falls man das Image noch komprimieren will, kann es aber sinnvoll sein, den freien Speicher mit einer Datei aus Nullen zu füllen und diese Datei dann vor dem Erstellen des Images zu löschen. Ich würde auch mal in die Kernelmeldungen schauen, ob es ein Problem gibt, andere Möglichkeiten wären noch mal mit top o. ps ax nach dem Status von dd zu schauen, die Größe des Images kann man ja nicht so einfach überprüfen, da Du eine 1:1 Kopie eines Datenträgers machst. Mit ddrescue würde man die Geschwindigkeit des Kopiervorgangs, den Fortschritt und auch Fehler beim Lesen / Schreiben erkennen können, deshalb ist auch ddrescue beim clonen von Datenträgern, meine erste Wahl.

  • Zitat von &quot;dreamshader&quot; pid='298178' dateline='1504436562'

    //EDIT: das mit dem SIGUSR1 kannte ich noch nicht ... das ist genial, wieder was dazugelernt ;)

    Jupp. Das ist ein nettes Feature. Waere auch nett das bei tar oder rsync zu haben

  • Hi,

    Zitat von &quot;fred0815&quot; pid='298235' dateline='1504447826'


    ... P.S. -USR1 sagt 53GB kopiert....

    womit mal wieder bestätigt wäre, dass SD-Karten jenseits einer gewissen Grösse einfach keinen Sinn mehr machen ;)
    Wobei das aber wirklich verdammt lange bei Dir dauert ...

    cu,
    -ds-

  • SDHC-Karten, die größer als 32GByte sind, entsprechen keinem Standard.
    So wie es mit SD-Karten ist, die größer als 2 GByte sind.
    Denn bei den SDHC-Karten endet der Standard bei 32 GByte.
    Alles, was größer und standardisiert ist, ist eine SDXC-Karte

    Computer ..... grrrrrr

  • 57 GB bei 477 kB/s ....
    Kein Wunder, aber Hauptsache es hat doch noch geklappt. :bravo2:
    :danke_ATDE:

    P.S. status=progress kennt mein Linuxrechner nicht. :s

    EDIT: Von der Platte ein Image auf die Karte zu schreiben geht mit Anfangs 7MB/s los, dann immerhin mit 3,9 MB/s wesentlich flotter, bricht dann aber später auf ~900 kB/s ein.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!