Escolhas Práticas de RAID para Arrays Baseados em Discos Rígidos
Uma quantidade verdadeiramente monumental de informações é abundante em referência aos sistemas de armazenamento RAID, explorando tópicos como risco, desempenho, capacidade, tendências, abordagens e muito mais. Embora o trabalho sobre este assunto seja quase impressionante, a informação pode ser destilada em um punhado de abordagens de armazenamento comuns e práticas que cobrirão quase todos os casos de uso. Meu objetivo aqui é fornecer um guia prático que permitirá a um profissional não especializado em armazenamento abordar a tomada de decisões sobre RAID de maneira prática e, o mais importante, segura.
Para os fins deste guia, assumiremos projetos de armazenamento de no máximo vinte e cinco discos tradicionais (discos de prato giratório, propriamente conhecidos como discos Winchester). Esses discos poderiam ser, comumente, SFF (2,5″) ou LFF (3,5″), SATA ou SAS, de consumo ou corporativos. Não abordaremos os discos de estado sólido, pois estes têm características muito diferentes e exigem sua própria orientação. Sistemas de armazenamento maiores do que cerca de vinte e cinco discos rígidos não devem partir da orientação padrão, mas se aprofundar em necessidades específicas de armazenamento para garantir um planejamento adequado.
A orientação aqui é escrita para sistemas padrão em 2015. Ao longo das últimas duas décadas, as abordagens comuns ao armazenamento RAID mudaram drasticamente e, embora não se preveja que os fatores-chave que influenciam essas decisões mudem o suficiente no futuro para alterar estas recomendações, é bem possível que mudem. Um bom design de RAID de 1998 é um design de RAID muito ruim hoje. A taxa de mudança na indústria diminuiu significativamente desde aquela época e estas recomendações provavelmente se manterão por muito tempo, muito possivelmente até que o armazenamento em discos rígidos baseados em pratos não esteja mais disponível ou, ao menos, popular, mas, como todas as coisas, as previsões estão sujeitas a grandes mudanças.
Em geral, usamos o que é denominado a abordagem de “Um Grande Array” (One Big Array). Ou seja, um único array RAID no qual todas as partições de sistema e de dados são criadas. A necessidade ou o desejo de dividir nosso armazenamento em múltiplos arrays físicos está, em grande parte, ultrapassado hoje e só deve ser feito em circunstâncias não gerais. Somente em situações em que um estudo cuidadoso das necessidades de armazenamento e uma análise aprofundada estão sendo realizados é que devemos considerar a divisão de arrays. A divisão de arrays é muito mais propensa a causar dano do que benefício. Na dúvida, evite arrays divididos. O objetivo deste guia são regras práticas gerais que permitam a qualquer profissional de TI construir um sistema de armazenamento seguro e confiável. As regras práticas não cobrem e não podem cobrir todos os cenários; exceções sempre existem. Mas a ideia aqui é cobrir a grande maioria dos casos com abordagens comprovadas e consagradas que são projetadas em torno de equipamentos, casos de uso e necessidades modernos, ao mesmo tempo em que se tem o cuidado de errar pelo lado da segurança – quando uma escolha é menos que ideal, ela ainda é segura. Nenhuma destas escolhas é, de forma alguma, imprudente; na pior das hipóteses, elas são excessivamente conservadoras.
O primeiro cenário que devemos considerar é se os seus dados não importam. Isto pode soar como algo estranho de se considerar, mas é um cenário muito importante. Há muitas ocasiões em que os dados salvos em disco são considerados efêmeros e não precisam ser protegidos. Isto é comum para dados reconstruíveis, como espaço de trabalho para renderização, espaços de cálculo intermediário ou caches – situações em que gastar dinheiro para proteger os dados é um desperdício e seria aceitável simplesmente recriar os dados perdidos em vez de protegê-los. Este poderia ser um caso em que o tempo de inatividade não é um problema e os dados são estáticos ou quase isso e, em vez de gastar para reduzir o tempo de inatividade, nos preocupamos apenas em proteger os dados por meio de mecanismos de backup, de modo que, se um array falhar, simplesmente o restauramos por completo. Nesses casos, a escolha óbvia é o RAID 0. Ele é muito rápido, muito simples e fornece a capacidade mais econômica. A única desvantagem do RAID 0 é que ele é frágil e não oferece nenhuma proteção contra a perda de dados em caso de falha de disco ou mesmo de um URE (que causaria corrupção de dados da mesma forma que um disco de desktop enfrenta).
Deve-se notar que uma exceção à abordagem de “Um Grande Array” que seria comum ocorre em sistemas que usam RAID 0 para os dados. Haveria um argumento muito bom a favor de um pequeno array de discos dedicado ao sistema operacional e aos dados de aplicativos, que seriam trabalhosos de reinstalar em caso de perda do array, sendo mantido em RAID 1, e do array de dados em RAID 0 sendo separado dele. Dessa forma, a recuperação poderia ser muito rápida, em vez de ser necessário reconstruir completamente todo o sistema do zero, em vez de simplesmente recriar os dados.
Assumindo que eliminamos os casos em que os dados não requerem proteção, assumiremos para todos os casos restantes que os dados são bastante importantes e que queremos protegê-los a algum custo. Assumiremos que proteger os dados como eles existem no armazenamento em produção é importante, geralmente porque queremos evitar o tempo de inatividade ou porque queremos garantir a integridade dos dados, já que os dados em disco não são estáticos e uma falha de array constituiria também uma perda de dados. Com essa premissa, prosseguiremos.
Se tivermos um array de apenas dois discos, a resposta é muito simples: escolhemos o RAID 1. Não há outra opção neste tamanho, portanto não há decisão a ser tomada. Em teoria, deveríamos planejar nossos arrays de forma holística e não depois que o número de discos é determinado; o número de discos e o tipo de array escolhido devem ser definidos em conjunto, e não os discos comprados primeiro e depois o uso determinado com base nesse número arbitrário, mas os chassis de dois discos são tão comuns que vale a pena mencioná-los como um caso.
Da mesma forma, com um array de quatro discos, a única escolha real a considerar é o RAID 10. Não há necessidade de avaliação adicional. Simplesmente selecione o RAID 10 e prossiga.
Um caso desconfortável é o array de três discos. É muito, muito raro estarmos limitados a três discos, pois o único chassi comum limitado a três discos era o Apple Xserve, e este saiu do mercado há algum tempo, de modo que a necessidade de lidar com a tomada de decisão em torno de arrays de três discos rígidos deve ser extremamente improvável. Nos casos em que temos três discos, muitas vezes é melhor buscar orientação, mas as abordagens mais comuns são adicionar um quarto disco e, portanto, escolher o RAID 10 ou, se não for necessária capacidade superior à de um único disco, colocar os três discos em um único RAID 1 de espelho triplo.
Para todos os outros casos, portanto, estamos lidando com cinco a vinte e cinco discos. Como eliminamos as situações em que o RAID 0 e o RAID 1 se aplicariam, restam todos os cenários comuns reduzidos ao RAID 6 e ao RAID 10, e estes constituem a grande maioria dos casos. Escolher entre o RAID 6 e o RAID 10 torna-se o maior desafio que enfrentaremos, pois devemos olhar exclusivamente para as nossas necessidades “flexíveis” de confiabilidade, desempenho e capacidade.
Escolher entre o RAID 6 e o RAID 10 não deveria ser incrivelmente difícil. O RAID 10 é ideal para situações em que o desempenho e a segurança são as prioridades. O RAID 10 tem um desempenho de escrita muito mais rápido e é seguro independentemente do tipo de disco usado (discos de consumo de baixo custo ainda podem ser extremamente seguros, mesmo em grandes arrays). O RAID 10 escala bem para tamanhos extremamente grandes, muito maiores do que deveriam ser implementados usando regras práticas! O RAID 10 é a mais segura de todas as escolhas; é rápido e seguro. As desvantagens óbvias são que o RAID 10 tem menos capacidade de armazenamento a partir dos mesmos discos e é mais caro em termos de capacidade. Deve-se mencionar que o RAID 10 só pode utilizar um número par de discos; os discos são adicionados em pares.
O RAID 6 é geralmente seguro e rápido, mas nunca tão seguro ou tão rápido quanto o RAID 10. O RAID 6 sofre especificamente com o desempenho de escrita, sendo, portanto, muito pouco adequado para cargas de trabalho como bancos de dados e cargas fortemente mistas, como em grandes sistemas de virtualização. O RAID 6 é econômico e proporciona um forte foco na capacidade disponível em comparação com o RAID 10. Quando os orçamentos são apertados ou as necessidades de capacidade dominam sobre o desempenho, o RAID 6 é uma escolha ideal. Raramente a diferença de segurança entre o RAID 10 e o RAID 6 é uma preocupação, exceto em sistemas muito grandes com discos de classe de consumo. O RAID 6 está sujeito a um risco adicional com discos de classe de consumo, do qual o RAID 10 não é afetado, o que poderia justificar alguma preocupação em torno da confiabilidade em sistemas RAID 6 maiores, como aqueles acima de cerca de 40 TB, quando discos de consumo são usados.
No espaço das pequenas empresas, especialmente, a maioria dos sistemas usará o RAID 10 simplesmente porque os arrays raramente precisam ser maiores do que quatro discos. Quando os arrays são maiores, o RAID 6 é a escolha mais comum devido a orçamentos um tanto apertados e a uma preocupação geralmente baixa com o desempenho. Tanto o RAID 6 quanto o RAID 10 são soluções seguras e eficazes para quase todos os cenários de uso, com o RAID 10 predominando quando o desempenho ou a confiabilidade extrema são fundamentais e o RAID 6 predominando quando o custo e a capacidade são fundamentais. E, é claro, quando as necessidades de armazenamento são altamente singulares ou muito grandes, como maiores do que vinte e cinco discos rígidos em um array, lembre-se de recorrer a um consultor de armazenamento, pois o cenário pode facilmente se tornar muito complexo. O armazenamento é um dos lugares onde compensa ser extremamente diligente, pois muitas coisas dependem dele, os erros são muito fáceis de cometer e a flexibilidade para alterá-lo posteriormente é muito baixa.
