SD/SSD Datenverteilung

  • Hallo,


    wie verteilt eine SD bzw. SSD die Daten in den "Speicherzellen" im Zusammenhang mit der Partitionierung?


    Hintergrund zur Erklärung:

    Eigentlich nutze ich dd sehr gerne zum Sichern meiner Raspi-Speichermedien ab.

    Im Zusammenhang mit SD-Karten bzw. SSD heisst es immer, dass deren Lebensdauer erhöht werden kann, wenn mehr Platz vorhanden ist, als tatsächlich genutzt wird. Die Daten werden dann von den Medien "intelligent" in die Seicherzellen verteilt, was die Schreibzugriffe auf die einzelnen Zellen reduziert.

    Wenn ich jetzt meine Partitionen auf die maximale Größe der Speichermedien vergrößere, heisst das ich nutze diesen Effekt sehr gut aus.

    Im Zusammenhang mit dd und einer Kopie der Partition bedeutet das aber natürlich dass ich sehr viele unnützen Daten sichern muss.


    D.h. aus Sicht der Sicherung wäre es sinnvoll die Partition nicht unnötig zu vergrößern.


    Die Frage die ich mir jetzt Stelle, ob durch die Partitionierung die Zahl der genutzten Zellen auf bestimmte Bereiche des Speichermediums (nämlich die Blöcke der Partition) einschränke, oder ob diese Verteilung unterhalb der Partitionslogik stattfindet?


    Vielen Dank für evtl. Hinweise

    Patrick

  • Gute Frage, habe ich mir auch schon gestellt. Also wie die Daten auf dem Datenträger verteilt werden. Macht der Controller das unabhängig vom Dateisystem und ist das ggf. unterschiedlich, je nach Datenträger und dessen Controller. Vermuten würde ich, dass Partitionsgrenzen nicht direkt durchgereicht werden, damit eine möglichst gleichmässige Abnutzung stattfinden kann.

  • Durch die Partitionierung wird das in einer Partition erstellte Filesystem auf den Bereich zwischen Start-Sektor und End-Sektor eingeschränkt.


    Im Normalbetrieb eines Filesystems wird der Speicherbereich eines gelöschten Files sogleich wieder zum Beschreiben freigegeben. Die Belegung eines EXT4 Filesystems kannst Du z. B. mit <sudo dumpe2fs /dev/sda2 > ansehen, wenn /sda2 Deine Ext4 Partition ist.


    "Trimm" verzögert das sofortige Wiederbeschreiben der freigegebenen Sektoren, indem eine Liste der gerade durch Löschen freigewordenen Sektoren im nichtsichtbaren Bereich des Speichergerätes angelegt wird. und diese Sektoren vorerst nicht neu beschrieben werden. Da diese Liste aber auch ab einer festen Speicheradresse erstellt wird, darf Trimm nicht stündlich, sondern nur einmal wöchentlich ausgeführt werden. Trimm (aka: fstrimm) wird im aktuellen Linux durch eine Service und eine Timer Unit (Mo 00:00) aktiviert. In manchen Distributionen schon ab Installation "enabled", und schreibt dann sein Ergebnis auch nach /var/log/syslog


    "Garbage Collection" ist imho die neuerste Anti Verschleiss Technologie. [Kann sein, dass sie auch anders bezeichnet wird] Das ist Partitions- und Filesystem unabgängig. Da ein SD-Gerät aus mehreren/vielen einzelnen Speicherchips besteht, werden die Schreibzugriffe auf jeden Chip (oder Teilen davon) mitgezählt. Hat ein Chip eine gewisse Anzahl von Schreibzugriffen erreicht, wird er gegen einen Chip mit wenig Zugriffen ausgetauscht. Natürlich werden auch die Daten der betroffenen Chips vorher getauscht. Dadurch kommt es zu einer gleichmässigen "Abnutzung" aller verbauten Einzelspeicher.


    Eine SD > 64 MB, oder eine SSD kann trimmfähig sein, muss aber nicht.

    Eine neuere SSD kann mit Garbage Collection ausgestattet sein (dann kann auch Trimm fehlen.)

    Nähere Auskünfte erteilt der Verkäufer/Hersteller.


    Servus !

    RTFM = Read The Factory Manual, oder so

  • Es gibt also "dumme" SD Karten, die keine gleichmässige Abnutzung können? Ich habe noch nichts an Informationen diesbezüglich gefunden. Z.B. im Datenblatt zu SanDisk Extreme steht genau nichts dazu. Ich kann mir auch kaum vorstellen, das der durchschnittliche Verkäufer mehr weiss. Ich habe eher das Gefühl, das der Controller eine Blackbox ist und das auch so gewollt. Wenn das hier stimmt, scheint sich das zu bestätigen. Es sollen aber alle Karten Wear Leveling beherrschen.

  • SanDisk verwendet "wear leveling". Dabei werden Speicherbereiche beim Schreiben mitgezählt, und bei entsprechender Belastung vorerst nicht verwendet, sondern in einen freien, relativ unbenützten Speicher umgeleitet. Dabei kann ein Filesystem, das vom Sektoranfang bis Sektorende linear adressiert ist, schlimmstenfalls kreuz und quer über die einzelnen Speicherchips verteilt sein. Der Controller weiss, wo er die abgefragte Sektornummer tatsächlich erreicht.


    Sandisk SDs verwenden "wear leveling", aber nur die "besseren" (teureren), die "Extreme" gehört vermutlich noch nicht dazu. https://documents.westerndigit…industrial-sd-microsd.pdf

    Auch die SSDs sind schon seit einigen Jahren oft schon mit wear leveling ausgerüstet.


    https://hardwarecanucks.com/fo…sd-read-this-first.39762/ beispielsweise für weitere Infos.


    Servus !

    RTFM = Read The Factory Manual, oder so

  • Hi,


    zuerst einmal vielen Dank für die Antwort!


    Ok, dann kann ich nicht sicher sagen, ob eine Karte "wear leveling" unterstützt oder nicht. Aber wenn ich davon ausgehe, sie tut es, ist mir trotzdem nicht klar, ob die beiden folgenden Aussagen

    Durch die Partitionierung wird das in einer Partition erstellte Filesystem auf den Bereich zwischen Start-Sektor und End-Sektor eingeschränkt.

    ...

    Und

    ...

    Dabei kann ein Filesystem, das vom Sektoranfang bis Sektorende linear adressiert ist, schlimmstenfalls kreuz und quer über die einzelnen Speicherchips verteilt sein. Der Controller weiss, wo er die abgefragte Sektornummer tatsächlich erreicht.

    ...

    bedeuten ich grenze die nutzbaren Speicherbereich durch die Partitionierung auf ein Teil der insgesamt verfügbaren Speicherbereiche ein, oder nicht?

  • Wenn ich jetzt meine Partitionen auf die maximale Größe der Speichermedien vergrößere, heisst das ich nutze diesen Effekt sehr gut aus.

    Nein, machst du grade nicht, da die Firmware des Speichern weniger unbenutzte Speicherzellen hat, um sein wear-leveling durchzuführen.


    Früher™, das SSDs (also jeder Speicher auf Flash-Basis) neu waren, sagte man immer, 3% nicht zu partitionieren, damit genügend Speicherzellen frei sind.

    Heutzutage haben die Datenträger schon vom Hersteller genügend freie Zeilen,die man nicht in die Partitionieren aufgenommen werden können, so dass man die (nicht zu billigen) Datenträger voll nutzen kann.#Man kann aber natürlich noch was frei lassen. Besonders bei SD-Karten.

    Selber denken,
    wie kann man nur?

  • Wenn der Controller dumm ist und man einen Bereich nicht partitioniert, dann wird der auch nie benutzt. Wenn der Controller nicht dumm ist, hat Partitionierung keinen Einfluss auf Haltbarkeit.

  • Das führt mich aber wieder genau zu meiner ursprünglichen Frage zurück:

    Da ich nicht prüfen kann, ob der Controller den unpartitionierten Bereich nutzt, gehe ich mal vom schlechtesten Fall aus, dass er ihn nicht nutzt.

    Deshalb erstelle ich die Partition auf die maximale Größe und nutze diese dann nur zu einem Bruchteil.

    Dann verteilt doch wenigstens das Dateisystem die Blöcke/Inodes innerhalb der kompletten Partition und nicht immer nur auf die ersten Blöcke...

    Wenn ich Glück habe werden im Laufe der Zeit alle Blöcke mal beschrieben und nicht immer die gleichen.

    Natürlich wird es in Realität nicht auf diesen Idealfall heraus laufen, aber besser als nichts.

    Oder übersehe ich hier etwas?

  • Dann verteilt doch wenigstens das Dateisystem die Blöcke/Inodes innerhalb der kompletten Partition und nicht immer nur auf die ersten Blöcke...

    Ein EXT4 Filesystem macht das nicht.

    Hättest Du mit dumpe2fs aus #3 Dein Ext4 Filesystem angesehen, hättest Du bemerkt, dass die Gruppen mit freien Inodes und freien Blöcken sich nur marginal geändert haben


    Servus !.

    RTFM = Read The Factory Manual, oder so

  • Hallo,


    zxr: wie viele Sicherungen willst du denn du den täglich auf die SSD machen? Wenn es nicht dutzend sind und die die SSD im Dauerbetrieb hast, dann wirst du vermutlich nicht an den Punkt kommen, wo der SSD die Speicherzellen aufgrund von Verschleiß ausgehen.

    Bei SDs mag das ja nach Qualität und Controller anders sein.


    BTW: der letzte Bit Rauschen Podcast handelt von SSDs, deren Technik und Lebensdauer. IMHO sehr hörenswert!


    Gruß, noisefloor

  • Im Grunde kann man deine Frage nicht beantworten. Eine SSD oder Speicherkarte ist quasi eine Blackbox die irgendwas macht was nicht nachvollziehbar ist. Im besten Falle kümmern sich Controller darum die Speicherzellen gleichmäßig zu benutzen, aber eine Speicherkarte ist ja eigentlich nicht für den Zweck gemacht und die meisten werden wohl die nächstbeste Speicherzelle nehmen die als frei gekennzeichnet ist. Ich weiß nicht einmal ob irgendein Controller bei den Speicherkarten überhaupt vorgesehen oder vorhanden ist.

    oder ob diese Verteilung unterhalb der Partitionslogik stattfindet?

    Was dein Dateisystem tut und was oder wie ein Speichermedium das nun erledigt sind zwei von sich unabhängige Dinge. Das Gerät bekommt den Auftrag Information X zu schreiben und dies tut das Medium dann auf die Art wie es möchte bzw. programmiert wurde. Ob du nun ein Fat32, Ext oder sonst etwas nimmst spielt dabei für den Controller keiner Rolle. Ziel kann es höchtens sein aktive Schreibprozesse zu verringern und hoffen, dass der Controller einigermaßen sinnvoll arbeitet.