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 :
# 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?
- Dies
physical_block_size
ist die minimale Größe eines Blocks, den das Laufwerk in einer atomaren Operation schreiben kann.
- Dies
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:
# fdisk -l /dev/sda
[..]
Sector size (logical/physical): 512 bytes / 4096 bytes
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:
# mkfs.xfs -f -s size=4096 /dev/sda
Oder:
# mkfs.ext4 -F -b 4096 /dev/sda
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:
# 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. 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.
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).