Esse é um tópico bastante complexo e depende do disco, do controlador de disco e das configurações do kernel.
Em geral, o kernel tentará ser o mais eficiente possível. Por exemplo, se você atualizar o mesmo bloco várias vezes em uma janela de tempo ajustável (geralmente 30 segundos ou mais) e não forçar explicitamente a sincronização até o disco toda vez, a maioria de suas operações de gravação só atualizará os dados no cache e somente o resultado final irá para o disco.
Se você escrever uma longa série de blocos consecutivos, o kernel certamente tentará executá-lo em tão poucos e grandes blocos quantos o controlador de armazenamento e o próprio disco permitirem.
O agendador de E / S do kernel também pode otimizar a ordem das operações de disco para obter o acesso mais eficiente ao disco. Essa otimização pode ser praticamente irrelevante em máquinas virtuais e em SSDs e, portanto, pode ser desativada. (Os SSDs são bastante rápidos, mesmo que você acesse blocos aleatórios de forma espingarda; em máquinas virtuais, o hipervisor geralmente refaz a otimização com base no conjunto inteiro de VMs e em todas as operações de disco, tentando otimizar o micro no nível de uma única VM é um esforço desperdiçado.)
Alguns discos podem ter restrições ou recomendações sobre tamanhos de operação de E / S:
# fdisk -l /dev/sdb
Disk /dev/sdb: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Por exemplo, esse HDD usa internamente tamanho de setor de 4k, embora emule setores tradicionais de disco de 512 bytes. Como resultado, um tamanho mínimo de E / S de 4k é especificado.