Ist die Standardgröße des physischen Sektors von 512 Byte für SSD-Festplatten unter Linux geeignet?

10

GSmartControl und andere Kommandozeilen - Tool (wie fdisk, smartctl, cat /sys/block/sd*/queue/hw_sector_size, cat /sys/block/sd*/queue/physical_block_size) I Bericht für beide gleich meine Platten verwendet hatte:

Sector Size: 512 bytes logical/physical

Dies ist eine Standardinstallation von Ubuntu 18.10 (später aktualisiert auf 19.04). Der stat -fBefehl auf beiden Datenträgern meldet jedoch:

Block size: 4096       Fundamental block size: 4096

Meine beiden Festplatten sind SSDs und AFAIK- SSD-Festplatten benötigen eine Sektorgröße von 4 KB . Ist das in Ordnung oder fehlt mir etwas? Stellen die von stat(= 4K) zurückgegebenen Informationen sicher, dass das Betriebssystem immer E / A-Vorgänge in Vielfachen von 4 KB an die Festplatte sendet und diese Blöcke niemals 4K-Grenzen überschreiten (E / A-Blöcke werden immer auf 4 KB ausgerichtet)?

Bitte beachten Sie die folgende Ausgabe ( sdb2ist meine Root-Partition , sdaist meine /homeFestplatte):

# fdisk -l /dev/sd?
Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Disk model: SanDisk SDSSDH35
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdb: 238.5 GiB, 256060514304 bytes, 500118192 sectors
Disk model: ADATA SU800NS38 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: xxxx....

Device       Start       End   Sectors  Size Type
/dev/sdb1     2048   1050623   1048576  512M EFI System
/dev/sdb2  1050624 500117503 499066880  238G Linux filesystem

# df / /home
Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/sdb2      244568380  17799136 214276188   8% /
/dev/sda       479670976 129685112 325550152  29% /home
FedonKadifeli
quelle
Ja. Es enthält hilfreiche Informationen. Ich habe jedoch keine maßgebliche Antwort auf die Frage gefunden: Stellen die von stat (4K) zurückgegebenen Informationen sicher, dass das Betriebssystem immer E / A-Vorgänge in Vielfachen von 4 KB an die Festplatte sendet und diese Blöcke niemals 4K-Grenzen überschreiten (E / A-Blöcke immer auf 4K ausgerichtet sein)?
FedonKadifeli
Ich weiß nicht, was "stat (4K)" ist. Die meisten modernen Betriebssysteme wissen jedoch, wie man mit nativen 4K-E / A-Übertragungen umgeht. Und nein, das bedeutet nicht, dass Blöcke niemals 4K-Grenzen auf der Festplatte überschreiten, wenn die Partitionen nicht richtig ausgerichtet sind. Verwenden Sie fdisk -ldiese Option , um nach Ausrichtungsproblemen zu suchen. Und anscheinend arbeiten SSDs aufgrund ihrer physischen Konstruktion etwas anders, aber ich bin kein Experte auf diesem Gebiet.
Heynnema

Antworten:

7

Früher waren 512-Byte-Sektoren die Norm für Festplatten. Das System verwendete zum Lesen / Schreiben von Sektoren jeweils nur einen Sektor, und das war das Beste, was die alten Festplatten leisten konnten.

Jetzt, da moderne Laufwerke so dicht, schnell und intelligent sind, verlangsamt das Lesen / Schreiben von Sektoren jeweils nur einen Sektor den Gesamtdurchsatz.

Der Trick war ... wie können Sie den Gesamtdurchsatz beschleunigen und trotzdem die Kompatibilität mit alten / Standard-Festplattensubsystemen aufrechterhalten? Sie erstellen eine Blockgröße von 4096, die aus acht physischen Sektoren mit 512 Byte besteht. 4096 ist jetzt die minimale Lese- / Schreibübertragung auf / von der Festplatte, wird jedoch in kompatiblen 512-Byte-Spannfuttern an das Betriebssystem übergeben.

Dies bedeutet, dass selbst wenn das System nur einen 512-Byte-Informationssektor benötigt, das Laufwerk acht 512-Byte-Sektoren liest, um diese abzurufen. Wenn das System jedoch die nächsten sieben Sektoren benötigt, werden diese bereits gelesen, sodass keine Festplatten-E / A auftreten müssen. Dies führt zu einer Geschwindigkeitssteigerung des Gesamtdurchsatzes.

Moderne Betriebssysteme können die nativen 4K-Blockgrößen moderner Laufwerke voll ausnutzen.

Heynnema
quelle
+1 aber 4096/512 = 8, daher denke ich, dass es 8 (logische) Sektoren von 512 b in einem physischen Sektor von 4096 b geben sollte. Ich verwende parted, um sowohl die logische als auch die physische Sektorgröße anzuzeigen.
Sudodus
@sudodus Guter Fang. Bearbeiten durchgeführt.
Heynnema
Aus diesem Grund ist es wichtig, Ihre Partitionen an einer 4k-Grenze auszurichten, da sonst jedes Laden / Speichern von 4k-Blöcken tatsächlich zwei Hardwaresektoren berührt. (Dateisysteme in Partitionen verwenden häufig 4k-Blöcke, die am Anfang der Partition ausgerichtet sind.) Einige Formatierungswerkzeuge richten die erste Partition um 1 MB aus, sodass ein ganzes MiB mit Ausnahme der Partitionstabelle nicht verwendet wird. Moderne Laufwerke geben ihre physische Sektorgröße als 4 KB an, getrennt von ihrer logischen Sektorgröße, die immer noch 512B beträgt.
Peter Cordes
@PeterCordes, Im ersten Mibibyte werden nicht nur der Bootsektor und die Partitionstabelle (in den ersten 512 Bytes) gespeichert. grubFügt in einer MSDOS-Partitionstabelle zusätzlichen Code zum Booten im BIOS-Modus in den ersten Mibibyte ein. (In einem GPT wird grubeine kleine Partition mit dem bios_grubFlag benötigt, damit dieser Code im BIOS-Modus gestartet werden kann.)
Sudodus
4

Laut Wikipedia "Advanced Format (AF) ist jedes Festplattensektorformat, das zum Speichern von Daten auf Festplatten verwendet wird, die 512, 520 oder 528 Byte pro Sektor überschreiten, z. B. die 4096-Byte-Sektoren eines Advanced Format Drive (AFD)." Advanced Format (AF) ist ein Festplattenformat, das nativ eine Sektorgröße von 4.096 Byte anstelle von 512 Byte verwendet. Um die Kompatibilität mit Legacy-Systemen zu gewährleisten, emulieren AF-Festplatten eine Sektorgröße von 512 Byte.

Ich habe die gleichen Ergebnisse erzielt wie beim Laufen stat -fund smartctlauf zwei SSDs. Beide SSDs wurden vom Betriebssystem bei der Installation automatisch erkannt und erforderten keine Konfiguration. Es scheint also, dass die erhaltenen Daten die Standardeinstellungen für Blockgröße und Sektorgröße sind.

Karel
quelle
@heynnema Ich kann nichts gegen "4096-Byte-Sektoren" unternehmen, da es aus Wikipedia kopiert wurde. Daher muss ich es so lassen, wie es in Wikipedia ist.
Karel
2
@heynnema: Die physische Größe ist viel größer. SSDs werden aus einem NAND-Flash-Speicher erstellt, der physisch in sogenannte "Löschblöcke" unterteilt ist. Diese können weitaus größer sein, 4 MB sind definitiv möglich.
MSalters
1

Ist die Standardgröße des physischen Sektors von 512 Byte für SSD-Festplatten unter Linux geeignet?

Meine beiden Festplatten sind SSDs und AFAIK-SSD-Festplatten benötigen eine Sektorgröße von 4 KB. Ist das in Ordnung oder fehlt mir etwas?

Alte Hardware und Betriebssysteme verwendeten 512-Byte-Sektoren, seit 2011 hat (fast) die gesamte Speicherhardware 4096 (oder größere ) Byte-Sektoren; Einige Hardware unterstützt jedoch die Emulation von 512-Byte-Sektoren für Legacy-Systeme. Es gibt Ausnahmen, die Samsung 840 EVO SSD hat Blöcke mit einer Größe von 2048 KB .

Für jeden 512-Byte-Block wird ein Fehlerkorrekturcode (ECC) berechnet. Wie Sie sich vorstellen können, benötigen ECC-Daten auch Speicherplatz. Es versteht sich von selbst, dass ein 4096-Byte-Sektor weniger ECC-Informationen benötigt als acht 512-Byte-Chunks, wenn die ECC-Algorithmen unverändert bleiben. Am Ende steigt die Gesamtspeicherkapazität einer Festplatte aufgrund des geringeren ECC-Datenaufwands.

Die Verwendung von 4K-Sektoren ist aus architektonischer Sicht sinnvoll, da andere Kennzahlen (wie x86-Speicherseiten und viele Dateisystemcluster) ebenfalls die Größe von 4 KB verwenden. Das erweiterte Format ermöglicht robustere ECC-Algorithmen, was angesichts der ständig wachsenden Kapazitäten wichtig ist. Controller verwenden zusätzliche Techniken, die über die Fehlerkorrektur hinausgehen, indem sie die Fehlereigenschaften des NAND-Flash-Speichers und das Workload-Verhalten verstehen.

Advanced Format (AF) ist ein beliebiges Festplattensektorformat, das zum Speichern von Daten auf Magnetplatten auf Festplattenlaufwerken (HDDs) verwendet wird und 512, 520 oder 528 Byte pro Sektor überschreitet, z. B. 4096, 4112, 4160 und 4224 Byte ( 4 KB) Sektoren eines Advanced Format Drive (AFD). Größere Sektoren ermöglichen die Integration stärkerer Fehlerkorrekturalgorithmen, um die Datenintegrität bei höheren Speicherdichten aufrechtzuerhalten.

Bei SCSI (SAS) -Datenträgern ist die RAID-Blockgröße aufgrund der standardisierten SCSI T10- Datenintegritätsfelder und der logischen fehlerhaften Blockprüfung, die auf jedem Block mit den Daten gespeichert ist, größer als eine JBOD-Blockgröße . Die SAS-RAID-Adapter unterstützen Festplattenblöcke, die auf 512 Datenbytes oder 4 KByte Daten basieren. Die RAID-Blockgröße für die 512 Festplatten beträgt 528 Byte pro Sektor und die RAID-Blockgröße für die 4K-Festplatten beträgt 4224 Byte pro Sektor.

Da Sie in den Speicher schreiben und keine physische Sektorgröße einer sich drehenden Festplatte, hat dies weniger Auswirkungen als sicherzustellen, dass Ihre Partitionen an der Größe des Löschblocks ausgerichtet sind . Trotzdem ist es am besten, über aktuelle Software und Hardware zu verfügen und eine 4K-Sektorgröße zu verwenden.

Die größere Sektorgröße wird von Intel empfohlen - " Optimale Leistung durch Änderungen der physischen SSD-Sektorgröße erzielen ".

rauben
quelle