Con molti nuovi dischi rigidi, la dimensione del settore fisico è 4096. Sarebbe possibile fare in modo che il sistema utilizzi una dimensione del settore logico della stessa dimensione, anziché la dimensione del settore logico predefinito di 512?
Velocerà le letture e le scritture di massa?
Dove può essere configurato?
Risposta accettata:
512 byte non è davvero la dimensione del settore predefinita. Dipende dal tuo hardware.
Puoi visualizzare le dimensioni del settore fisico/logico che il tuo disco riporta tramite il /sys
pseudo filesystem, ad esempio:
# cat /sys/block/sda/queue/physical_block_size
4096
# cat /sys/block/sda/queue/logical_block_size
512
Qual è la differenza tra questi due valori?
- Il
physical_block_size
è la dimensione minima di un blocco che l'unità è in grado di scrivere in un'operazione atomica. - Il
logical_block_size
è la dimensione più piccola che l'unità è in grado di scrivere (cfr. la documentazione del kernel linux).
Pertanto, se hai un'unità da 4k, ha senso che il tuo stack di archiviazione (filesystem ecc.) utilizzi qualcosa di uguale o maggiore della dimensione del settore fisico.
Questi valori vengono visualizzati anche nelle versioni recenti di fdisk
, ad esempio:
# fdisk -l /dev/sda
[..]
Sector size (logical/physical): 512 bytes / 4096 bytes
Sulle attuali distribuzioni Linux, programmi (che dovrebbero preoccuparsi della dimensione ottimale del settore) come mkfs.xfs
sceglierà la dimensione del settore ottimale per impostazione predefinita (ad es. 4096 byte).
Ma puoi anche specificarlo esplicitamente tramite un'opzione, ad esempio:
# mkfs.xfs -f -s size=4096 /dev/sda
Oppure:
# mkfs.ext4 -F -b 4096 /dev/sda
In ogni caso, la maggior parte dei mkfs
le varianti mostreranno anche la dimensione del blocco utilizzata durante l'esecuzione.
Per un filesystem esistente la dimensione del blocco può essere determinata con un comando come:
# 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
Oppure:
# tune2fs -l /dev/sda
Block size: 4096
Fragment size: 4096
Oppure:
# 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
Quando si crea il filesystem su una partizione, un'altra cosa da controllare è se l'indirizzo iniziale della partizione è effettivamente allineato alla dimensione del blocco fisico. Ad esempio, guarda fdisk -l
output, convertire gli indirizzi iniziali in byte, dividerli per la dimensione fisica del blocco:il promemoria deve essere zero se le partizioni sono allineate.