512 bytes não é o tamanho padrão do setor. Depende do seu hardware.
Você pode exibir quais tamanhos de setor físico / lógico seu disco reporta por meio do pseudo sistema de arquivos /sys
, por exemplo:
# cat /sys/block/sda/queue/physical_block_size
4096
# cat /sys/block/sda/queue/logical_block_size
512
Qual é a diferença entre esses dois valores?
- O
physical_block_size
é o tamanho mínimo de um bloco que a unidade pode gravar em uma operação atômica. - O
logical_block_size
é o menor tamanho que a unidade é capaz de gravar (cf. a documentação do kernel do Linux).
Assim, se você tem uma unidade de 4k, faz sentido que sua pilha de armazenamento (sistema de arquivos, etc.) use algo igual ou maior que o tamanho do setor físico.
Esses valores também são exibidos em versões recentes de fdisk
, por exemplo:
# fdisk -l /dev/sda
[..]
Sector size (logical/physical): 512 bytes / 4096 bytes
Nas distribuições de linux atuais, os programas (que devem se preocupar com o tamanho ideal do setor) como mkfs.xfs
escolherão o tamanho ideal do setor por padrão (por exemplo, 4096 bytes).
Mas você também pode especificá-lo explicitamente por meio de uma opção, por exemplo:
# mkfs.xfs -f -s size=4096 /dev/sda
Ou:
# mkfs.ext4 -F -b 4096 /dev/sda
Em qualquer caso, a maioria das variantes mkfs
também exibirá o tamanho do bloco usado durante a execução.
Para um sistema de arquivos existente, o tamanho do bloco pode ser determinado com um comando como:
# 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
Ou:
# tune2fs -l /dev/sda
Block size: 4096
Fragment size: 4096
Ou:
# 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
Ao criar o sistema de arquivos em uma partição, outra coisa a verificar é se o endereço inicial da partição está realmente alinhado ao tamanho do bloco físico. Por exemplo, observe a fdisk -l
output, converta os endereços iniciais em bytes, divida-os pelo tamanho do bloco físico - o lembrete deve ser zero se as partições estiverem alinhadas.