Wie partitioniere ich ein USB-Flash-Laufwerk richtig und welches Dateisystem soll ich unter Berücksichtigung der Abnutzungskorrektur auswählen?

13

Zwei Probleme. Erste: Wie partitioniere ich das Flash-Laufwerk?

Ich sollte dies nicht tun müssen, bin mir aber nicht mehr sicher, ob meine Partition richtig ausgerichtet ist, da ich gezwungen war, eine neue Partitionstabelle zu löschen und zu erstellen, nachdem gparted sich beschwert hatte, als ich versuchte, das Laufwerk von FAT nach ext4 zu formatieren.

Die naive Antwort wäre zu sagen: "Verwende nur die Standardeinstellung und alles wird in Ordnung sein". Wenn Sie jedoch die folgenden Links lesen, wissen Sie, dass die Dinge nicht so einfach sind: https://lwn.net/Articles/428584/ und http://linux-howto-guide.blogspot.com/2009/10/increase- USB-Flash-Laufwerk-Write-speed.html

Hinzu kommt das Thema Zylinder, Köpfe und Sektoren. Derzeit bekomme ich folgendes:

$sfdisk -l -uM  /dev/sdd
Disk /dev/sdd: 30147 cylinders, 64 heads, 32 sectors/track
Warning: The partition table looks like it was made
   for C/H/S=*/255/63 (instead of 30147/64/32).
For this listing I'll assume that geometry.
Units = mebibytes of 1048576 bytes, blocks of 1024 bytes, counting from 0
Device Boot Start   End    MiB    #blocks   Id  System
/dev/sdd1         1  30146  30146   30869504   83  Linux

$fdisk -l /dev/sdd
Disk /dev/sdd: 31.6 GB, 31611420672 bytes
255 heads, 63 sectors/track, 3843 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00010c28

Nach meinem derzeitigen Verständnis sollte ich Partitionen mit 4 MiB ausrichten (derzeit mit 1 MiB). Aber ich weiß immer noch nicht, wie ich die Köpfe und Sektoren für mein Gerät richtig einstellen soll.

Zweites Problem: Dateisystem.

Aus den Benchmarks, die ich gesehen habe, liefert ext4 die beste Leistung, es gibt jedoch das Problem des Verschleißausgleichs. Woher weiß ich, dass der Mikrocontroller meines Transcend JetFlash 700 einen Verschleißausgleich ermöglicht? Oder werde ich einfach meine Fahrt schneller beenden?

Ich habe viele Posts im Internet gesehen, in denen stand, dass die neueren Laufwerke das schon erledigen. Aber ich habe noch nie einen einzigen Beweis dafür gesehen und irgendwann mischen die Leute SSD mit USB-Sticks. Die sichere Option wäre, ext2 zu wählen, aber eine Reihe von Tests, die ich durchgeführt habe, haben eine schreckliche Leistung gezeigt !!!

Diese Werte stammen aus einem realen Szenario und nicht aus einem synthetischen Test:

42 files: 3,429,415,284 bytes copied to flash drive
original fat32: 15.1 MiB/s
ext4 after new partition table: 10.2 MiB/s
ext2 after new partition table:  1.9 MiB/s

Bitte lesen Sie die Links, die ich oben gepostet habe, bevor Sie antworten. Ich würde mich auch für Antworten interessieren, die mit einigen Referenzen unterlegt sind, weil viel gesagt und wiederholt wird, aber dann fehlen Fakten.

Danke für die Hilfe.

random1
quelle
"Allerdings gibt es das Problem des Verschleißausgleichs" - Sie haben wirklich keine Wahl in der Sache. Entweder das USB-Flash-Laufwerk oder die SD-Karte, die Sie kaufen, gleichen den Verschleiß zufriedenstellend aus oder nicht. Sie können / sollten kein Dateisystem verwenden, das Wear-Leveling ausführt (z. B. JFFS2). Und Sie können UBI Volume Management nicht installieren (Sie müssten zuerst MTD installieren, dies gilt jedoch für Raw-Flash-Geräte). Sie müssen sich also nicht mehr auf den Embedded-Controller verlassen.
Sägemehl

Antworten:

8

Kümmere dich nicht um Zylinder, Köpfe und Sektoren und arbeite immer nur mit Sektoren. Der einfachste Weg, das Dateisystem auszurichten, besteht darin, einfach keine Partitionstabelle zu haben (dh das Dateisystem /dev/sdXdirekt zu erstellen ). Die meisten Linux-Systeme werden damit klar kommen, aber Windows wird ausflippen und Sie werden es auch nicht bootfähig machen können. Wenn Sie eine Partitionstabelle benötigen, ermitteln Sie, wie viele 512-Byte-Sektoren einen Löschblock bilden. Die Anzahl der Löschblöcke liegt bei 128-512 KB. Wenn Sie also nicht herausfinden können, was Ihr Flash-Laufwerk verwendet, sollten Sie 1024 Sektoren verwenden. Stellen Sie sicher, dass Partitionen mit einem Vielfachen dieser Anzahl beginnen.

Sie möchten ext2 / 3/4 auch über die Größe des Löschblocks informieren, damit keine unnötigen Änderungen an den Blöcken vorgenommen werden. Stellen Sie sowohl strideals stripe-widthauch die Anzahl der Dateisystemblöcke ein, aus denen sich ein Löschblock zusammensetzt. Wenn Sie also an einem 512-KB-Löschblock arbeiten, gehen Sie folgendermaßen vor:

mkfs.ext4 -b 4096 -E stride=128,stripe-width=128

In Bezug auf die Leistung sollte das Fehlen eines Journals die Leistung verbessern (aber die Wahrscheinlichkeit einer Datenbeschädigung erhöhen, wenn der Betrieb unterbrochen wird). Die Extents von ext4 sollten jedoch die Leistung verbessern, da für große Dateien weniger Metadaten geändert werden müssen. Ich würde wahrscheinlich ext4 mit deaktiviertem Journal verwenden:

tune2fs -O ^has_journal
mgorven
quelle
Mit können Sie die cat /proc/mtdGröße der Löschblöcke für angeschlossene Flash-Geräte ermitteln.
Tomalak
Flash-Laufwerke ohne Partitionstabelle sollten unter Windows einwandfrei funktionieren, sofern das Dateisystem unterstützt wird. Pendrives haben normalerweise keine Partitionstabelle und funktionieren einwandfrei.
Gronostaj
Das Optimieren von fs auf der SD-Karte für Linux / Fedora auf Dreamplug zeigt, wie ext4 die Größe der gelöschten Blöcke "kennt" und die Blockgröße und den "Schritt" -Wert entsprechend einstellt . Ich glaube auch, dass / proc / mtd hier nicht relevant ist, da es nur für Raw-Flash-Geräte verfügbar ist, wie Sägemehl sagte, nicht für SD / Stick-Flash-Speichergeräte.
Tuk0z
Versuchte das, es war ein schrecklich schlechter Rat. Verwenden Sie diese Parameter nicht mit einem USB-Flash-Laufwerk. blogofterje.wordpress.com/2012/01/14/optimizing-fs-on-sd-card - dieser Typ hat bessere Parameter, aber es ist immer noch nur unwesentlich besser, wenn überhaupt, als das, was gparted standardmäßig verwendet.
Zdenek
Das ist derselbe Link, den ich im September gegeben habe
Tuk0z
4

Heutzutage verwenden die meisten Linux-Partitionierungs- und Dateisystemerstellungstools standardmäßig Werte, die Daten an 4-KB-Grenzen ausrichten, und verwenden sogar die zugrunde liegende Blockgröße, wenn die Festplatte diese freigibt, sodass die Dinge nicht ganz so schlecht sind wie im LWN-Artikel:

TLDR; Wenn Sie eine moderne Linux-Distribution (z. B. 2013 oder höher) mit neueren Versionen von Tools verwenden, um Ihre Partitionen und Dateisysteme besser (aber nicht perfekt) auszurichten, erfolgt die Ausrichtung automatisch. Seien Sie auch vorsichtig - die besten Werte für eine SD-Karte können sich von denen für einen USB-Stick unterscheiden (ich glaube, Ihr Transcend JetFlash ist ein USB-Stick, keine SD-Karte). Sie müssten ein Benchmarking durchführen, um die wahre zugrunde liegende Größe des Löschblocks bei billigem Flash abzuleiten ...

Anon
quelle
1

Stellen Sie außerdem sicher, dass Sie in Ihrer fstab die Mount-Option "noatime" verwenden, um unnötige Schreibvorgänge bei jedem Zugriff auf eine Datei zu vermeiden.

docwebhead
quelle
Bis heute
treu