GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Optimieren der logischen Sektorgröße für die physische Sektorgröße 4096 Hdd?

Bei vielen neuen Festplatten beträgt die physische Sektorgröße 4096. Wäre es möglich, das System dazu zu bringen, eine logische Sektorgröße derselben Größe anstelle der standardmäßigen logischen Sektorgröße von 512 zu verwenden?

Wird es Massenlese- und -schreibvorgänge beschleunigen?
Wo kann es konfiguriert werden?

Akzeptierte Antwort:

512 Byte ist nicht wirklich die Standardsektorgröße. Das hängt von Ihrer Hardware ab.

Sie können anzeigen, welche physikalischen/logischen Sektorgrößen Ihre Festplatte über /sys meldet Pseudo-Dateisystem, zum Beispiel:

# cat /sys/block/sda/queue/physical_block_size
4096
# cat /sys/block/sda/queue/logical_block_size
512

Was ist der Unterschied zwischen diesen beiden Werten?

  • Die physical_block_size ist die minimale Größe eines Blocks, den das Laufwerk in einer atomaren Operation schreiben kann.
  • Die logical_block_size ist die kleinste Größe, die das Laufwerk schreiben kann (vgl. die Linux-Kernel-Dokumentation).

Wenn Sie also ein 4k-Laufwerk haben, ist es sinnvoll, dass Ihr Speicherstapel (Dateisystem usw.) etwas gleich oder größer als die physische Sektorgröße verwendet.

Diese Werte werden auch in neueren Versionen von fdisk angezeigt , zum Beispiel:

# fdisk -l /dev/sda
[..]
Sector size (logical/physical): 512 bytes / 4096 bytes

Auf aktuellen Linux-Distributionen, Programme (die sich um die optimale Sektorgröße kümmern sollten) wie mkfs.xfs wählt standardmäßig die optimale Sektorgröße (z. B. 4096 Bytes).

Sie können es aber auch explizit über eine Option angeben, zum Beispiel:

# mkfs.xfs -f -s size=4096 /dev/sda

Oder:

# mkfs.ext4 -F -b 4096 /dev/sda

Auf jeden Fall die meisten mkfs Varianten zeigen während der Ausführung auch die verwendete Blockgröße an.

Für ein bestehendes Dateisystem kann die Blockgröße mit einem Befehl wie:

ermittelt werden
# xfs_info /mnt
[..]
meta-data=                       sectsz=4096
data     =                       bsize=4096
naming   =version 2              bsize=4096
log      =internal               bsize=4096
         =                       sectsz=4096
realtime =none                   extsz=4096

Oder:

# tune2fs -l /dev/sda
Block size:               4096
Fragment size:            4096

Oder:

# btrfs inspect-internal dump-super /dev/sda | grep size
csum_size             4
sys_array_size        97
sectorsize            4096
nodesize              16384
leafsize              16384
stripesize            4096
dev_item.sector_size  4096

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. Sehen Sie sich zum Beispiel fdisk -l an Ausgabe, wandle die Startadressen in Bytes um, dividiere sie durch die physikalische Blockgröße – die Erinnerung muss Null sein, wenn die Partitionen ausgerichtet sind.

Verwandte:Linux – Wie kann man testen, ob eine Linux-Binärdatei als positionsunabhängiger Code kompiliert wurde?
Linux
  1. Was definiert die maximale Größe für ein einzelnes Befehlsargument?

  2. Was sind also logische CPU-Kerne (im Gegensatz zu physischen CPU-Kernen)?

  3. Tauschen Sie die Partitionsgröße gegen 4 GB RAM aus

  4. Warum ist die Größe eines Verzeichnisses unter Unix immer 4096 Bytes?

  5. Gute Blockgröße zum Klonen von Festplatten mit diskdump (dd)

Meine Lieblings-Linux-Befehle zum Optimieren von Webbildern

Befehls-Tutorial für Anfänger in Linux-Größe (6 Beispiele)

Verwaltung logischer Volumes unter Linux erklärt

Gesamte Festplattennutzung für einen bestimmten Benutzer

So bestimmen Sie die beste Bytegröße für den Befehl dd

Was ist die empfohlene Größe für eine Linux /boot-Partition?