No armazenamento de dados de computador, distribuição de dados (do inglês, data striping) é a técnica de segmentar dados logicamente sequenciais, como um arquivo, de modo que os segmentos consecutivos sejam armazenados em diferentes dispositivos de armazenamento físico.
A distribuição é útil quando um dispositivo de processamento solicita dados mais rapidamente do que um único dispositivo de armazenamento pode fornecer. Ao espalhar os segmentos por vários dispositivos que podem ser acessados simultaneamente, a taxa de transferência (throughput) total de dados é aumentada. Também é um método útil para balancear a carga de E/S (I/O) em uma matriz de discos. A distribuição é usada em unidades de disco em matrizes redundantes de discos independentes (RAID), controladores de interface de rede, matrizes de discos, computadores diferentes em sistemas de arquivos em cluster e armazenamento em grade, e em RAM em alguns sistemas.
Método Um método de distribuição é feito intercalando segmentos sequenciais em dispositivos de armazenamento de maneira alternada (round-robin) a partir do início da sequência de dados. Isso funciona bem para fluxo de dados (streaming), mas os acessos aleatórios subsequentes exigirão o conhecimento de qual dispositivo contém os dados. Se os dados forem armazenados de forma que o endereço físico de cada segmento de dados receba um mapeamento um para um para um dispositivo específico, o dispositivo para acessar cada segmento solicitado pode ser calculado a partir do endereço sem saber o deslocamento (offset) dos dados dentro da sequência completa.
Outros métodos podem ser empregados nos quais os segmentos sequenciais não são armazenados em dispositivos sequenciais. Essa intercalação não sequencial pode trazer benefícios em alguns esquemas de detecção e correção de erros.
Vantagens e desvantagens As vantagens da distribuição incluem desempenho e taxa de transferência. A intercalação temporal sequencial dos acessos aos dados permite que a menor taxa de transferência de acesso a dados de cada dispositivo de armazenamento seja cumulativamente multiplicada pelo número de dispositivos de armazenamento empregados. O aumento da taxa de transferência permite que o dispositivo de processamento de dados continue seu trabalho sem interrupção e, assim, termine seus procedimentos mais rapidamente. Isso se manifesta em um melhor desempenho do processamento de dados.
Como diferentes segmentos de dados são mantidos em diferentes dispositivos de armazenamento, a falha de um único dispositivo causa a corrupção de toda a sequência de dados. Efetivamente, a taxa de falha da matriz de dispositivos de armazenamento é igual à soma da taxa de falha de cada dispositivo de armazenamento. Essa desvantagem da distribuição pode ser superada pelo armazenamento de informações redundantes, como paridade, para fins de correção de erros. Em um sistema desse tipo, a desvantagem é superada à custa da necessidade de armazenamento extra.
Terminologia Os segmentos de dados sequenciais gravados ou lidos de um disco antes que a operação continue no próximo disco são geralmente chamados de chunks, strides ou stripe units (unidades de faixa), enquanto seus grupos lógicos que formam operações distribuídas únicas são chamados de strips ou stripes (faixas). A quantidade de dados em um chunk (unidade de faixa), frequentemente denominada em bytes, é referida de várias formas como chunk size (tamanho do chunk), stride size, stripe size (tamanho da faixa), stripe depth (profundidade da faixa) ou stripe length (comprimento da faixa). O número de discos de dados na matriz às vezes é chamado de stripe width (largura da faixa), mas também pode se referir à quantidade de dados dentro de uma faixa.
A quantidade de dados em uma faixa multiplicada pelo número de discos de dados na matriz (ou seja, profundidade da faixa vezes a largura da faixa, o que na analogia geométrica resultaria em uma área) é às vezes chamada de tamanho da faixa ou largura da faixa."Stripe depth is the size of the stripe, sometimes called stripe unit. Stripe width is the product of the stripe depth and the number of drives in the striped set." A wide striping (distribuição ampla) ocorre quando os chunks de dados são espalhados por várias matrizes, possivelmente por todas as unidades do sistema. A narrow striping (distribuição estreita) ocorre quando os chunks de dados são espalhados pelas unidades de uma única matriz.
Aplicações A distribuição de dados é usada em alguns bancos de dados, como o Sybase, e em certos dispositivos RAID sob controle de software ou hardware, como o subsistema IBM 9394 RAMAC Array da IBM. Sistemas de arquivos de clusters também usam distribuição. O Oracle Automatic Storage Management (ASM) permite que os arquivos do ASM sejam distribuídos de forma grossa (coarse) ou fina (fine).
RAID Em algumas configurações de RAID, como o RAID 0, a falha de uma única unidade membro da matriz RAID faz com que todos os dados armazenados sejam perdidos. Em outras configurações de RAID, como um RAID 5 que contém paridade distribuída e fornece redundância, se uma unidade membro falhar, os dados podem ser restaurados usando as outras unidades da matriz.
LVM2 A distribuição de dados também pode ser alcançada com o Gerenciador de Volume Lógico (LVM) do Linux. O sistema LVM permite o ajuste da granularidade do padrão de distribuição. As ferramentas do LVM permitem a implementação da distribuição de dados em conjunto com o espelhamento. O LVM oferece o benefício adicional de cache de leitura e gravação em NVM Express para armazenamento rotativo lento. O LVM possui outras vantagens que não estão diretamente relacionadas à distribuição de dados (como snapshots, redimensionamento dinâmico, etc.).
Btrfs e ZFS Possuem recursos semelhantes ao RAID, mas com a segurança da integridade do chunk para detectar blocos defeituosos, além da flexibilidade adicional de adicionar números arbitrários de unidades extras. Eles também têm outras vantagens que não estão diretamente relacionadas à distribuição de dados (copy-on-write, etc.).
Ver também Alinhamento de partição Agregação de links
Referências
Categoria:Particionamento de dados Categoria:RAID Categoria:Tecnologia de balanceamento