GNU/Linux >> Znalost Linux >  >> Linux

Optimalizace velikosti logického sektoru pro velikost fyzického sektoru 4096 Hdd?

U mnoha nových pevných disků je velikost fyzického sektoru 4096. Bylo by možné přimět systém, aby používal velikost logického sektoru stejné velikosti namísto výchozí velikosti logického sektoru 512?

Urychlí to hromadné čtení a zápis?
Kde to lze nakonfigurovat?

Přijatá odpověď:

512 bajtů není ve skutečnosti výchozí velikost sektoru. Záleží na vašem hardwaru.

Jaké velikosti fyzických/logických sektorů hlásí váš disk, můžete zobrazit pomocí /sys pseudo souborový systém, například:

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

Jaký je rozdíl mezi těmito dvěma hodnotami?

  • physical_block_size je minimální velikost bloku, který je jednotka schopna zapsat v atomické operaci.
  • logical_block_size je nejmenší velikost, kterou je disk schopen zapisovat (viz dokumentace linuxového jádra).

Pokud tedy máte 4k disk, dává smysl, že váš zásobník úložiště (souborový systém atd.) používá něco rovného nebo většího, než je velikost fyzického sektoru.

Tyto hodnoty jsou také zobrazeny v nejnovějších verzích fdisk , například:

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

Na současných linuxových distribucích jsou programy (které by se měly starat o optimální velikost sektoru) jako mkfs.xfs ve výchozím nastavení vybere optimální velikost sektoru (např. 4096 bajtů).

Ale můžete to také explicitně specifikovat pomocí volby, například:

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

Nebo:

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

V každém případě většina mkfs varianty také zobrazí použitou velikost bloku během provádění.

Pro existující souborový systém lze velikost bloku určit příkazem jako:

# 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

Nebo:

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

Nebo:

# 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

Při vytváření souborového systému na oddílu je další věcí, kterou je třeba zkontrolovat, zda je počáteční adresa oddílu skutečně zarovnána s velikostí fyzického bloku. Podívejte se například na fdisk -l výstup, převést počáteční adresy na bajty, vydělit je velikostí fyzického bloku – připomenutí musí být nulové, pokud jsou oddíly zarovnány.

Související:Linux – Jak otestovat, zda byl binární soubor Linuxu zkompilován jako kód nezávislý na pozici?
Linux
  1. Co definuje maximální velikost pro jeden příkazový argument?

  2. Jak hledat soubory podle velikosti a přípony?

  3. Co jsou tedy logická jádra CPU (na rozdíl od fyzických jader CPU)?

  1. Jak zkontrolovat špatné bloky na fyzickém svazku LVM?

  2. Jak zkontrolovat velikost haldy pro proces v Linuxu

  3. Vyměňte velikost oddílu za 4 GB RAM

  1. Proč je velikost adresáře v unixu vždy 4096 bajtů?

  2. Dobrá velikost bloku pro klonování disku pomocí diskdump (dd)

  3. Celkové využití disku pro konkrétního uživatele