5.6. Tecnologias de Armazenamento Avançado

Apesar de tudo ser apresentado neste capítulo referenciando somente discos rígidos simples diretamente ligados a um sistema, há outras opções mais avançadas que você pode explorar. A seções seguintes descrevem algumas das táticas mais comuns para expandir as opções de seu armazenamento em massa.

5.6.1. Armazenamento Acessível via Rede

Combinar as tecnologias de rede com o armazenamento em massa pode resultar em grande flexibilidade para administradores de sistemas. Há dois benefícios atingíveis com esse tipo de configuração:

O armazenamento pode ser consolidado ao empregar servidores de alto desempenho com conectividade de rede de alta velocidade e configurados com grandes quantidades de armazenamento rápido. Com uma configuração apropriada, é possível prover acesso ao armazenamento a velocidades comparáveis com o armazenamento local. Sendo assim, a natureza compartilhada de tal configuração frequentemente possibilita reduzir custos, já que os gastos de um armazenamento compartilhado centralizado podem ser menores que os gastos do armazenamento equivalente para cada um dos clientes. Além disso, o espaço livre é consolidado, ao invés de estar espalhado (e não amplamente utilizável) pelos diversos clientes.

Os servidores de armazenamento centralizado também podem facilitar muitas tarefas administrativas. Por exemplo: monitorar o espaço livre é bem mais fácil quando o armazenamento a ser monitorado existe num servidor de armazenamento centralizado. Os backups podem ser bastante simplificados usando um servidor de armazenamento centralizado. É possível efetuar backups da rede para clientes múltiplos, mas requerem mais trabalho para configurar e manter.

Há diversas tecnologias de armazenamento em rede disponíveis; escolher uma pode ser uma tarefa difícil. Quase todos os sistemas operacionais do mercado de hoje incluem alguns meios de acessar o armazenamento acessível pela rede, mas as diferentes tecnologias não são compatíveis umas com as outras. Qual é a melhor tática para determinar a tecnologia a empregar?

A tática que geralmente traz os melhores resultados é deixar as capacidades embutidas do cliente decidirem a questão. Há inúmeras razões para isso:

Tenha em mente que todas as questões relativas aos clientes são multiplicadas pelo número de clientes de sua empresa. Ao utilizar as capacidades embutidas dos clientes, você não precisa instalar nenhum software adicional em cada cliente (custo adicional zero com a compra de software). E você também tem a melhor chance de obter um bom suporte e integração com o sistema operacional do cliente.

No entanto, há uma desvantagem. Isso significa que o ambiente de servidor deve estar apto a prover um bom suporte para as tecnologias de armazenamento acessíveis pela rede requisitadas pelos clientes. Nos casos em que os sistemas operacionais do servidor e dos clientes são um e o mesmo, normalmente não há prolemas. Caso contrário, será necessário investir tempo e trabalho em fazer com que o servidor "fale" a linguagem dos clientes. Entretranto, essa desvantagem é geralmente justificável.

5.6.2. Armazenamento Baseado no RAID

Uma habilidade a ser cultivada pelo administrador de sistemas é poder olhar para configurações de sistemas complexos e observar as deficiências inerentes de cada configuração. Apesar de, à primeira vista, este parecer um ponto de vista negativo, pode ser uma grande maneira de analisar além das caixas brilhantes e visualizar uma noite de sábado com toda a produção derrubada devido uma falha que poderia ser facilmente evitada com um pouco de precaução.

Com isso em mente, vamos usar o que sabemos agora sobre o armazenamento baseado no disco e verificar se podemos determinar as maneiras como os drives de disco podem causar problemas. Primeiro, considere uma falha completa no hardware:

Um drive de disco com quatro partições tem uma pane geral: o que acontece com os dados contidos nestas partições?

Ficam imediatamente indisponíveis (pelo menos até que a unidade falha possa ser substituída e os dados recuperados de um backup recente).

Um drive de disco com uma única partição está operando em seus limites devido a enormes cargas I/O: o que acontece com as aplicações que requerem acesso aos dados dessa partição?

As aplicações ficam lentas pois o drive de disco não pode processar os acessos e gravações mais rapidamente.

Você tem um grande arquivo de dados aumentando de tamanho lentamente; em breve, será maior que o maior drive de disco no seu sistema. O que acontece então?

O drive de disco é totalmente preenchido, o arquivo de dados para de aumentar e suas aplicações associadas param de rodar.

Apenas um destes problemas poderia incapacitar um centro de dados, mesmo assim os administradores precisam enfrentar esse tipo de situação todos os dias. O que pode ser feito?

Felizmente, há uma tecnologia que pode resolver cada uma destas questões. O nome dessa tecnologia é RAID.

5.6.2.1. Conceitos Básicos

RAID é um acrônimo para Redundant Array of Independent Disks (Conjunto Redundante de Discos Independentes)[1]. Como o nome implica, RAID é uma maneira para que drives múltiplos de disco atuem como se fossem um único drive de disco.

As técnicas RAID foram primeiramente desenvolvidas por pesquisadores da Universidade de Berkeley, Califórnia, em meados dos anos 80. Ao mesmo tempo, havia uma diferença maior de preço entre os drives de disco de alto desempenho usados em grandes instalações de computadores da época, e drives de disco menores e mais lentos usados nos idos da indústria da computação. O RAID era visto como um método de substituir uma unidade de drive de disco cara por diversos drives de disco mais baratos.

Ainda mais importante: os conjuntos RAID podem ser construídos de diversas maneiras, resultando em características diferentes dependendo da configuração final. Vamos observar as diferentes configurações (conhecidos como níveis do RAID) com mais detalhes.

5.6.2.1.1. Níveis do RAID

Os pesquisadores de Berkeley originalmente definiram cinco níveis diferentes do RAID e os numeraram de "1" a "5." Além disso, níveis adicionais do RAID foram definidos por outros pesquisadores e membros da indústria de armazenamento. Nem todos os níveis do RAID eram igualmente úteis; alguns interessavam somente aos propósitos dos pesquisadores, enquanto outros não eram economicamente viáveis.

No final, apenas três níveis do RAID foram adotados para o uso geral:

  • Nível 0

  • Nível 1

  • Nível 5

As seções seguintes abordam cada um destes níveis em detalhes.

5.6.2.1.1.1. RAID 0

A configuração de disco conhecida como RAID nível 0 é um pouco confusa, já que é o único nível do RAID que não emprega nenhuma redundância. No entanto, mesmo que o RAID 0 não tenha vantagens sob o aspecto de confiabilidade, possui outros benefícios.

Um conjunto RAID 0 consiste de dois ou mais drives de disco. A capacidade de armazenamento de cada drive é dividida em pedaços, que representam alguns múltiplos do tamanho de bloco nativo do drive. Os dados são gravados, pedaço por pedaço, em cada drive do conjunto. Os pedaços podem ser encarados como tiras (stripes, em inglês) ao longo de cada drive do conjunto; daí vem o outro termo para o RAID 0: striping.

Por exemplo: com um conjunto de dois drives e pedaços com 4KB de tamanho, gravar 12KB de dados no conjunto resultaria na gravação de três pedaços de 4KB nos seguintes drives:

  • Os primeiros 4KB seriam gravados no primeiro pedaço do primeiro drive

  • Os 4KB seguintes seriam gravados no primeiro pedaço do segundo drive

  • Os últimos 4KB seriam gravados no segundo pedaço do primeiro drive

Comparado a um drive de disco único, as vantagens do RAID 0 incluem:

  • Maior tamanho total — os conjuntos de RAID 0 podem ser construídos para serem maiores que um drive de disco único, facilitando armazenar maiores arquivos de dados

  • Melhor desempenho de acesso/gravação — A carga I/O num conjunto RAID 0 é espalhada igualmente por todos os drives do conjunto (assuimndo que todas I/O não estejam concentradas num único pedaço)

  • Sem espaço desperdiçado — Todo o armazenamento de todos os drives do conjunto estão disponíveis para o armazenamento de dados

Comparado a um drive de disco único, o RAID 0 tem a seguinte desvantagem:

  • Menos confiabilidade — Todo drive de um conjunto de RAID 0 deve estar operante para o conjunto estar disponível. Uma única falha no conjunto RAID 0 drive-N resulta na remoção de 1/N de todos os dados, inutilizando o conjunto

DicaDica
 

Se você tiver problemas em memorizar os diferentes níveis do RAID, lembre-se apenas que o RAID 0 tem zero porcento de redundância.

5.6.2.1.1.2. RAID 1

O RAID 1 usa dois (apesar de algumas implementações suportarem mais) drives de disco idênticos. Todos os dados são gravados nos dois drives, tornando-os imagem espelho um do outro. Por isso, o RAID 1 é comumente conhecido como mirroring.

Sempre que os dados são gravados num conjunto de RAID 1, ocorrem duas gravações físicas: uma no primeiro drive e outra no segundo drive. Por outro lado, o acesso aos dados precisa ocorrer somente uma vez em qualquer drive do conjunto.

Comparado a um drive de disco único, o conjunto de RAID 1 tem as seguintes vantagens:

  • Melhor redundância — Mesmo se um drive do conjunto falhar, os dados ainda estarão acessíveis

  • Melhor desempenho de acesso — Com ambos drives operantes, os acessos podem ser divididos igualmente entre eles, reduzindo as cargas I/O por drive

Quando comparado a um drive de disco único, o conjunto de RAID 1 tem algumas desvantagens:

  • O tamanho máximo do conjunto é limitado pelo maior drive disponível.

  • Desempenho de gravação reduzido — Como os dois drives devem ser mantidos atualizados, todas as I/Os devem ser desempenhadas pelos dois drives, atrasando o processo geral de gravação de dados no conjunto

  • Relação custo/eficiência reduzida — Com um drive inteiro dedicado à redundância, o custo de um conjunto de RAID 1 é, no mínimo, o dobro de um único drive

DicaDica
 

Se você tiver problemas em memorizar os diferentes níveis do RAID, lembre-se que o RAID 1 tem cem porcento de redundância.

5.6.2.1.1.3. RAID 5

O RAID 5 tenta combinar os benefícios do RAID 0 e do RAID 1 e minimizar suas respectivas desvantagens.

Como o RAID 0, um conjunto de RAID 5 consiste de drives de discos múltiplos, cada um dividido em pedaços. Isso permite ao conjunto de RAID 5 ser maior que qualquer disco separadamente. Assim como um conjunto de RAID 1, um conjunto de RAID 5 usa parte do espaço do disco de maneira redundante, aumentando a confiabilidade.

Entretanto, o modo de operação do RAID 5 é diferente do RAID 0 e do RAID 1.

Um conjunto de RAID 5 deve consistir de, no mínimo, três drives de disco de tamanho idêntico (talvez mais drives sejam usados). Cada drive é dividido em pedaços e os dados são gravados nos pedaços em ordem. No entanto, nem todo pedaço é dedicado ao armazenamento de dados como no RAID 0. Ao invés disso, num conjunto com n drives de disco, todo pedaço de número n é dedicado à paridade.

Os pedaços contendo paridade possibilitam recuperar dados caso um dos drives do conjunto falhe. A paridade no pedaço x é calculada combinando matematicamente os dados de cada pedaço x armazenado em todos os drives do conjunto. Se os dados de um pedaço são atualizados, o pedaço de paridade correspondente deve ser recalculado e atualizado também.

Isso também significa que, cada vez que os dados são gravados no conjunto, pelo menos dois drives são gravados: o drive contendo os dados e o drive contendo o pedaço de paridade.

Uma coisa importante para ter em mente é que os pedaços de paridade não estão concentrados em nenhum drive do conjunto, mas estão espalhados igualmente por todos os drives. Apesar de ser possível dedicar um drive específico para conter apenas paridade (de fato, esta configuração é conhecida como RAID nível 4), a atualização constante da paridade conforme os dados são gravados no conjunto pode transformar o drive de paridade num gargalo de desempenho. Ao espalhar as informações de paridade igualmente pelo conjunto, este impacto é reduzido.

No entanto, é importante ter em mente o impacto da paridade na capacidade de armazenamento total do conjunto. Mesmo que as informações de paridade sejam espalhadas igualmente por todos os drives do conjunto, a quantidade de armazenamento disponível é reduzida para o tamanho de um drive.

Comparado a um drive de disco único, o conjunto de RAID 5 tem as seguintes vantagens:

  • Mais redundância — Se um drive do conjunto falhar, as informações de paridade podem ser usadas para reconstruir os pedaços de dados faltando, enquanto mantém-se o conjunto disponível para uso[2]

  • Melhor desempenho de acesso — Devido sua semelhança com o RAID 0, os dados são divididos entre os drives do conjunto e a atividade de acesso I/O é espalhada igualmente por todos os drives

  • Relação custo/eficiência razoavelmente boa — Em um conjunto de RAID 5 com n drives, somente 1/n do armazenamento total é dedicado à redundância.

Comparado a um drive único, um conjunto de RAID 5 tem a seguinte desvantagem:

  • Desempenho de gravação reduzido — Como cada gravação no conjunto resulta em pelo menos duas gravações nos drives físicos (uma gravação para os dados e outra para a paridade), o desempenho de gravação é pior do que num drive único[3]

5.6.2.1.1.4. Níveis Embutidos do RAID

A partir da abordagem dos vários níveis do RAID, fica claro que cada nível tem suas próprias vantagens e desvantagens. Pouco tempo depois que o armazenamento baseado no RAID começou a ser usado, as pessoas começaram a pensar em combinar os diferentes níveis do RAID, produzindo conjuntos com todas as vantagens e nenhuma desvantagem dos níveis originais.

Por exemplo: e se os drives de disco de um conjunto de RAID 0 fossem, na verdade, conjuntos de RAID 1? Isso traria as vantagens de velocidade do RAID 0, com a confiabilidade do RAID 1.

Esse é o tipo de coisa que pode ser feita. Aqui estão os níveis embutidos de RAID mais comuns:

  • RAID 1+0

  • RAID 5+0

  • RAID 5+1

Como o RAID embutido é usado em ambientes mais especializados, não abordaremos muitos detalhes aqui. No entanto, há dois pontos para ter em mente quando se tratar de RAIDs embutidos:

  • A ordem importa — A ordem na qual os níveis do RAID são embutidos pode ter um grande impacto na confiabilidade. Em outras palavras, o RAID 1+0 e o RAID 0+1 não são o mesmo.

  • Os custos podem ser altos — Se há alguma desvantagem comum a todas as implementações embutidas de RAID, essa é o custo. Por exemplo: o menor conjunto de RAID 5+1 consiste de seis drives de disco (são necessários ainda mais drives para conjuntos maiores).

Agora que explicamos os conceitos por trás do RAID, vejamos como pode ser implementado.

5.6.2.1.2. Implementações do RAID

Em comparação com as seções anteriores, é óbvio que o RAID requer mais "conhecimento" que o processamento I/O de disco comum para drives individuais. No mínimo, as seguintes tarefas devem ser executadas:

  • Dividir os pedidos I/O de entrada entre os discos do conjunto

  • Para o RAID 5, calcular a paridade e gravá-la no drive apropriado no conjunto

  • Monitorar os discos separadamente no conjunto e tomar as devidas ações caso um deles falhar

  • Controlar a recriação de um disco separado no conjunto, quando este disco for substituído ou reparado

  • Prover uma maneira para os administradores manterem o conjunto (remover ou adicionar drives, iniciar e terminar recriações, etc.)

Há dois métodos principais que podem ser usados para completar estas tarefas. As próximas duas seções descrevem-nos em detalhes.

5.6.2.1.2.1. RAID de Hardware

Uma implementação de RAID de hardware geralmente toma a forma de uma placa especializada de controle do disco. A placa executa todas as funções relativas ao RAID e controla diretamente os drives separadamente nos conjuntos conectados a esta. Com o driver apropriado, os conjuntos administrados por uma placa de RAID de hardware aparecem como drives de disco comuns para o sistema operacional da máquina.

A maioria das placas de controlador de RAID funcionam com drives SCSI, mas há também controladores RAID baseados na ATA. Em qualquer caso, a interface administrativa é geralmente implementada de uma destas três maneiras:

  • Utilitários especializados, que rodam como aplicações sob o sistema operacional da máquina, apresentando uma interface de software à placa do controlador

  • Uma interface da placa usando uma porta serial, que é acessada através de um emulador de terminal

  • Uma interface parecida com o BIOS, acessível somente durante o teste de inicialização do sistema

Alguns controladores RAID têm mais de um tipo de interface administrativa. Por motivos óbvios, uma interface de software provém mais flexibilidade, já que permite funções administrativas enquanto o sistema operacional está rodando. No entanto, se você inicializar um sistema operacional a partir de um controlador RAID, é necessária uma interface que não requer um sistema operacional rodando.

Como há diversas placas de controlador RAID diferentes no mercado, é impossível entrar em mais detalhes aqui. O melhor a fazer é ler a documentação do fabricante para mais informações.

5.6.2.1.2.2. RAID de Software

O RAID de software é o RAID implementado como um kernel - ou software de nível de driver para um sistema operacional específico. Como tal, provém mais flexibilidade em termos de suporte a hardware — desde que o hardware seja suportado pelo sistema operacional, os conjuntos RAID podem ser configurados e empregados. Isto pode reduzir o custo de emprego do RAID drasticamente, eliminando a necessidade de hardware caro especializado de RAID.

Frequentemente, o excesso de energia da CPU disponível para os cálculos de paridade do RAID de software excede o poder de processamento presente numa placa de controlador RAID. Consequentemente, algumas implementações de RAID de software têm, na verdade, a capacidade de desempenho superior que implementações de RAID de hardware.

Entretanto, o RAID de software tem limitações ausentes do RAID de hardware. A mais importante a considerar é o suporte para inicializar a partir de um conjunto de RAID de software. Na maioria dos casos, somente os conjuntos RAID 1 podem ser usados para inicialização, já que o BIOS do computador não sabe do RAID. Como um drive único de um conjunto de RAID 1 é indiferenciável de um dispositivo de inicialização não-RAID, o BIOS pode iniciar o processo de inicialização; então, o sistema operacional pode alternar para a operação de RAID de software quando obtiver o controle do sistema.

5.6.3. Administração de Volume Lógico (Logical Volume Management)

Uma outra tecnologia avançada de armazenamento é a administração de volume lógico (logical volume management - LVM). O LVM possibilita tratar dispositivos físicos de armazenamento em massa como blocos de construção de nível baixo, nos quais são criadas configurações de armazenamento diferentes. As capacidades exatas variam de acordo com a implementação específica, mas podem incluir agrupamento de armazenamento físico, redimensionamento de volume lógico e migração de dados.

5.6.3.1. Agrupamento de Armazenamento Físico

Apesar do nome dado a esta capacidade variar, o agrupamento de armazenamento físico é a base de todas as implementações do LVM. Como o nome implica, os dispositivos físicos de armazenamento em massa podem ser agrupados de maneira a criar um ou mais dipositivos lógicos de armazenamento em massa. Os dispositivos lógicos de armazenamento em massa (ou volumes lógicos) podem ter capacidade maior que a maior capacidade de qualquer um dos dispositivos físicos de armazenamento em massa que compõe o volume.

Por exemplo: dados dois drives de 100GB, pode-se criar um volume lógico de 200GB. No entanto, também pode-se criar um volume lógico de 150GB e um de 50GB. Qualquer combinação de volumes lógicos igual ou menor que a capacidade total (200GB nestes exemplo) é possível. As alternativas são limitadas apenas pelas necessidades da sua empresa.

Isso possibilita a um administrador de sistemas tratar todo o armazenamento como parte de um conjunto, disponível para uso em qualquer quantidade. Além disso, os drives podem ser adicionados posteriormente ao conjunto, facilitando o processo de antecipar a demanda de armazenamento de seus usuários.

5.6.3.2. Redimensionamento do Volume Lógico

A característica do LVM admirada pela maioria dos administradores de sistemas é sua habilidade em direcionar armazenamento facilmente onde é necessário. Numa configuração de sistema sem LVM, estar sem espaço significa — no melhor dos casos — mover arquivos do dispositivo cheio para outro com espaço disponível. Isto pode significar reconfigurar os dispositivos de armazenamento em massa de seu sistema; uma tarefa a ser executada após o horário comercial.

Entretanto, o LVM possibilita aumentar o tamanho de um volume lógico. Assuma por um momento que nosso conjunto de armazenamento de 200GB foi usado para criar um volume lógico de 150GB, com os 50GB restantes na reserva. Se o volume lógico de 150GB ficar cheio, o LVM possibilita aumentar esse tamanho (digamos em 10GB) sem nenhuma reconfiguração física. Dependendo do ambiente do sistema operacional, pode ser possível fazer isso dinamicamente ou pode ser necessário deixar o sistema fora do ar por pouco tempo para executar o redimensionamento.

5.6.3.3. Migração de Dados

A maioria dos administradores de sistemas experientes ficariam impressionados com as capacidades do LVM, mas também se perguntaria a seguinte questão:

O que acontece se um dos drives que compõe o volume lógico começa a falhar?

A boa notícia é que a maioria das implementações do LVM incluem a habilidade de migrar dados de um drive físico específico. Para que isso funcione, deve haver capacidade reserva suficiente para absorver a perda do drive falho. Uma vez completa a migração dos dados, o drive falho pode ser substituído ou trazido de volta ao conjunto de armazenamento disponível.

5.6.3.4. Com LVM, por que usar RAID?

Dado que o LVM tem algumas funcionalidades similares às do RAID (a habilidade de substituir drives falhos dinamicamente, por exemplo), e algumas funcionalidades provendo capacidades que não podem ser atingidas pelas maioria das implementações do RAID (como a habilidade de adicionar armazenamento dinamicamente a um conjunto de armazenamento central), muitas pessoas questionam se o RAID ainda é importante.

Nada poderia estar mais distante da verdade. RAID e LVM são tecnologias complementares que podem ser usadas em conjunto (similar ao uso dos níveis embutidos do RAID), possibilitando obter o melhor de cada uma.

Notas

[1]

No início das pesquisas sobre o RAID, o acrônimo significava Redundant Array of Inexpensive Disks (Discos Baratos), mas ao longo do tempo, os discos "independentes" que o RAID pretendia suplantar tornaram-se cada vez mais baratos, assim perdendo o significado da comparação de preços.

[2]

O desempenho I/O é reduzido enquanto operar com um drive indisponível, devido à sobrecarga envolvida na reconstrução dos dados faltantes.

[3]

Também há impacto dos cálculos de paridade necessários para cada gravação. Mas, dependendo da implementação específica do RAID 5 (especialmente, em que localidade do sistema os cálculos de paridade ocorrem), este impacto pode variar de um tamanho considerável a quase inexistente.