Espelhamento de
Sistemas Operacionais
Diego Cananéa Nóbrega de Azevedo¹
Instituto Federal de Educação, Tecnologia e Ciências da Paraíba
Joaquim Batista Do Nascimento Neto
Instituto Federal de Educação, Tecnologia e Ciências da Paraíba
Resumo: O aumento nós serviços que dependem crucialmente de sistemas computacionais levou ao
desenvolvimento de soluções que permitissem tolerância a falhas, soluções baseadas no espelhamento
dos sistemas, onde destacaremos os via clusters, e RAIDs. A maioria desses sistemas é baseada tanto na
redundância de equipamentos quanto na reconfiguração do software de controle. A solução eficiente e
acessível de permitir que máquinas comuns continuem provendo seus serviços, mesmo na ocorrência de
falhas em algum de seus elementos, é através do espelhamento de sistema, usando muito em servidores.
Este artigo tem o objetivo de mostrar as características, vantagens da implementação de um sistema
espelhado.
Palavras-chave: RAID; Clusters; espelhamento; sistemas operacionais; Servidores; alta disponibilidade.
Abstract: The increasing dependency on computational systems for serves and services critical has led to
the development of solutions based on clusters, RAIDs aiming to get fault tolerant systems with MIRROR.
The majority of these systems are based on equipment redundancy as well as on the reconfiguration of
the control software. An efficient and accessible solution that allows shared machines to continue
providing a service, even in the event of faults in some of its elements, is mirroring of the servers. This
project describes the characteristics, advantages and forms of implementation of a system directed
towards fault tolerance, using replication of servers and services.
Key-Words: RAID; Clusters; mirroring; operating system; servers; high-availability.
¹
Autor a quem toda correspondência deverá ser endereçada1. Espelhamento utilizando Cluster
1.1 Clusters
Um cluster pode ser definido como um sistema que compreende dois ou mais computadores ou sistemas, denominados nodos ou nós, no qual trabalham em conjunto para executar aplicações ou realizar outras tarefas, de maneira transparente aos usuários, ou seja, os usuários terão a impressão de estar utilizando um único sistema [1].
Os clusters são utilizados para se atingir um maior grau de processamento em tarefas críticas e manter a disponibilidade de serviços, buscando manter o sistema sempre funcionando sem falhas e sem interrupções pelo maior tempo possível. Um bom exemplo disso são os clusters de alta disponibilidade em Data Centers de bancos, nos quais existem sistemas e dados que tem que ficar disponíveis “24 horas por dia, 7 dias por semana e 365 dias no ano”.
Como características fundamentais para a construção destas plataformas incluem-se: elevação da confiança, distribuição de carga e desempenho [1].
1.2 Utilização de clusters
Além do exemplo anterior, pode-se utilizar os clusters nas mais variadas situações. Lojas virtuais fazem uso de clusters de alta disponibilidade e de balanceamento de carga, afim de manter a disponibilidade e desempenho em seus serviços. Já um estúdio cinematográfico utiliza clusters paralelos para renderizar gráficos e animações de altíssima qualidade. Por sua vez, institutos de pesquisa científica faz uso de clusters de desempenho, ou também chamado Beowulf, garantindo assim um alto grau de processamento.
Algumas empresas também acabam investindo em clusters, incrementando sua escalabilidade, gerenciamento de recursos, disponibilidade de serviços ou desempenho de processamento a um preço moderado.
1.3 Tipos de clusters
Basicamente, existem quatro tipos de clusters mais conhecidos e utilizados [1]:
Alta Disponibilidade (HA - High Availability) →
estes modelos de clusters são construídos para prover uma disponibilidade de serviços e
recursos de maneira ininterrupta, através do uso da redundância implícita ao sistema. Caso um nó do cluster vier a falhar (failover), aplicações ou serviços estarão disponíveis em outro nó. Estes tipos de cluster são utilizados para base de dados de missões críticas, correio, servidores de arquivos e aplicações.
Balanceamento de carga (HS- Load Balancing) → distribui o tráfego entrante ou requisições de
recursos provenientes dos nodos que executam os mesmos programas entre as máquinas que compõem o cluster. Todos os nodos estão responsáveis em controlar os pedidos. Em caso de falha em um nó, as requisições são redistribuídas entre os nós disponíveis no momento. Este tipo de cluster é normalmente utilizado por servidores web que demandam muito acesso, como por exemplo, as lojas virtuais.
Combinação Alta Disponibilidade e Balanceamento de carga → combina os dois
clusters acima, aumentando a disponibilidade e escalabilidade dos serviços e recursos. Muito utilizado em servidores web e e-mail.
Processamento Distribuído ou Processamento Paralelo (HPC) → este modelo de cluster
aumenta a disponibilidade e desempenho para as aplicações, sendo utilizado em tarefas típicas em que se exige desempenho no processamento. Uma grande tarefa computacional pode ser dividida em pequenas tarefas que são distribuídas entre os nós, que ficam com a tarefa de processá-las. Este tipo de cluster é comumente associado ao projeto Beowulf. Estes clusters são usados em computação científica ou análises financeiras, tarefas típicas que exigem um alto poder de processamento.
1.4 Espelhamento de sistemas com
clusters
Para realizar um espelhamento de sistemas utilizando clusters, faz-se uso do modelo de Alta Disponibilidade, afim de prover a não interrupção do sistema em caso de falha (failover).
Existem dois tipos básicos de clusters Alta Disponibilidade [2].
Clusters de Alta Disponibilidade Assimétricos → são os mais simples de se implementar. Eles se baseiam no conceito de servidores primário e secundário. Servidores que estão provendo algum tipo de serviço são considerados como primários. Servidores que aguardam a ocorrência de alguma falha no servidor primário são denominados servidores secundários. A detecção da falha ocorre através do
monitoramento dos servidores primários por parte dos secundários.
Figura 1 → Modelo de um cluster de Alta Disponibilidade Assimétrico.[2]
Clusters de Alta Disponibilidade Simétricos → não há a figura de um servidor inativo aguardando uma falha de outro, primário, para então servir a aplicação. Neste modelo, ambos servidores servem alguma aplicação. Assim, os termos primário e secundário deixam de ser usados para designar o servidor. De forma semelhante ao que ocorre em clusters assimétricos, na ocorrência de uma falha em um dos servidores, dá-se início ao processo de failover. Neste caso, o servidor ainda ativo assume o controle da aplicação do servidor problemático. Ao contrário do modelo anterior, neste o monitoramento deverá ocorrer entre todos os nós.
Figura 2 → Modelo de um cluster de Alta Disponibilidade Simétrico.[2]
Este tipo de técnica de cluster, permite uma fácil manutenção do sistema, pois como cada nó faz espelhamento do sistema principal, ou seja, é exatamente igual, permitindo que qualquer máquina do cluster possa ser desligada, reiniciada, etc. Sem que para isso, seja necessário parar todo o sistema. Mas para que isto seja possível, é necessário manter o fluxo de dados constante entre as máquinas, existem então, três técnicas que os clusters usam para manter os dados disponíveis para os servidores:
Shared Disk (disco compartilhado) → não é
muito utilizado devido aos altos gastos em cabeamento, switches, software, que têm como objetivo garantir que todo servidor possa ter acesso a todos os discos. Ele também possui
limites de escalabilidade, pois os softwares que administram o processo simultãneo sofrem contenção a partir de um certo número de acessos.
Shared Nothing (nenhum compartilhamento) → possui novas soluções de cluster, na qual os
servidores possuem seus próprios recursos de disco, ou seja, não há compartilhamento em nenhum momento. Em caso de falhas o servidor pode transferir a propriedade de um disco de um servidor para o outro. Esta técnica permite um mesmo nível de disponibilidade oferecido pelo “Shared Disk”, e uma maior escalabilidade em função da inexistência de um software de gerenciamento de acesso; assim, as aplicações não necessitam ser alteradas, pois a arquitetura não exige um método de acesso ao disco.
Discos Espelhados: são mais flexíveis, pois
permitem que os servidores tenham seus próprios discos, possibilitando que softwares possam espelhar informações, ou seja, quando um servidor espelhado executar uma instrução de escrita, o outro também receberá a mesma instrução.
No espelhamento de sistemas usando cluster de Alta disponibilidade, o modo de armazenamento mais utilizado é o de discos espelhados, ficando assim, semelhante ao sistema de RAID 1, porém diferente deste, no cluster se dá através da rede. Assim, todas as chamadas de escrita realizadas no sistema principal são automaticamente repassadas para o servidor secundário, desta forma, todos os dados gravados localmente serão espelhados pela rede.
Figura 3 –> Cluster de alta disponibilidade com discos espelhados.
2. RAID
2.1 Redundant Array of Independent Drives
O sistema RAID consiste em um conjunto de dois ou mais discos rígidos com dois objetivos básicos: tornar o sistema de disco mais rápido (isto é, acelerar o carregamento de dados do disco), através de uma técnica chamada divisão de dados (data stripping ou RAID 0) e/ou tornar o sistema de disco mais seguro, através de uma técnica chamada espelhamento (mirroring ou RAID 1). Essas duas técnicas podem ser usadas isoladamente ou em conjunto.Vamos falar primeiro na divisão de dados. Imagine um micro equipado com dois discos rígidos iguais. Em um micro comum, sem RAID, um disco é acessado independentemente do outro. Na técnica de divisão de dados, os dois discos rígidos farão parte de um mesmo conjunto, fazendo com que o micro "pense" que os dois discos rígidos fazem parte de um só disco maior. Se os dois discos são de 20 GB, então o micro "pensará" que existe um disco rígido único de 40 GB instalado no micro. Na hora de gravar um arquivo no disco, o sistema RAID irá dividir esse arquivo entre os dois discos rígidos, gravando metade do arquivo em um disco e a outra metade do arquivo no outro disco. Tudo isso é feito sem que o usuário perceba.
Mas qual é a vantagem disso? Vamos supor que você esteja gravando um arquivo de 200 KB. No sistema de disco tradicional, esse arquivo terá de ser gravado por inteiro em um só disco, usando o único canal de comunicação existente. No caso da divisão de dados, esse arquivo será dividido em dois arquivos de 100 KB, sendo que cada um será gravado em um dos discos existentes ao mesmo tempo. Ora, como um arquivo de 100 KB demora a metade do tempo para ser gravado em um disco que um arquivo de 200 KB, a velocidade de acesso ao disco rígido dobrou!
Só que o sistema RAID não é limitado a apenas dois discos rígidos. Podemos, em princípio, colocar quantos discos quisermos. Nesse mesmo exemplo, se usarmos quatro discos iguais em vez de um, o micro "pensará" que os quatro discos são apenas um e dividirá automaticamente o arquivo em quatro, quadruplicando velocidade de leitura e gravação do arquivo. No mesmo exemplo do arquivo de 100 MB, ele será dividido automaticamente em quatro de 25 MB e, com isso, será gravado em apenas 0,25 s, se supormos discos ATA-100.
É claro que quanto mais discos colocarmos, mais caro fica o sistema. Mas aplicações com manipulação
arquivos grandes, como a edição profissional de áudio e vídeo, esse sistema torna-se realmente muito vantajoso, pois a máquina passa a ficar muito mais rápida para ler e gravar os arquivos.
Lembramos que toda essa divisão é feita "por debaixo dos panos" e o usuário não toma conhecimento que o seu arquivo foi dividido.
O espelhamento, também chamado RAID 1, faz com que o conteúdo de um disco rígido seja inteiramente copiado para outro disco rígido, de forma automática. Ou seja, se você montar um sistema desse em seu micro, o segundo disco rígido será cópia fiel do primeiro disco. Se o seu disco rígido principal queimar, o segundo entra em ação automaticamente.
Veja que maravilha: o espelhamento é um backup automático feito por hardware, aumentando a segurança do seu micro. É claro que esse sistema não dispensa o backup (já que pode acontecer de os dois discos rígidos queimarem ao mesmo tempo, embora essa probabilidade seja muito baixa - mas existe), mas realmente dá uma enorme sensação de segurança para aqueles que não podem perder de maneira alguma os dados presentes no disco rígido. O mais legal do espelhamento é que ele é feito por hardware automaticamente pela placa-mãe ou placa controladora, não sendo necessário nenhum tipo de configuração no sistema operacional para que o backup seja efetuado (o sistema "acha" que só há um disco rígido no micro).
Você pode pegar um disco contendo dados de anos e iniciar o espelhamento. No momento da configuração, que é feito através de um setup próprio, o conteúdo do disco rígido principal será copiado para o disco rígido de backup (procedimento que demora um pouco é claro).
A divisão de dados e o espelhamento podem ser combinados ao mesmo tempo, em uma configuração normalmente chamada RAID 0+1. Essa configuração necessita de, no mínimo, quatro discos rígidos. A divisão de dados será usada em dois discos para aumentar a velocidade, enquanto que os outros dois discos serão backup dos dois primeiros.
2.2 Exigências de capacidade aumentadas - Assim como o tamanho dos arquivos das aplicações aumentaram, a capacidade de armazenamento também. Sistemas de armazenamento baseados em RAID oferecem alta capacidade de armazenamento, como também, possibilidades para futuras expansões.
2.3 Microprocessadores mais rápidos - Com o avanço dos microprocessadores, o aumento no desempenho das taxas de transferência de dados e o correto espelhamento dos discos, o servidor pode executar operações de input/output (I/O) como desempenho superior do que se estivesse usando um único disco.
2.4 Exigências de confiabilidade - Como aplicações de missões críticas não podem falhar, o armazenamento de dados em tecnologia RAID está se tornando parte integrante dos servidores, pois, o sistema mantém o acesso contínuo aos dados e previne a perda de informações vitais no caso de falhas. Tais sistemas empregam uma variedade de redundâncias de dados e métodos de restaurações de dados.
2.5 Custos decrescentes - Como o custo por megabyte de armazenamento diminuiu, o armazenamento de dados em sistemas baseados em RAID se tornou muito atraente, pois, são muitos os benefícios trazidos por eles.
3. OS NÍVEIS DE RAID
A tecnologia RAID funciona de várias maneiras. Tais maneiras são conhecidas como "níveis de RAID". No total, vamos conhecer os 4 níveis principais, os quais são mostrados a seguir:
RAID nível 0 - Este nível também é conhecido como
"Striping" ou "Fracionamento". Nele, os dados são divididos em pequenos segmentos e distribuídos entre os discos. Este nível não oferece tolerância a falhas, pois não existe redundância. Isso significa que uma falha em qualquer um dos HDs pode ocasionar perda de informações. Por essa razão, o RAID 0 é usado para melhorar a performance do computador, uma vez que a distribuição dos dados entre os discos proporciona grande velocidade na gravação e leitura de informações. Quanto mais discos houver, mais velocidade é obtida. Isso porque, se os dados fossem gravados em um único disco, esse processo seria feito de forma sequencial. Com o RAID, os dados cabíveis a cada disco são gravados ao mesmo tempo. O RAID 0, por ter estas características, é muito usado em aplicações de CAD e tratamento de imagens e vídeos.
RAID nível 1 - também conhecido como "Mirroring" ou
"Espelhamento", o RAID 1 funciona adicionando HDs paralelos aos HDs principais existentes no computador. Assim, se por exemplo, um computador possui 2 discos, pode-se aplicar mais um HD para cada um, totalizando 4. Os discos que foram adicionados, trabalham como uma cópia do primeiro. Assim, se o disco principal recebe dados, o disco adicionado também os recebe. Daí o nome de
"espelhamento", pois um HD passa a ser uma cópia praticamente idêntica do outro. Dessa forma, se um dos HDs apresentar falha, o outro imediatamente pode assumir a operação e continuar a disponibilizar as informações. A conseqüência neste caso, é que a gravação de dados é mais lenta, pois é realizada duas vezes. No entanto, a leitura dessas informações é mais rápida, pois pode-se acessar duas fontes. Por esta razão, uma aplicação muito comum do RAID 1 é seu uso em servidores de arquivos.
A divisão de dados e o espelhamento podem ser combinados ao mesmo tempo, em uma configuração normalmente chamada RAID 0+1. Essa configuração necessita de, no mínimo, quatro discos rígidos. A divisão de dados será usada em dois discos para aumentar a velocidade, enquanto que os outros dois discos serão backup dos dois primeiros. Se um dos discos falhar, o sistema começa agir como um sistema RAID0, ou seja, divisão de dados. Um outro sistema, chamado RAID10, combina as características do RAID0 e RAID1. Ele funciona como o RAID0+1, mas se um disco falhar, o RAID10 faz com que o sistema se torne um sistema RAID1, ou seja, espelhamento.
Computadores modernos permitem o uso do RAID0+1 usando apenas dois discos rígidos. Essa configuração é chamada JBOD (Just a Bunch of Disk) e funciona usando apenas metade da capacidade de cada disco, simulando assim quatro discos rígidos. Por exemplo, usando dois discos rígidos de 40 GB com configuração RAID JBOD, a capacidade total disponível será 20 GB (os outros 20 GB serão usados para fazer o backup dos dados da primeira metade do disco). Claro que o micro ficará mais lento do que o RAID0+1.
RAID nível 5 - neste nível, a o uso de paridade dos dados
e fica destinada a toda a matriz de discos. Isso faz com que a gravação de dados seja mais rápida, pois não é necessário acessar um disco de paridade em cada gravação. Apesar disso, como a paridade é distribuída entre os discos. O RAID 5 é o nível mais utilizado e que oferece resultados satisfatórios em aplicações não muito pesadas. Este nível precisa de pelo menos 3 discos para funcionar. Caso um dos discos venha a falhar é possível recuperar os dados.
RAID 0 + 1 - O RAID 0 + 1 é uma combinação dos níveis 0
(Striping) e 1 (Mirroring), onde os dados são divididos entre os discos para melhorar o rendimento, mas também utilizam outros discos para duplicar as informações. Assim, é possível utilizar o bom rendimento do nível 0 com a redundância do nível 1. No entanto, é necessário pelo menos 4 discos para montar um RAID desse tipo. Tais características fazem do RAID 0 + 1 o mais rápido e seguro, porém o mais caro de ser implantado. A ilustração abaixo ilustra este tipo de RAID: