Setores de disco
Um disco possui um tamanho de setor fixo, normalmente 512 bytes ou 4096 bytes em alguns discos modernos; esses discos também terão um modo no qual emulam setores de 512 bytes. O disco terá faixas com números variados de setores; as faixas mais próximas à parte externa do disco têm mais setores, pois têm mais espaço para uma dada densidade de bits. Isso permite um uso mais eficiente do espaço em disco; normalmente uma faixa terá algo como 1.000 setores de 512 bytes em um disco moderno.
Algumas estruturas de formatação também podem incluir informações de correção de erros nos segundos, que se manifestam nos discos sendo formatados em baixo nível com setores de 520 ou 528 bytes. Nesse caso, o setor ainda possui 512 bytes de dados do usuário. Nem o Windows nem o Linux suportam isso diretamente, embora o i5OS (IBM iSeries) e vários controladores SAN o façam.
Normalmente, o setor / cabeça / faixa é traduzido em um endereço de bloco lógico; devido a problemas históricos com compatibilidade com versões anteriores, a geometria (cabeças x setores x faixas) vista pelo sistema operacional (particularmente em discos IDE e SATA) normalmente tem pouco a ver com sua estrutura física.
Tamanho da faixa RAID
Um controlador RAID pode ter um tamanho de faixa para uma matriz usando faixas (por exemplo, RAID-5 ou RAID-10). Se a matriz tiver (por exemplo) uma faixa de 128k, cada disco terá 128k de dados contíguos e o próximo conjunto de dados estará no próximo disco. Normalmente, você pode esperar obter aproximadamente uma faixa por rotação do disco, portanto, o tamanho da faixa pode afetar o desempenho de determinadas cargas de trabalho.
Alinhamento de partição
Uma partição de disco pode ou não se alinhar exatamente com uma faixa RAID e pode causar degradação no desempenho devido a leituras divididas, se não estiver alinhada. Alguns sistemas (por exemplo, servidor Windows 2008) configuram automaticamente as partições para se alinharem aos tamanhos das faixas de volume do disco. Alguns (por exemplo, servidor Windows 2003) não, e você precisa usar um utilitário de partição que suporte o alinhamento de faixas para garantir que sim.
Tamanho do bloco do sistema de arquivos
O sistema de arquivos alocará blocos de armazenamento em pedaços de um determinado tamanho. Geralmente isso é configurável - por exemplo, o NTFS suporta unidades de alocação de (IIRC) 4K a 64K. O desalinhamento de partições e blocos do sistema de arquivos para faixas RAID pode fazer com que uma única leitura do bloco do sistema de arquivos gere vários acessos ao disco, onde apenas um seria necessário se o bloco do sistema de arquivos estivesse alinhado corretamente com as faixas RAID.
Tamanho do bloco do banco de dados
O banco de dados alocará espaço em uma tabela ou índice em um determinado tamanho de bloco. No caso do SQL Server, esse é 8K e 8K é o padrão em muitos sistemas. Em alguns sistemas como Oracle, isso é configurável e, no PostgreSQL, é uma opção de tempo de construção. Na maioria dos sistemas, a alocação de espaço para tabelas é normalmente feita em blocos maiores, com blocos alocados dentro desses blocos.
O desalinhamento do sistema de arquivos e dos blocos de alocação de dados pode gerar várias E / Ss para uma única gravação de bloco, o que pode gerar uma penalidade no desempenho.
Chunking de E / S
Normalmente, um DBMS efetua sua E / S em pedaços de mais de um bloco. Por exemplo, no SQL Server, todas as E / S são feitas em blocos de 8 blocos, 64k no total). No Oracle, isso é configurável. A inspeção casual dos documentos do PostgreSQL não revela uma descrição específica se o PostgreSQL faz isso, então não tenho certeza de como ele funciona nesta plataforma.
Quando o bloco de E / S maior que o tamanho do bloco do sistema de arquivos ou está desalinhado com os limites da faixa RAID, uma gravação em disco do banco de dados pode causar várias gravações em disco, o que gera uma penalidade no desempenho.
Uso de espaço em disco
Nenhum espaço em disco é desperdiçado - a E / S do banco de dados utilizará uma ou mais operações de E / S físicas no disco para concluir - mas a E / S ajustada incorretamente pode gerar ineficiências que retardarão o banco de dados. As principais coisas que precisam estar alinhadas são:
Faixas e partições RAID - a partição deve começar em um limite de faixa RAID.
Alocação de E / S do sistema de arquivos e limites de faixa / partição de ataque - um limite de faixa RAID deve estar alinhado com uma unidade de alocação do sistema de arquivos e deve ser um múltiplo do tamanho da unidade de alocação do sistema de arquivos.
Tamanho de gravação em disco e tamanho da unidade de alocação do sistema de arquivos. Deve haver um relacionamento 1: 1 entre operações de E / S do banco de dados e operações de E / S do sistema de arquivos.
O desalinhamento não cria um problema de integridade de dados maior do que estaria presente. O banco de dados e o sistema de arquivos possuem mecanismos para garantir que as operações do sistema de arquivos sejam atômicas. Geralmente, uma falha no disco resultará em perda de dados, mas não em problemas de integridade.