Desvendando o Tamanho do Bloco: Por Que 4K, 8K ou 128K Importam (e Como Escolher)

      17 de julho de 2025 Elena Kovacs 8 min de leitura
      Desvendando o Tamanho do Bloco: Por Que 4K, 8K ou 128K Importam (e Como Escolher)

      O tamanho do bloco é um dos segredos mais mal compreendidos no mundo do armazenamento. Ignorá-lo pode levar a gargalos de performance severos, mesmo com hardwar...

      Compartilhar:

      Desvendando o Tamanho do Bloco: Por Que 4K, 8K ou 128K Importam (e Como Escolher)

      O tamanho do bloco é um dos segredos mais mal compreendidos no mundo do armazenamento. Ignorá-lo pode levar a gargalos de performance severos, mesmo com hardware de ponta. Não existe um tamanho único que sirva para todos os casos. A escolha correta depende totalmente do seu workload. Vamos mergulhar fundo.

      O Problema do Tamanho do Bloco: Uma Escolha, Múltiplas Consequências

      Imagine que você precisa transportar 1000 bolinhas de gude. Você pode usar sacos pequenos (4 bolinhas por saco), sacos médios (8 bolinhas) ou sacos gigantes (128 bolinhas). Qual é a melhor opção? Depende! Se você precisa entregar as bolinhas em locais diferentes, sacos pequenos são melhores. Se você precisa transportar tudo de uma vez, sacos grandes são mais eficientes.

      O mesmo acontece com o tamanho do bloco. Escolher o tamanho errado pode resultar em:

      • IOPS reduzidas: Menos operações de entrada/saída por segundo, o que afeta a velocidade geral do sistema.
      • Throughput baixo: Menor taxa de transferência de dados, impactando a velocidade de leitura e escrita de arquivos grandes.
      • Latência alta: Maior tempo de resposta, causando lentidão em aplicações interativas.
      • Desgaste prematuro: Em SSDs, o "write amplification" pode aumentar drasticamente com tamanhos de bloco mal escolhidos.

      Definição de Tamanho de Bloco: Uma Camada de Abstração

      Para entender o impacto do tamanho do bloco, precisamos diferenciar entre o que é físico e o que é lógico.

      • Setor Físico: A menor unidade de armazenamento em um disco rígido (HDD) ou unidade de estado sólido (SSD). Historicamente, 512 bytes. Hoje, muitos discos usam setores de 4096 bytes (4K), também conhecidos como "advanced format".

      • Bloco Lógico: Uma unidade de dados gerenciada pelo sistema de arquivos (filesystem). É uma abstração sobre os setores físicos. O tamanho do bloco lógico é configurável e pode ser diferente do tamanho do setor físico.

      Pense nisso como um LEGO. O setor físico é a menor peça do LEGO. O bloco lógico é uma estrutura que você constrói com essas peças.

      A complexidade aumenta quando consideramos outras camadas:

      • RAID: Um arranjo de discos que combina múltiplos discos físicos em um único volume lógico. O RAID também tem seu próprio tamanho de "stripe", que afeta o desempenho.

      • Virtualização (VMs): As máquinas virtuais adicionam outra camada de abstração. O sistema de arquivos dentro da VM tem seu próprio tamanho de bloco, que pode ser diferente do sistema de arquivos do host.

      Impacto do tamanho do bloco (4K/8K/128K) em diferentes workloads

      Impacto em Workloads de Pequenos Arquivos (Random I/O)

      Workloads de pequenos arquivos são caracterizados por muitas operações de leitura e escrita aleatórias, envolvendo arquivos pequenos. Exemplos:

      • Bancos de dados: Consultas e atualizações em tabelas.
      • Boot de sistemas operacionais: Carregamento de arquivos de sistema.
      • Servidores web: Servindo pequenas imagens e arquivos HTML.

      Em workloads de pequenos arquivos, um tamanho de bloco muito grande pode levar a um problema chamado "internal fragmentation" (fragmentação interna).

      Imagine que você tem um arquivo de 1 KB e seu tamanho de bloco é 4 KB. O sistema de arquivos aloca um bloco inteiro de 4 KB para armazenar esse arquivo de 1 KB. Os 3 KB restantes são desperdiçados. Isso é fragmentação interna.

      Com muitos arquivos pequenos, essa fragmentação pode consumir uma quantidade significativa de espaço em disco e reduzir a eficiência do armazenamento.

      Além disso, um tamanho de bloco grande pode aumentar a latência. Para ler um pequeno arquivo, o sistema precisa ler um bloco inteiro, mesmo que a maior parte do bloco não seja necessária.

      Modelo Mental: Para workloads de pequenos arquivos, um tamanho de bloco menor (4K ou 8K) geralmente oferece melhor desempenho, pois reduz a fragmentação interna e a latência.

      Impacto em Workloads de Grandes Arquivos (Sequential I/O)

      Workloads de grandes arquivos são caracterizados por operações de leitura e escrita sequenciais, envolvendo arquivos grandes. Exemplos:

      • Streaming de vídeo: Leitura contínua de arquivos de vídeo.
      • Backups: Escrita de grandes arquivos de backup.
      • Edição de vídeo: Leitura e escrita de arquivos de vídeo grandes.

      Em workloads de grandes arquivos, um tamanho de bloco muito pequeno pode levar a um problema de "head movements" (movimentos da cabeça de leitura/escrita) em HDDs.

      Em um HDD, a cabeça de leitura/escrita precisa se mover fisicamente para diferentes posições no disco para ler ou escrever dados. Quanto menor o tamanho do bloco, mais movimentos a cabeça precisa fazer para ler ou escrever um arquivo grande. Esses movimentos consomem tempo e reduzem o throughput.

      Com SSDs e NVMe, o problema de "head movements" é menos relevante, pois não há partes móveis. No entanto, um tamanho de bloco muito pequeno ainda pode reduzir o throughput devido à sobrecarga de gerenciamento de um grande número de blocos.

      Modelo Mental: Para workloads de grandes arquivos, um tamanho de bloco maior (64K ou 128K) geralmente oferece melhor desempenho, pois reduz o número de operações de I/O necessárias e maximiza o throughput.

      Trade-offs: Latência vs Throughput e Write Amplification

      A escolha do tamanho do bloco envolve um trade-off entre latência e throughput.

      • Latência: O tempo que leva para concluir uma única operação de I/O. Tamanhos de bloco menores geralmente levam a menor latência, pois menos dados precisam ser lidos ou escritos para cada operação.

      • Throughput: A quantidade de dados que pode ser lida ou escrita em um determinado período de tempo. Tamanhos de bloco maiores geralmente levam a maior throughput, pois permitem que mais dados sejam transferidos por operação.

      Além disso, em SSDs, o tamanho do bloco afeta o "write amplification". Write amplification é a razão entre a quantidade de dados realmente escrita no SSD e a quantidade de dados escrita pelo sistema operacional.

      Um tamanho de bloco muito pequeno pode aumentar o write amplification, pois o SSD precisa escrever mais dados internamente para acomodar as operações de escrita. Isso pode reduzir a vida útil do SSD.

      Modelo Mental: A escolha do tamanho do bloco é um ato de equilíbrio. Você precisa considerar as necessidades específicas do seu workload e encontrar um tamanho que minimize a latência e maximize o throughput, sem aumentar excessivamente o write amplification (em SSDs).

      Como Escolher o Tamanho Certo: Um Guia Prático

      Aqui estão algumas diretrizes para escolher o tamanho do bloco certo para diferentes cenários:

      • Bancos de Dados: 4K ou 8K. Minimize a latência para consultas rápidas.
      • Máquinas Virtuais (VMs): 4K ou 8K. Considere o workload dentro da VM. Se a VM hospeda um banco de dados, use 4K. Se a VM hospeda um servidor de arquivos, use 64K ou 128K.
      • Servidor de Arquivos (Compartilhamento de Arquivos): 64K ou 128K. Otimize para throughput, especialmente se muitos usuários estiverem acessando arquivos grandes simultaneamente.
      • Object Storage (S3, MinIO): 128K ou maior. Otimize para throughput e armazenamento eficiente de objetos grandes.
      • HDDs: 64K ou 128K. Minimize os movimentos da cabeça de leitura/escrita.
      • SSDs/NVMe: 8K, 16K, 32K. Experimente para encontrar o melhor equilíbrio entre latência, throughput e write amplification.

      Importante: Estas são apenas diretrizes. A melhor maneira de escolher o tamanho do bloco certo é testar diferentes tamanhos com seu workload específico.

      Como Medir e Ajustar: Ferramentas e Exemplos

      Para medir o impacto do tamanho do bloco, você pode usar ferramentas como:

      • fio (Flexible I/O Tester): Uma ferramenta poderosa para gerar diferentes tipos de workloads e medir o desempenho do armazenamento.

        # Exemplo: Medir IOPS com tamanho de bloco de 4K
        fio --name=test --ioengine=libaio --filename=/dev/sda --bs=4k --direct=1 --rw=randrw --rwmixread=70 --iodepth=32 --numjobs=4 --time_based --runtime=60 --group_reporting
        
        # Exemplo: Medir throughput com tamanho de bloco de 128K
        fio --name=test --ioengine=libaio --filename=/dev/sda --bs=128k --direct=1 --rw=read --iodepth=32 --numjobs=4 --time_based --runtime=60 --group_reporting
        
      • mkfs (Make Filesystem): Uma ferramenta para criar sistemas de arquivos. Permite especificar o tamanho do bloco.

        # Exemplo: Criar um sistema de arquivos ext4 com tamanho de bloco de 4K
        mkfs.ext4 -b 4096 /dev/sdb1
        
        # Exemplo: Criar um sistema de arquivos xfs com tamanho de bloco de 64K
        mkfs.xfs -b size=64k /dev/sdb1
        
      • LVM (Logical Volume Manager): Uma ferramenta para gerenciar volumes lógicos. Permite criar volumes com diferentes tamanhos de "stripe" (equivalente ao tamanho do bloco em RAID).

      Ao usar essas ferramentas, siga estas etapas:

      1. Defina seu workload: Identifique os tipos de operações de I/O que seu sistema realiza (leitura/escrita, sequencial/aleatório, tamanho dos arquivos).
      2. Escolha um tamanho de bloco inicial: Use as diretrizes acima como ponto de partida.
      3. Meça o desempenho: Use fio para medir IOPS, throughput e latência com o tamanho de bloco escolhido.
      4. Ajuste o tamanho do bloco: Aumente ou diminua o tamanho do bloco e repita as etapas 3 e 4 até encontrar o melhor desempenho.

      O Que Levar Disso: O Tamanho do Bloco É Uma Ferramenta, Use-a Com Sabedoria

      O tamanho do bloco é um parâmetro crítico que afeta o desempenho do armazenamento. Não existe uma solução mágica. A escolha correta depende do seu workload específico. Ao entender os trade-offs envolvidos e usar as ferramentas certas para medir o desempenho, você pode otimizar o tamanho do bloco para obter o máximo de desempenho do seu sistema. Ignorar essa otimização é como tentar usar uma chave de fenda para martelar um prego - você pode conseguir, mas não será eficiente. E, no mundo da infraestrutura, eficiência é tudo.

      #Storage #Server
      Elena Kovacs

      Elena Kovacs

      Arquiteta de Cloud Infrastructure

      Focada em NVMe-oF e storage definido por software. Projeta clusters de petabytes para grandes provedores de nuvem.