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.
Antworten:
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/sdX
direkt 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
stride
alsstripe-width
auch 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: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:
quelle
cat /proc/mtd
Größe der Löschblöcke für angeschlossene Flash-Geräte ermitteln.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 ...
quelle
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.
quelle