Arquivo do Autor

RAID XII

26 de setembro de 2009

RAID-0

Tendo dois ou mais dispositivos aproximadamente do mesmo tamanho, é possível combinar suas capacidades de armazenamento, bem como seus desempenhos, através do acesso em paralelo.

Modifique ou crie o arquivo /etc/raidtab para descrever a sua configuração. Observe o exemplo:

    raiddev /dev/md0
    raid-level 0
    nr-raid-disks 2
    persistent-superblock 1
    chunk-size 4
    device /dev/hda6
    raid-disk 0
    device /dev/hda7
    raid-disk 1

Como no modo linear, não há suporte para discos reserva. RAID-0 não oferece redundância: se um disco falhar todo o conjunto irá falhar.

Se você já possui um dispositivo de RAID existente, execute o comando para interrompê-lo e forçar a construção. Crie o dispositivo de RAID através dos comandos:

    # raidstop /dev/md0
    # mkraid --force /dev/md0
    DESTROYING the contents of /dev/md0 in 5 seconds, Ctrl-C if unsure!
     handling MD device /dev/md0
    analyzing super-block
    disk 0: /dev/hda6, 1028128kB, raid superblock at 1028032kB
    disk 1: /dev/hda7, 1028128kB, raid superblock at 1028032kB
    #

Isto irá inicializar os superblocos e iniciar o dispositivo raid. Observando o arquivo /proc/mdstat temos:

    # cat /proc/mdstat
    Personalities : [raid0]
    read_ahead 1024 sectors
    md0 : active raid0 hda7[1] hda6[0] 2056064 blocks 4k chunks
    unused devices: <none>
    #

Agora o dispositivo /dev/md0 já está pronto. Pode ser criado um sistema de arquivos e ser montado para uso.

RAID Parte – XI

25 de setembro de 2009

Configuração de RAID

Vamos a parte BOA DO RAID AGORA!!!!!

Antes de configurar qualquer um dos níveis de RAID, siga os seguintes procedimentos:

  • Instale as ferramentas para RAID:
  • Observe conteúdo do arquivo /proc/mdstat:
  • Este arquivo você sempre irá verificar para checar as configurações de RAID. Observe que nenhum dispositivo de RAID está atualmente ativo.
  • Crie as partições que você desejar incluir em sua configuração de RAID, por exemplo:
  • O próximo passo dependerá do nível de RAID que você escolheu usar; estaremos vendo a seguir cada uma destas configurações.
    # rpm -ivh raidtools*
    raidtools ############################## #
    # cat /proc/mdstat
    Personalities : read_ahead not set
    unused devices: <none> #
    # fdisk /dev/hda
    Comando (tecle m para obter ajuda): n

3.4.1. Modo Linear

Se você tem duas ou mais partições que não são necessariamente do mesmo tamanho. Você poderá concatenar uma com a outra.

Crie o arquivo /etc/raidtab para descrever sua configuração. Uma raidtab para dois discos em modo linear, terá uma aparência semelhante a esta:

    raiddev /dev/md0
    raid-level linear
    nr-raid-disks 2
    chunk-size 32
    persistent-superblock 1
    device /dev/hda6
    raid-disk 0
    device /dev/hda7
    raid-disk 1

Nos exemplos utilizaremos duas ou três partições de aproximadamente 1GB, sendo elas hda5, hda6 e hda7, dependendo da configuração de RAID. Discos sobressalentes não são suportados aqui. Se um disco falhar, o arranjo irá falhar juntamente com ele. Não existem informações que possam ser colocadas em um disco sobressalente.

Para criar o arranjo execute o comando:

    # mkraid /dev/md0
    handling MD device /dev/md0
    analyzing super-block
    disk 0: /dev/hda6, 1028128kB, raid superblock at 1028032kB
    disk 1: /dev/hda7, 1028128kB, raid superblock at 1028032kB #

Isto irá inicializar o arranjo, escrever os blocos persistentes e deixar pronto para uso. Checando o arquivo /proc/mdstat você poderá ver que o arranjo está funcionando:

    # cat /proc/mdstat
    Personalities : [linear]
    read_ahead 1024 sectors
    md0 : active linear hda7[1] hda6[0] 2056064 blocks 32k rounding
    unused devices: <none>
    #

Agora você já pode criar um sistema de arquivos, como se fosse em um dispositivo normal:

    # mke2fs /dev/md0
    mke2fs 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    257024 inodes, 514016 blocks
    25700 blocks (5.00%) reserved for the super user
    First data block=0
    16 block groups
    32768 blocks per group, 32768 fragments per group
    16064 inodes per group
    Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912
    Writing inode tables: done
    Writing superblocks and filesystem accounting information: done

Criar um ponto de montagem e montar o dispositivo:

    # mkdir /mnt/md0
    # mount /dev/md0 /mnt/md0
    # df
    Filesystem 1k-blocks Used Available Use% Mounted on
    /dev/md0 2023760 20 1920940 0% /mnt/md0 #

Observe que o tamanho total é de aproximadamente 2GB, pelo fato de termos feito uma concatenação de duas unidades, cada uma com aproximadamente 1GB.

RAID Parte – X

24 de setembro de 2009

Comparação dos Níveis de RAID

Podemos fazer uma comparação entre os vários níveis de RAID, de acordo com desempenho (leitura, gravação e reconstrução), disponibilidade de dados e o número mínimo de unidades requeridas. Observe na tabela a descrição destes atributos para comparação dos níveis de RAID.

Tabela 3-1. Atributos de Comparação dos Vários Níveis de RAID

Nível de RAID Disponibilidade dos Dados Desempenho de Leitura Desempenho de Gravação Desempenho de Reconstrução Número Mínimo de Unidades Requeridas
RAID 0 Nenhuma Muito bom Muito bom Não disponível N
RAID 1 Excelente Muito bom Bom Bom 2N
RAID 4 Boa E/S seqüencial: Boa E/S transacional: Boa E/S seqüencial: Muito Boa E/S transacional: Ruim Satisfatória N + 1 (N pelo menos 2)
RAID 5 Boa E/S seqüencial: Boa E/S transacional: Muito Boa Satisfatória (a menos que o cache write-back seja usado) Ruim N + 1 (N pelo menos 2)
RAID 10 Excelente Muito boa Satisfatória Boa 2N
RAID 50 Excelente Muito boa Satisfatória Satisfatória N+2

RAID IX

23 de setembro de 2009

Desempenho de RAID

Utilizando RAID por software (MD), a possibilidade de acrescentar velocidade e avaliar o desempenho depende muito da configuração que você está usando. Para isto, nesta seção, iremos analisar algumas destas configurações.

Desempenho no MD RAID-0 e no MD RAID-linear

Se o sistema é altamente carregado com muitas operações de E/S (entrada e saída), estatisticamente, algumas operações irão para um disco, e algumas para os outros discos. Assim, o desempenho irá melhorar em um único disco grande. A melhora real depende muito dos dados reais, do tamanho das stripes, e de outros fatores. Em um sistema com uma baixa utilização de E/S, o desempenho é igual ao de um único disco.

Desempenho de Leitura no MD RAID-1

O MD implementa balanceamento de leitura, isto é, o código RAID-1 irá alternar entre cada um (dois ou mais) dos discos no espelho, fazendo leituras alternadas para cada um. Em uma situação de baixa E/S, isto não poderá mudar o desempenho total: você terá que esperar por um disco para completar a leitura. Porém, com dois discos em um ambiente de alta E/S, isto poderia aumentar duas vezes o desempenho de leitura, desde que as leituras possam ser emitidas para cada um dos discos em paralelo. Para N discos no espelho, a melhora do desempenho pode ser de 2N.

Desempenho de Escrita no MD RAID-1

Deve-se esperar a escrita ocorrer para todos os discos no espelho. Isto porque uma cópia dos dados deve ser escrita para cada um dos discos no espelho. Assim, o desempenho será aproximadamente igual ao desempenho de escrita para um único disco.

Desempenho de Leitura no MD RAID-4/5

Estatisticamente, um bloco pode estar em qualquer uma das unidades de disco, e assim o desempenho de leitura do RAID-4/5 é um tanto parecido com o do RAID-0. Isto irá depender dos dados, do tamanho da stripe e da aplicação. Não será tão bom quanto o desempenho de leitura de um arranjo espelhado.

Desempenho de Escrita no MD RAID-4/5

Será no geral consideravelmente mais lento do que aquele para um único disco. Isto porque a paridade deve ser escrita em um disco, assim como os dados em outro. Entretanto, para processar a nova paridade, a paridade antiga e os dados antigos devem ser lidos primeiramente. Os dados antigos, os dados novos e a paridade antiga devem ser todos comparados juntos, através da operação lógica XOR, para determinar a nova paridade: isto requer consideráveis ciclos de CPU em adição aos numerosos acessos ao disco.

RAID VIII

22 de setembro de 2009

Tipos Híbridos

Para suprir as deficiências de um nível ou outro de RAID, é possível usar um nível de RAID sobre outro, aproveitando por exemplo, a excelente performance de um determinado nível e a confiabilidade de outro. Isso tudo é claro, pagando o preço de uma maior quantidade de material.

Um exemplo é o RAID-10. Como o seu nome implica, é a combinação de discos espelhados (RAID-1) com a segmentação de dados (data stripping) (RAID-0).

O método de criação de um arranjo RAID-10 é diversificado. Em uma implementação RAID-0+1, os dados são segmentados através de grupos de discos espelhados, isto é, os dados são primeiro segmentados e para cada segmento é feito um espelho. Já em um RAID-1+0, os dados são primeiramente espelhados, e para cada espelho há a segmentação sobre vários discos.

RAID-10 oferece as vantagens da transferência de dados rápida de um arranjo espelhado, e as características de acessibilidade dos arranjos espelhados. A performance do sistema durante a reconstrução de um disco é tambem melhor que nos arranjos baseados em paridade, pois os dados são somente copiados do dispositivo sobrevivente.

O RAID-50 é um arranjo híbrido que usa as técnicas de RAID com paridade em conjunção com a segmentação de dados. Um arranjo RAID-50, é essencialmente um arranjo com as informações segmentadas através de dois ou mais arranjos RAID-5.

Dependendo do tamanho de cada segmento estabelecido durante a configuração do arranjo, estes arranjos híbridos podem oferecer os benefícios de acesso paralelo dos arranjos com paridade (alta velocidade na transferência de dados) ou de acesso independente dos arranjos com paridade (grande quantidade). Como em outros arranjos RAID com paridade, a reconstrução de um disco falho gera um impacto na performance do programa usando o arranjo.

RAID parte VII

17 de setembro de 2009

RAID-5

Este tipo de RAID largamente usado funciona similarmente ao RAID 4, mas supera alguns dos problemas mais comuns sofridos por esse tipo. As informações sobre paridade para os dados do arranjo são distribuídas ao longo de todos os discos do arranjo, ao invés de serem armazenadas em um disco dedicado.

Essa idéia de paridade distribuída reduz o gargalo de escrita (write bottleneck) que era o único disco de um RAID-4, porque agora as escritas concorrentes nem sempre requerem acesso às informações sobre paridade em um disco dedicado. Contudo, a performance de escrita geral ainda sofre por causa do processamento adicional causado pela leitura, recálculo e atualização da informação sobre paridade.

Para aumentar a performance de leitura de um arranjo RAID-5, o tamanho de cada segmento em que os dados são divididos pode ser otimizado para a aplicação que estiver usando o arranjo. A performance geral de um arranjo RAID-5 é equivalente ao de um RAID-4, exceto no caso de leituras seqüenciais, que reduzem a eficiência dos algoritmos de leitura por causa da distribuição das informações sobre paridade.

Como em outros arranjos baseados em paridade, a recuperação de dados em um arranjo RAID-5 é feita calculando a função XOR das informações dos discos restantes do arranjo. Pelo fato de que a informação sobre paridade é distribuída ao longo de todos os discos, a perda de qualquer disco reduz a disponibilidade de ambos os dados e informação sobre paridade, até a recuperação do disco que falhou. Isto pode causar degradação da performance de leitura e de escrita.

RAID parte VI

16 de setembro de 2009

RAID-4

Este é um tipo de arranjo segmentado, mas incorpora um método de proteção de dados mais prático. Ele usa informações sobre paridade para a recuperação de dados e as armazena em disco dedicado. Os discos restantes, usados para dados, são configurados para usarem grandes (tamanho medido em blocos) segmentos de dados, suficientemente grandes para acomodar um registro inteiro. Isto permite leituras independentes da informação armazenada, fazendo de RAID-4 um arranjo perfeitamente ajustado para ambientes transacionais que requerem muitas leituras pequenas e simultâneas.

Arranjos RAID-4 e outros arranjos que utilizam paridade fazem uso de um processo de recuperação de dados mais envolvente que arranjos espelhados, como RAID-1. A função ou exclusivo (XOR) dos dados e informações sobre paridade dos discos restantes é computada para reconstruir os dados do disco que falhou. Pelo fato de que todos os dados sobre paridade são escritos em um único disco, esse disco funciona como um gargalo durante as operações de escrita, reduzindo a performance durante estas operações (write bottleneck).

Sempre que os dados são escritos no arranjo, informações sobre paridade normalmente são lidas do disco de paridade e uma nova informação sobre paridade deve sempre ser escrita para o disco de paridade antes da próxima requisição de escrita ser realizada. Por causa dessas duas operações de E/S, o disco de paridade é o fator limitante da performance total do arranjo. Por causa dele requerer somente um disco adicional para proteção de dados, arranjos RAID-4 são mais baratos que arranjos RAID-1.

RAID parte V

12 de setembro de 2009

RAID-2 e RAID-3

Raramente são usados, e em algum momento ficaram obsoletos pelas novas tecnologias de disco. RAID-2 é similar ao RAID-4, mas armazena informação ECC (error correcting code), que é a informação de controle de erros, no lugar da paridade. Isto ofereceu pequena proteção adicional, visto que todas as unidades de disco mais novas incorporaram ECC internamente.

RAID-2 pode oferecer maior consistência dos dados se houver queda de energia durante a escrita. Baterias de segurança e um desligamento correto, porém, podem oferecer os mesmos benefícios. RAID-3 é similar ao RAID-4, exceto que ele usa o menor tamanho possível para a stripe. Como resultado, qualquer pedido de leitura invocará todos os discos, tornando as requisições de sobreposição de I/0 difíceis ou impossíveis.

A fim de evitar o atraso devido a latência rotacional, o RAID-3 exige que todos os eixos das unidades de disco estejam sincronizados. A maioria das unidades de disco mais recentes não possuem a habilidade de sincronização do eixo, ou se são capazes disto, faltam os conectores necessários, cabos e documentação do fabricante. Nem RAID-2 e nem RAID-3 são suportados pelos drivers de RAID por software no Linux.

RAID parte IV

11 de setembro de 2009

RAID-1

A forma mais simples de arranjo tolerante a falhas é o RAID-1. Baseado no conceito de espelhamento (mirroring), este arranjo consiste de vários grupos de dados armazenados em 2 ou mais dispositivos. Apesar de muitas implementações de RAID-1 envolverem dois grupos de dados (daí o termo espelho – mirror), três ou mais grupos podem ser criados se a alta confiabilidade for desejada.

Se ocorre uma falha em um disco de um arranjo RAID-1, leituras e gravações subseqüentes são direcionadas para o(s) disco(s) ainda em operação. Os dados então são reconstruídos em um disco de reposição (spare disk) usando dados do(s) disco(s) sobreviventes. O processo de reconstrução do espelho tem algum impacto sobre a performance de E/S do arranjo, pois todos os dados terão de ser lidos e copiados do(s) disco(s) intacto(s) para o disco de reposição (spare disk).

RAID-1 oferece alta disponibilidade de dados, porque no mínimo 2 grupos completos são armazenados. Conectando os discos primários e os discos espelhados em controladoras separadas, pode aumentar a tolerância a falhas pela eliminação da controladora como ponto único de falha.

Dentre os não híbridos, este nível tem o maior custo de armazenamento por requerer capacidade suficiente para armazenar no mínimo 2 grupos de dados. Este é melhor adaptado para servir pequenas base de dados ou sistemas de pequena escala que necessitem confiabilidade

RAID Parte III

10 de setembro de 2009

Níveis de RAID

As diferentes maneiras de combinar os discos em um só, chamados de níveis de RAID, podem fornecer tanto grande eficiência de armazenamento como simples espelhamento, ou podem alterar a performance de latência (tempo de acesso). Podem também fornecer performance da taxa de transferência de dados para leitura e para escrita, enquanto continua mantendo a redundância. Novamente, isto é ideal para prevenir falhas.

Os diferentes níveis de RAID apresentam diferentes performance, redundância, capacidade de armazenamento, confiabilidade e características de custo. A maioria, mas nem todos os níveis de RAID, oferecem redundância a falha de disco. Dos que oferecem redundância, RAID-1 e RAID-5 são os mais populares. RAID-1 oferece performance melhor, enquanto que RAID-5 fornece um uso mais eficiente do espaço disponível para o armazenamento dos dados.

De qualquer modo, o ajuste de performance é um assunto totalmente diferente. A performance depende de uma grande variedade de fatores como o tipo da aplicação, os tamanhos dos discos, blocos e arquivos.

Existe uma variedade de tipos diferentes e implementações de RAID, cada uma com suas vantagens e desvantagens. Por exemplo, para colocarmos uma cópia dos mesmos dados em dois discos (chamado de espelhamento de disco ou RAID nível 1), podemos acrescentar performance de leitura, lendo alternadamente cada disco do espelho. Em média, cada disco é menos usado, por estar sendo usado em apenas metade da leitura (para dois discos), ou um terço (para 3 discos), etc.. Além disso, um espelho pode melhorar a confiabilidade: se um disco falhar, o(s) outro(s) disco(s) têm uma cópia dos dados.

A seguir descreveremos os diferentes níveis de RAID, no contexto de implementação de RAID por software no Linux:

RAID-linear

é uma simples concatenação de partições para criar uma grande partição virtual. Isto é possível se você tem várias unidades pequenas, e quer criar uma única e grande partição. Esta concatenação não oferece redundância, e de fato diminui a confiabilidade total: se qualquer um dos discos falhar, a partição combinada irá falhar.

RAID-0

A grande maioria dos níveis de RAID envolve uma técnica de armazenamento chamada de segmentação de dados (data stripping). A implementação mais básica dessa técnica é conhecida como RAID-0 e é suportada por muitos fabricantes. Contudo, pelo fato deste nível de arranjo não ser tolerante a falhas, RAID-0 não é verdadeiramente RAID, ao menos que seja usado em conjunção com outros níveis de RAID.

Segmentação (stripping) é um método de mapeamento de dados sobre o meio físico de um arranjo, que serve para criar um grande dispositivo de armazenamento. Os dados são subdivididos em segmentos consecutivos ou stripes que são escritos seqüencialmente através de cada um dos discos de um arranjo. Cada segmento tem um tamanho definido em blocos.

Por exemplo, sabendo que o tamanho de cada segmento está defindo em 64 kbytes, e o arranjo de discos contem 2 discos, quando um arquivo de 128 kbytes for gravado, os primeiros 64 kbytes serão gravados no primeiro disco, sendo que os últimos 64 kbytes irão para o segundo disco, e normalmente isso é feito em paralelo, aumentando consideravelmente a performance.

Um arranjo desse tipo pode oferecer uma melhor performance, quando comparada a um disco individual, se o tamanho de cada segmento for ajustado de acordo com a aplicação que utilizará o arranjo:

  • Em um ambiente com uso intensivo de E/S ou em um ambiente de banco de dados onde múltiplas requisições concorrentes são feitas para pequenos registros de dados, um segmento de tamanho grande é preferencial. Se o tamanho de segmento para um disco é grande o suficiente para conter um registro inteiro, os discos do arranjo podem responder independentemente para as requisições simultâneas de dados.
  • Em um ambiente onde grandes registros de dados são armazenados, segmentos de pequeno tamanho são mais apropriados. Se um determinado registro de dados extende-se através de vários discos do arranjo, o conteúdo do registro pode ser lido em paralelo, aumentando o desempenho total do sistema.

Arranjos RAID-0 podem oferecer alta performance de escrita se comparados a verdadeiros níveis de RAID por não apresentarem sobrecarga associada com cálculos de paridade ou com técnicas de recuperação de dados. Esta mesma falta de previsão para reconstrução de dados perdidos indica que esse tipo de arranjo deve ser restrito ao armazenamento de dados não críticos e combinado com eficientes programas de backup.