DEV Community

Cover image for Estudo de base sobre RAID: origem, tipos e características
Luigi Belanda
Luigi Belanda

Posted on

Estudo de base sobre RAID: origem, tipos e características

Luigi Enrico Alves Belanda Milani – luigi.milani@fatec.sp.gov.br
Faculdade de Tecnologia de Taquaritinga (FATEC) – Itápolis – São Paulo – Brasil

Welder Patrick Casemiro Acciari – welder.acciari@fatec.sp.gov.br
Faculdade de Tecnologia de Taquaritinga (FATEC) – Itápolis – São Paulo – Brasil


1 - INTRODUÇÃO

Este artigo tem como principal foco a apresentação de uma pesquisa sobre os diversos aspectos básicos sobre RAID, desde sua origem, tipos, características e muito mais. Este tipo de pesquisa se faz necessária por ser um assunto que pode aparecer no dia a dia como profissionais da área de TI e principalmente em assuntos relacionados a sistemas operacionais, redes, sistemas de armazenamento etc. O objetivo em si é que ao chegar ao final deste artigo possamos entender principalmente o que é RAID, por que ele surgiu, quais os tipos de RAID, quais as vantagens e desvantagens de cada um e muito mais, todas essas informações serão abordadas nas seções deste artigo. 

Por volta dos anos de 1974 e 1984 surge talvez uma pequena preocupação acerca dos computadores, o desempenho das CPUs e Memórias principais tiveram um grande crescimento, totalizando um aumento de até mesmo cerca de 40%, mas aqui que surge um problema, o gargalo entre por exemplo uma instrução da CPU que realiza uma operação de E/S para acessar o disco. Isso se deve ao fato que a velocidade do disco não conseguia na época acompanhar a velocidade de outros componentes do computador.

Com isso, por volta do ano de 1978 podemos dizer que surgiu a primeira ideia de RAID criada pela IBM, mas somente em 1987 um artigo publicado por David A. Patterson, Garth Gibson e Randy H. Katz na Universidade de Berkeley e com o nome de “A Case for Redundant Arrays of Inexpensive Disks (RAID)”, deu um maior foco para esse tipo de assunto. Este artigo como podemos conferir em seu próprio “Abstract” (resumo) nos diz o que podemos esperar: “Increasing performance of CPUs and memories will be squandered if not matched by a similar performance increase in I/O. While the capacity of Single Large Expensive Disks (SLED) has grown rapidly, the performance improvement of SLED has been modest. Redundant Arrays of Inexpensive Disks (RAID), based on the magnetic disk technology developed for personal computers, offers an attractive alternative to SLED, promising improvements of an order of magnitude in performance, reliability, power consumption, and scalability…”, em uma tradução livre “O aumento do desempenho de CPUs e memórias será desperdiçado se não for acompanhado por um aumento semelhante de desempenho em E/S. Embora a capacidade dos discos únicos grandes e caros (SLED) tenha crescido rapidamente, a melhoria de desempenho do SLED foi modesta. Redundant Arrays of Inexpensive Disks (RAID), baseados na tecnologia de disco magnético desenvolvida para computadores pessoais, oferecem uma alternativa atraente ao SLED, prometendo melhorias de uma ordem de grandeza em desempenho, confiabilidade, consumo de energia e escalabilidade…”

De modo geral, este artigo descreve os vários tipos de matrizes de discos, a ideia básica do RAID, vantagens em relação, por exemplo, ao Single Large Expensive Drive - SLED e outros detalhes. No geral os RAIDs originais descritos no artigo eram 1, 2, 3, 4 e 5, com o tempo outros RAIDs acabaram surgindo.


2 - RAID

Vamos começar a entender então o que é o RAID, o RAID em si se baseia no uso de discos extras para aumentar o desempenho do processo de leitura e escrita da unidade de armazenamento, ou para recuperar a informação original em caso de uma falha num disco. Patterson, um dos desenvolvedores da tecnologia RAID, demonstrou que sem um controle de tolerância a falhas grandes vetores de discos econômicos não podem ser considerados úteis devido a sua baixa taxa de confiabilidade. Veja que justamente essa ideia de RAID surge para tentar superar o gargalo comentado anteriormente no texto e ainda garantir mais confiabilidade e outros fatores. 

O principal apresentado por Patterson era de quebrar os vetores em grupos confiáveis, onde cada grupo possua discos extras, os quais possuem informação redundante que seriam utilizados para manter a confiabilidade dos grupos. Dessa forma, quando um disco falhar, o disco em falha será substituído por um novo disco em um espaço curto de tempo, e a informação que estava contida no antigo disco será totalmente reconstruída no novo disco utilizando as informações redundantes contidas no vetor.

Outro ponto muito importante é que o MTBF (Mean Time Between Failure - o tempo médio entre falhas, é uma medida da confiabilidade de um sistema ou componente. É um elemento crucial da gestão da manutenção, representando o tempo médio que um sistema ou componente irá operar antes de falhar) dessas matrizes é igual ao menor MTBF individual dos discos. Por isso, o MTBF dessas matrizes se torna extremamente baixo para muitas aplicações, tornando ainda mais confiável a utilização desses discos em RAID.

Como podemos observar o RAID em si surge como uma ideia de melhorar principalmente o desempenho e confiabilidade de um sistema de armazenamento utilizando HDs, mas como aplicar essa ideia em si? Existe algum padrão ou algo do tipo? Para isso, alguns tipos de RAID foram criados, cada um com suas características, necessidades e maneiras de como funcionam e é o que veremos agora.

2.1 TIPOS DE RAID, CARACTERÍSTICAS, VANTAGENS ETC.

Como dissemos na introdução deste artigo, no início surgiram 5 tipos de RAIDs originais descritos no artigo de David A. Patterson, Garth Gibson e Randy H. Katz, com o tempo, combinações de RAID e outros modelos acabaram surgindo e aqui iremos explicar sobre cada um deles.

2.1.1 RAID 0

Começando pelo RAID 0 (striping array - segmentação de dados), normalmente usado em casos em que o desempenho ou que aproveitando do “striping” que é justamente a combinação de vários discos em apenas uma unidade lógica de armazenamento, supere a necessidade de tolerância a falhas e que os dados que eles estão guardando não sejam de extrema importância. O striping busca melhorar o desempenho do disco distribuindo a atividade de E/S através de várias unidades de disco e reduzindo ou eliminando um gargalo de E/S, isso ocorre porque além de enxergarmos 2 ou mais HDs como uma única unidade lógica de armazenamento os dados são fracionados / repartidos de forma igualitária entre eles, ou seja, as informações sobre um arquivo X será dividida entre os HDs que estão em RAID 0 e cada um ficará com uma parte desse arquivo X e quando for necessário pegar os dados desse arquivo ambos os HDs em que suas partes estão guardadas entram em ação e podem recuperar esses dados de forma mais rápida, mas aqui surge um problema, como a informação sobre esse arquivo está dividida nos HDs se um deles falhar será praticamente impossível recuperar os dados desse arquivo, por que justamente uma parte dele foi perdida e esses dados eram cruciais para formar o arquivo completo, importante dizer que neste caso estamos falando que alguns blocos de dados desse arquivo X se perderam, tudo no HD é armazenado em blocos (por isso até que são chamados de Block Devices) e se você perde uma parte deles como no exemplo acima, você acaba perdendo o arquivo inteiro.

RAID 0Imagem ilustrando a visão de alguns HDs em RAID 0 (note que aqui temos 4 HDs, mas que são enxergados como um único volume em que os dados podem ser repartidos e gravados)

2.1.2 RAID 1

Podemos agora ir para o RAID 1 (mirroring - espelhamento, shadowing), este opção de RAID surge com uma premissa totalmente oposta do RAID 0, enquanto no RAID 0 temos a divisão dos blocos de dados de um arquivo pelos diversos HDs que estão em RAID 0, no RAID 1 temos o espelhamento desses dados, ou seja, temos 2 HDs em RAID 1, tudo que for gravado no HD 1 será espelhado / gravado no HD 2. Esta configuração de RAID se torna útil principalmente quando não podemos perder os dados que ali estão sendo gravados, aumentando a confiança nesse tipo de RAID pois se um dos discos falha o outro HD pode começar a entender as requisições necessárias, já que ele contém os mesmos dados daquele que está com defeito e ainda deixando as operações de leitura mais rápidas que o padrão, onde ainda quando um dado deve ser lido essa operação pode ser feita no HD que estiver com a menor fila e menor tempo de busca, mas em contrapartida o desempenho em solicitações de escrita acaba sendo um pouco comprometido em troca dessa segurança a mais com os dados, já que o mesmo dado terá que ser gravado em todos os HDs em RAID 1, outro ponto é que de certa forma a eficiência de armazenamento, ou seja, a maneira com que usamos o espaço de armazenamento desses HDs, acaba saindo prejudicada já que estaremos usando 2 HDs ou mais para gravar os mesmos dados.

RAID 1Imagem ilustrando a visão de alguns HDs em RAID 1 (os discos sombreados são aqueles usados para espelhar os dados dos outros HDs)

2.1.3 RAID 10 E RAID 01

Agora que já vimos os 2 tipos de RAID acima podemos falar de um outro tipo que é uma combinação dos dois, o RAID 10 ou RAID 1+0. Basicamente se quisermos construir um sistema de armazenamento usando essa combinação de RAIDs temos que ter no mínimo 4 HDs que vão ser usados da seguinte forma: os HDs 1 e 2 vão formar o Grupo 1 e os HDs 3 e 4 o Grupo 2, tanto o Grupo 1 quanto o 2 serão RAID 1, ou seja, os dados que forem escritos no HD 1 serão espelhados no HD 2 e os dados escritos no HD 3 serão espelhados no HD 4, por sua vez esses os dois Grupos vão estar em RAID 0, ou seja, os dados vão ser divididos entre eles, criando os stripes assim como ocorre no RAID 0 e formando uma única unidade lógica de armazenamento. Essa combinação de RAIDs consegue trazer praticamente as vantagens que os dois tipos de RAIDs oferecem, sejam elas a confiança e tolerância a falhas (RAID 1) ou a eficiência de armazenamento e performance (RAID 0), como principal desvantagem temos o custo desta implementação, já que no mínimo serão necessários 4 HDs para realizar essa combinação de RAIDs.

RAID 10Imagem ilustrando o funcionamento de um RAID 10

Muito parecido com o modelo acima temos o RAID 01, onde basicamente é ele é uma inversão do modelo acima, onde temos na base 4 HDs divididos em 2 grupos, cada um em RAID 0 e esses dois grupos estão ligados por um RAID 1. Assim é possível novamente combinar os benefícios de ambos os modelos como comentado acima também, obtendo um certo ganho de performance, mas também de segurança e tolerância a falhas.

RAOD 01Imagem ilustrando o funcionamento de um RAID 01

2.1.4 RAID 2

Indo um pouco mais além vamos a um tipo de RAID que com o avanço dos discos rígidos em realizarem correções internas de erros acabou entrando um pouco em desuso e ficando de certa forma obsoleto, estamos falando do RAID 2. Assim como no RAID 0 os dados são fracionados entre os HDs, mas desta vez não na forma convencional na qual estamos acostumados, ou seja, não são fracionados por blocos e sim por bits, onde então cada sequência de bits será armazenada em discos diferentes, aliado a isso ainda temos a utilização da técnica do Código de Hamming (este tipo de código é um código de detecção, isto é, permite não apenas detectar erro de um bit, mas também a localização do bit errado, isso é feito adicionando alguns bits de redundância (paridade) que permite essa detecção) para a criação de um ECC (Error Correcting Code) que será armazenado nos HDs específicos para isso, ou seja, teremos os HDs para dados e os HDs reservados para gravar esses códigos de correção de erros. Quando os dados são gravados nos discos, ele calcula o código ECC para os dados em tempo real e escreve os bits de dados nos discos de dados e escreve o código ECC nos discos de redundância. Quando os dados são lidos nos discos, ele também lê o código ECC correspondente nos discos de redundância e verifica se os dados são consistentes. Se necessário, ele faz as correções apropriadas em tempo real. Esse tipo de RAID possui uma forte tolerância à falha, mas como dito no começo esse tipo de RAID acabou caindo em desuso por conta das correções internas que o próprios HDs realizam hoje e também por conta do seu custo.

RAID 2Imagem ilustrando o funcionamento de um RAID 2 (neste caso acima temos 4 discos que vão armazenar os dados (0, 1, 2 e 3) e os outros três discos (4, 5 e 6) vão ser aqueles utilizados como discos de paridade)

RAID 2Outro exemplo de RAID 2, como dito usando striping a nível de bits. No diagrama acima b1, b2, b3 são bits. E1, E2, E3 são códigos de correção de erros. Você precisa de dois grupos de discos. Um grupo de discos é usado para gravar os dados, outro grupo é usado para gravar os códigos de correção de erros

2.1.5 RAID 3

Chegamos ao RAID 3, assim como no RAID 2 e RAID 0 ele faz o separa os dados pelos HDs, mas diferente do RAID 0 que separa por blocos e o RAID 2 que separa por bit, o RAID 3 separa por bytes, além disso temos que ter pelo menos 1 disco de paridade para a recuperação de dados caso necessário. Os discos precisam girar em sincronia para chegar aos dados. Leitura e gravação sequencial terão bom desempenho, como por exemplo, edição de vídeos. Leitura e gravação aleatórias terão pior desempenho, tendo em mente que as frações de um mesmo dado estão espalhadas nas mesmas seções dos vários discos em RAID.

RAID 3Imagem ilustrando o funcionamento de um RAID 3, realizando striping a nível de bytes. No diagrama acima B1, B2, B3 são bytes (discos para os dados). p1, p2, p3 são paridades (disco exclusivo para a paridade).

RAID 3Outro exemplo de RAID 3, note que novamente temos os discos dedicados a dados (0, 1 e 2) e o disco dedicado à paridade (3).

2.1.6 RAID 4

Mais um tipo de RAID agora pode ser apresentado, o RAID 4, que segue um modelo bem parecido com os dois anteriores, RAID 2 e 3. Diferente de seus 2 antecessores ele não realiza a repartição / striping dos dados a nível de bit ou byte e sim igual ao RAID 0, a nível de bloco. Tirando esse fato do striping todo o resto é parecido com o RAID 3, teremos alguns discos dedicados para dados e um disco de paridade reservado. Sempre que os dados são escritos nos discos, o novo dado sobre paridade deve ser recalculado e escrito para o respectivo disco de paridade antes que qualquer requisição de escrita seja realizada. Por causa dessas operações de leitura e escrita, o disco de paridade é o fator limitante do desempenho total do vetor.

RAID 4Imagem que ilustra o funcionamento de um RAID 4, note que o striping é em bloco. No diagrama acima Disk 1, 2 e 3, são para dados e o Disk 4 para paridade.

RAID 4Exemplo de RAID 4 bem parecido com o de cima

2.1.7 RAID 5

Aqui chegamos a nível de RAID que pretende resolver um pouco do problema do RAID 4 em que o disco de paridade é um leve gargalo. Assim como no RAID 4 o RAID 5 fraciona os dados em blocos, mas diferente do RAID 4 que tem um disco dedicado à paridade o RAID 5 acaba espalhando as informações de paridade por todos os discos no mesmo RAID. Isso é um fator muito bom, pois se um disco falhar outro pode ser colocado no lugar e ser reconstruído através de um processo de rebuild utilizando os dados de paridade nos outros discos. Em contrapartida esse processo não chega a ser um dos mais rápidos possíveis, além disso tem a chance de outro disco falhar nesse processo de recuperação e se perder esses dados de vez.

RAID 5Imagem ilustrando o funcionamento de um RAID 5, note que todos os HDs tem dados guardados (A1, B2 etc), mas tem as partes de paridade (Dp, Cp, Bp e Ap)

2.1.8 RAID 50

Assim como tivemos os modelos de RAID que eram basicamente a combinação de outros dois RAIDs, como por exemplo, o RAID 01 e RAID 10, temos também o RAID 50. Esse tipo de RAID como já podemos imaginar é a junção do RAID 5 utilizando paridade em conjunto com o RAID 0 utilizando a segmentação dos dados em blocos e a visualização de um grupo de HDs como uma única unidade lógica de armazenamento. Esse tipo de combinação proporciona uma tolerância a falhas boa por conta do RAID 5, alta taxa de transferência, mas possui um alto custo de manutenção e expansão.

RAID 50Imagem ilustrando o funcionamento de um modelo de RAID 50

2.1.9 RAID 6

Por fim acabamos tendo um RAID 6, muito parecido com o anterior, o RAID 5, ele tem striping por bloco, os dados de paridade também são distribuídos entre todos os discos, mas diferente do RAID 5, o RAID 6 cria dois blocos de paridade para cada bloco de dados, podendo assim lidar com duas falhas de discos, algo que era mais complicado no RAID acima. Esse tipo de RAID trás ainda mais confiança e tolerância à falhas, pois no RAID 5 se 2 discos falharem a recuperação de dados seria muito mais complicada, agora já no RAID 6 ele consegue suportar a falha em 2 discos de uma maneira muito mais suave, mas tem o mesmo problema que o RAID 5, onde o mesmo por conta do cálculo de paridade acabava atrapalhando um pouco o desempenho de escrita nos discos, o mesmo ocorre no RAID 6 e de forma até mais acentuada pois aqui gravamos os dados de paridade em 2 lugares em vez de 1 só.

RAID 6Imagem ilustrando o funcionamento de um RAID 6, note que para cada faixa dos discos temos alguns blocos de dados (A, B, C etc.) e alguns blocos de paridade (p1, p2, p3 etc).

RAID 6Outro exemplo de RAID 6 em funcionamento com 5 discos


3 - PROCEDIMENTOS METODOLÓGICOS

Para a fundamentação teórica deste artigo tínhamos como objetivo a coleta de informações principalmente por meio de teses, monografias e artigos acadêmicos, principalmente o artigo original de David A. Patterson, Garth Gibson e Randy H. Katz que trata de forma mais aprofundada o que é RAID, os tipos etc. Os detalhes mais técnicos de nosso artigo foram coletados desses meios citados anteriormente, mas contamos também com a coleta de outros detalhes por meio de blogs, sites de faculdade e vídeos falando sobre RAID e/ou algum assunto que tenha relação com o mesmo. Em resumo, nossa fundamentação se baseia na pesquisa online sobre artigos, teses e outros meios que tratassem do assunto proposto neste artigo.


4 - RESULTADOS E DISCUSSÃO

Basicamente o que podemos levar como resultados e para discussão é que RAID é uma ótima maneira de proteger seus dados e/ou ter desempenho na operações de leitura e escrita, apesar de que como vimos algumas opções de RAID tendem a ser mais caras de se implementar por conta de algumas de suas características. Esse tipo de implementação, no caso o RAID de maneira geral, pode ser muito vantajoso para empresas, comércios e muitas outras situações e para alguns casos específicos de usuário comuns, única coisa que deve ser colocada em consideração são as suas necessidades, se você quer desempenho acima de tudo, se você deseja tolerância a falhas e segurança dos dados ou se prefere o meio termo entre isso, essas e outras variáveis devem ser levadas em consideração para se tomar a decisão de qual modelo de RAID é melhor montar para que assim você tenha um uso mais eficiente de armazenamento, custo e que satisfaça as suas necessidades enquanto empresa ou usuário comum.


5 - CONCLUSÃO

Com base na pesquisa realizada e nos tópicos apresentados neste artigo acreditamos que o objetivo descrito no começo deste artigo possa ter sido alcançado, isso é, que entendemos os motivos que fizeram o RAID surgem, o que é de o RAID, quais os tipos de RAID que temos atualmente e quais as características de cada um. Podemos entender também que o RAID provavelmente no meio empresarial se torna algo quase que essencial para melhorar a eficiência dos sistemas de armazenamento e principalmente a segurança e tolerância a falhas, sendo essa provavelmente a área que causa maior impacto pois a quantidade de dados importantes que uma empresa armazena é grande e a perda deles por qualquer motivo pode causar grandes problemas, o RAID surge justamente para ajudar nessa questão como já comentado, enquanto que para usuários comuns o uso do RAID se torna mais limitado a pessoas com algumas necessidades específicas e conhecimentos mais aprofundados, não sendo talvez tão presente assim. Pesquisas com foco em entender o uso do RAID, por exemplo, no dia a dia de uma empresa, como também para mensurar a porcentagem de empresas de uma determinada cidade que já tiveram problemas com perda de dados por conta de falhas no HD e o uso de RAID se demonstrou extremamente útil ou até mesmo outros assuntos relacionados ao RAID, seus usos, tipos etc. com certeza serão extremamente úteis para entender ainda melhor esse tipo de assunto.


6 - REFERÊNCIAS

PATTERSON, D. A.; GIBSON, G.; KATZ, R. H. A Case for Redundant Arrays of Inexpensive Disks (RAID). [s.l.] University of California - Berkeley, 1987. Disponível em:https://web.mit.edu/6.033/2015/wwwdocs/papers/Patterson88.pdf. Acesso em: 3 set. 2023

LEGATTI, E. Descomplicando RAID 01 (0+1) e RAID 10 (1+0). Disponível em: <https://eduardolegatti.blogspot.com/2008/03/descomplicando-raid-01-01-e-raid-10-10.html>. Acesso em: 3 set. 2023.

RAID - GTA UFRJ. Disponível em: <https://www.gta.ufrj.br/grad/07_1/hd/raid.html>. Acesso em: 3 set. 2023.

What is mean time between failure? - IBM. Disponível em: <https://www.ibm.com/topics/mtbf>. Acesso em: 3 set. 2023.

FERREIRA, D. A.; MATAYOSHI, G. Y. Aplicação de RAID em Sistema de Arquivos Distribuídos. Campus Universitário Darcy Ribeiro, Asa Norte, Brasília - DF, Brasil: Universidade de Brasília - Instituto de Ciências Exatas (Departamento de Ciência da Computação), 24 jun. 2016. Disponível em: https://bdm.unb.br/bitstream/10483/16024/1/2016_DiogoAssisFerreira_GetulioYassuykiMatayoshi_tcc.pdf. Acesso em: 3 set. 2023.

LOBATO, D. C. Proposta de um Ambiente de Simulação e Aprendizado Inteligente para RAID. [s.l.] USP – São Carlos , 2000. Disponível em: https://www.teses.usp.br/teses/disponiveis/55/55134/tde-26072001-181852/publico/MScDissert.dclobato.pdf. Acesso em: 3 set. 2023

JUNIOR, L. O. M. Organização de Computadores Digitais. [s.d.]. Disponível em: <https://dcm.ffclrp.usp.br/~murta/OCD/org_8_inf_digital.pdf>. Acesso em: 3 set. 2023

ROSÁRIO, L. G. Trabalhando com RAID (Redundant Array of Independent Disk) – Parte 01. Disponível em: <https://imasters.com.br/data/trabalhando-com-raid-redundant-array-of-independent-disk-parte-01>. Acesso em: 3 set. 2023.

ALBUQUERQUE, H. et al. Sistemas de Tempo Real - Tolerância a falhas. Disponível em: https://www.cin.ufpe.br/~jvob/correcao.html#:~:text=C%C3%B3digo%20de%20Hamming&text=O%20limite%20m%C3%A1ximo%20de%20bits,n%C3%BAmero%20de%20bits%20de%20dados. Acesso em: 4 set. 2023.

Código de Hamming - IME USP. Disponível em: <https://www.ime.usp.br/~song/mac412/hamming.pdf>. Acesso em: 4 set. 2023.

NATARAJAN, R. RAID 2, RAID 3, RAID 4, RAID 6 Explained with Diagram. Disponível em: <https://www.thegeekstuff.com/2011/11/raid2-raid3-raid4-raid6/>. Acesso em: 4 set. 2023.

AKITA, F. Quebrei 3 HDs: Entendendo Armazenamento. Disponível em: <https://www.youtube.com/watch?v=lxjBgxmDZAI>. Acesso em: 7 set. 2023

Top comments (0)