Bei vielen neuen Festplatten beträgt die physische Sektorgröße 4096. Wäre es möglich, dass das System eine logische Sektorgröße derselben Größe anstelle der standardmäßigen logischen Sektorgröße von 512 verwendet?
Wird es Massenlese- und Schreibvorgänge beschleunigen? Wo kann es konfiguriert werden?
hard-disk
performance
io
Matan
quelle
quelle
mkfs.*
sollten automatisch die optimale Sektorgröße verwenden. Sie können einigemkfs.*
Tests durchführen und das Ergebnis überprüfen (entweder in der ausführlichen Ausgabe von mkfs oder in einem verwandten Dienstprogramm fs).Antworten:
512 Byte ist nicht wirklich die Standardsektorgröße. Das hängt von Ihrer Hardware ab.
Über das
/sys
Pseudodateisystem können Sie beispielsweise anzeigen, welche physischen / logischen Sektorgrößen Ihre Festplatte meldet :Was ist der Unterschied zwischen diesen beiden Werten?
physical_block_size
ist die minimale Größe eines Blocks, den das Laufwerk in einer atomaren Operation schreiben kann.logical_block_size
ist die kleinste Größe, die das Laufwerk schreiben kann (siehe die Dokumentation zum Linux-Kernel).Wenn Sie also ein 4-KB-Laufwerk haben, ist es sinnvoll, dass Ihr Speicherstapel (Dateisystem usw.) etwas verwendet, das der Größe des physischen Sektors entspricht oder darüber liegt.
Diese Werte werden auch in neueren Versionen angezeigt
fdisk
, beispielsweise von:Auf aktuellen Linux-Distributionen
mkfs.xfs
wählen Programme (die sich um die optimale Sektorgröße kümmern sollten) wie standardmäßig die optimale Sektorgröße (z. B. 4096 Bytes).Sie können es aber auch explizit über eine Option angeben, zum Beispiel:
Oder:
In jedem Fall
mkfs
zeigen die meisten Varianten während der Ausführung auch die verwendete Blockgröße an.Für ein vorhandenes Dateisystem kann die Blockgröße mit einem Befehl wie folgt bestimmt werden:
Oder:
Oder:
Wenn Sie das Dateisystem auf einer Partition erstellen, müssen Sie außerdem prüfen, ob die Startadresse der Partition tatsächlich an der physischen Blockgröße ausgerichtet ist. Schauen Sie sich zum Beispiel die
fdisk -l
Ausgabe an, konvertieren Sie die Startadressen in Bytes, dividieren Sie sie durch die physische Blockgröße - die Erinnerung muss Null sein, wenn die Partitionen ausgerichtet sind.quelle
fdisk -l
abgerufen, durch 8 geteilt und dann 512 Der Rest war nicht 0, daher scheint die Partition nicht ausgerichtet zu seinfdisk -l
BerichtUnits = sectors of 1 * 512 = 512 bytes
in einem meiner Linux-Systeme - also für ein 512/4096 logisch / physikalisches Laufwerk mit 2 Partitionen ab 2048 und 1026048 - berechne ich2048*512%4096
und1026048*512%4096
- zB in einer Python-Shell. Da beide Ausdrücke gleich Null sind, sind diese Partitionen 4k ausgerichtet.Nein, es ist nicht möglich und es wäre auch egal, wenn es so wäre. E / A-Vorgänge werden in der Regel in Einheiten von mindestens 4096 Bytes ausgeführt, und in der Regel in viel mehr.
quelle
Ja, dies ist möglich, würde jedoch dazu führen, dass sich das Laufwerk viel schneller füllt, als es sollte. Bei Dateien mit weniger als 512 KB würde jede Datei dann volle 4096 KB (4 MB) belegen und den Rest des Sektors mit Nullen füllen, da die meisten Dateisysteme (NTFS und dergleichen) keine gemeinsamen Sektoren für Dateien zulassen. Die beste Option für ein Dateisystem wäre, variable Sektorgrößen zuzulassen. Dies erhöht jedoch die Größe der MFT (Master-Dateitabelle) und erhöht das Risiko einer Datenbeschädigung, während die Fähigkeit zur einfachen Wiederherstellung von Daten verringert wird. Mit anderen Worten, die Grenzen wären der Wiederherstellungssoftware nicht vollständig bekannt. Während eine logische Sektorgröße von 4096 KB für große Dateien fantastisch ist, sind es für einen PC mit normalem Alltagsgebrauch nur ein paar Nullen. Nun, mit diesen Worten: Es besteht die Möglichkeit, Daten in der MFT selbst zu speichern, wenn es sich um Daten handelt, die kleiner als die logische Sektorgröße sind. Dies bedeutet jedoch, dass Ihre MFT sehr groß wird und die Daten zweimal geschrieben werden (auf Ihrer Festplatte befinden sich zwei Kopien der MFT). Sie müssten auch die maximale Größe der MFT angeben, die zu Problemen führen kann, wenn entweder die maximale Größe erreicht wird oder die Laufwerksauslastung die für die MFT freie Größe überschreitet. All dies basiert auf der Verwendung eines NTFS-Dateisystems. Auf der helleren Seite können Sie mit NTFS die native Komprimierung für Dateien auf Blockebene für alle logischen Sektoren mit einer Größe von 4 MB oder weniger verwenden. Diese Einschränkung wird aufgrund der Funktionsweise der NTFS-Komprimierung angewendet. 4-MB-Blöcke werden unabhängig von der Größe des logischen Sektors gelesen und komprimiert. Dies ist natürlich
Also, klärt das die Dinge für Sie ein bisschen auf?
quelle
quelle