Wie kann ich eine SD-Karte mit einem robusteren, unter Linux verwendbaren Dateisystem mit einer bestimmten Clustergröße für eine bessere Schreibleistung formatieren?

Wie kann ich eine SD-Karte mit einem robusteren, unter Linux verwendbaren Dateisystem mit einer bestimmten Clustergröße für eine bessere Schreibleistung formatieren?

Ziel: microSD-Karte formatiert...

  • für beste Schreibleistung
  • nur zur Verwendung mit eingebettetem Linux
  • für bessere Zuverlässigkeit (es können zufällige Stromausfälle auftreten)
  • mit einer Clustergröße von 64 kB

Ich verwende eine 8 GB große microSD-Karte zur Datenspeicherung in einem eingebetteten Linux/ARM-Gerät. Die SD-Karte ist nicht herausnehmbar. Ich verwende ext3 anstelle des vorinstallierten FAT32, da es mit zufälligen Stromausfällen beim Schreiben besser klarzukommen scheint. Allerdings ist mir immer wieder aufgefallen, dass meine Schreibleistung mit dem vorinstallierten FAT32 von Kingston immer am besten ist. Wenn ich die Karte mit FAT32 neu formatiere, leidet die Leistung trotzdem. Beim Durchsuchen von Wikipedia bin ich auf den folgenden Kommentar gestoßen, der besagt, dass einige Karten für bestimmte Clustergrößen optimiert sind. In meinem Fall ist die Kingston für eine Clustergröße von 64 kB vorformatiert.

Risiken der Neuformatierung

Das Neuformatieren einer SD-Karte mit einem anderen oder sogar mit demselben Dateisystem kann die Karte langsamer machen oder ihre Lebensdauer verkürzen. Einige Karten verwenden Wear Leveling, bei dem häufig geänderte Blöcke zu unterschiedlichen Zeiten unterschiedlichen Speicherbereichen zugeordnet werden, und einige Wear Leveling-Algorithmen sind für die typischen Zugriffsmuster der Dateizuordnungstabelle auf einem FAT16- oder FAT32-Gerät ausgelegt.[60] Darüber hinaus kann das vorformatierte Dateisystem eine Clustergröße verwenden, die dem Löschbereich des physischen Speichers auf der Karte entspricht; eine Neuformatierung kann die Clustergröße ändern und Schreibvorgänge weniger effizient machen.

Antwort1

Die meisten SD-Karten (und auch USB-Laufwerke) sind für die Verwendung mit FAT32 optimiert. Die Verwendung mit einem anderen FS führt zu Leistungseinbußen.

Mehr Infos unterLWN.

Antwort2

Beachten Sie dasFormatierungstool der SD Card Associationerledigt folgendes für Sie.

Ich habe noch nicht die vollständige Antwort für alle Geräte. Hier ist jedoch die Antwort für 8-GiB-Karten mit FAT32.

Partitionieren Sie die Karte so, dass die FAT32-Partition bei Sektor 8.192 beginnt, also 4 MiB vom Anfang der Festplatte entfernt. Formatieren Sie als Nächstes die FAT32-Partition mit 32-KiB-Clustern und legen Sie die Anzahl der „reservierten Sektoren“ so fest, dass der Datenbereich, Cluster 2, der FAT32-Partition bei logischem Sektor 8.192 beginnt (oder 8 MiB vom Anfang der Festplatte (4 MiB vom Anfang der Partition).

Use 32kiB clusters
| 4MiB      | 4MiB                                | remainder of disk    |  
| -------   | ---------------------------------   | ------------------   |  
| MBR       | First Partition Header + FAT tables | First Partition Data |  

Zusammenfassung der Begründung: Die SD Card Association hat diese 4-MiB-Grenzen als optimierte Zonen empfohlen und empfiehlt FAT32 als Dateisystem für Karten dieser Größe. Der Controllerchip in der Karte ist für kleine Lese-/Schreibvorgänge in diesem zweiten 4-MiB-Bereich optimiert.

Es steckt noch viel mehr dahinter, aber das ist die schnelle und einfache Antwort. Die obige Methode funktioniert nur für Festplatten < 16 GiB für 32-KiB-Cluster und < 32 GiB für 64-KiB-Cluster. Ich vermute, dass bei größeren Festplatten der Datenbereich auf logische 8 MiB erweitert wird, aber ich habe keine Festplatte, die größer als 8 GiB ist und die ich verwenden könnte.

verwandte Informationen