ATAQUE - RAID

RAID ( / r d / ; " Redundant Array of Inexpensive Disks " ou " Redundant Array of Independent Disks ") é uma tecnologia de virtualização de armazenamento de dados que combina vários componentes de unidade de disco físico em uma ou mais unidades lógicas para fins de redundância de dados , melhoria de desempenho, ou ambos. Isso contrastava com o conceito anterior de unidades de disco de mainframe altamente confiáveis, conhecidas como "único disco grande e caro" (SLED).

Os dados são distribuídos pelas unidades de uma das várias maneiras, conhecidas como níveis de RAID, dependendo do nível necessário de redundância e desempenho. Os diferentes esquemas, ou layouts de distribuição de dados, são nomeados pela palavra "RAID" seguida por um número, por exemplo RAID 0 ou RAID 1. Cada esquema, ou nível de RAID, fornece um equilíbrio diferente entre os objetivos principais: confiabilidade , disponibilidade , desempenho e capacidade . Níveis de RAID maiores que RAID 0 fornecem proteção contra erros de leitura de setor irrecuperáveis , bem como contra falhas de unidades físicas inteiras.

História

O termo "RAID" foi inventado por David Patterson , Garth A. Gibson e Randy Katz na University of California, Berkeley em 1987. Em seu artigo de junho de 1988 "A Case for Redundant Arrays of Inexpensive Disks (RAID)", apresentado em Na conferência SIGMOD , eles argumentaram que as unidades de disco de mainframe de alto desempenho da época podiam ser superadas em desempenho por uma série de unidades de baixo custo que haviam sido desenvolvidas para o crescente mercado de computadores pessoais . Embora as falhas aumentem em proporção ao número de unidades, ao configurar para redundância, a confiabilidade de uma matriz pode exceder em muito a de qualquer unidade única grande.

Embora ainda não use essa terminologia, as tecnologias dos cinco níveis de RAID mencionados no artigo de junho de 1988 foram usadas em vários produtos antes da publicação do artigo, incluindo o seguinte:

  • O espelhamento (RAID 1) estava bem estabelecido na década de 1970, incluindo, por exemplo, Tandem NonStop Systems .
  • Em 1977, Norman Ken Ouchi, da IBM, registrou uma patente revelando o que foi posteriormente denominado RAID 4.
  • Por volta de 1983, a DEC começou a distribuir unidades de disco RA8X espelhadas de subsistema (agora conhecidas como RAID 1) como parte de seu subsistema HSC50.
  • Em 1986, Clark et al. na IBM entrou com uma patente divulgando o que foi posteriormente denominado RAID 5.
  • Por volta de 1988, o DataVault da Thinking Machines usava códigos de correção de erros (agora conhecidos como RAID 2) em uma série de unidades de disco. Uma abordagem semelhante foi usada no início dos anos 1960 no IBM 353 .

Mais tarde, os fabricantes da indústria redefiniram a sigla RAID para "Redundant Array of Independent Disks".

Visão geral

Muitos níveis de RAID empregam um esquema de proteção de erro denominado " paridade ", um método amplamente utilizado em tecnologia da informação para fornecer tolerância a falhas em um determinado conjunto de dados. A maioria usa XOR simples , mas o RAID 6 usa duas paridades separadas com base respectivamente na adição e multiplicação em um determinado campo de Galois ou correção de erro Reed-Solomon .

O RAID também pode fornecer segurança de dados com unidades de estado sólido (SSDs) sem a despesa de um sistema totalmente SSD. Por exemplo, um SSD rápido pode ser espelhado com uma unidade mecânica. Para que essa configuração forneça uma vantagem significativa de velocidade, é necessário um controlador apropriado que use o SSD rápido para todas as operações de leitura. Adaptec chama isso de "RAID híbrido".

Níveis padrão

Servidores de armazenamento com 24 unidades de disco rígido cada e controladores RAID de hardware integrados com suporte a vários níveis de RAID

Originalmente, havia cinco níveis padrão de RAID, mas muitas variações evoluíram, incluindo vários níveis aninhados e muitos níveis não padrão (principalmente proprietários ). Os níveis de RAID e seus formatos de dados associados são padronizados pela Storage Networking Industry Association (SNIA) no padrão Common RAID Disk Drive Format (DDF):

O RAID 0 consiste em distribuição , mas sem espelhamento ou paridade . Comparado a um volume estendido , a capacidade de um volume RAID 0 é a mesma; é a soma das capacidades das unidades do conjunto. Mas, como o striping distribui o conteúdo de cada arquivo entre todas as unidades do conjunto, a falha de qualquer unidade faz com que todo o volume RAID 0 e todos os arquivos sejam perdidos. Em comparação, um volume estendido preserva os arquivos nas unidades infalíveis. O benefício do RAID 0 é que a taxa de transferência das operações de leitura e gravação em qualquer arquivo é multiplicada pelo número de unidades porque, ao contrário dos volumes estendidos, as leituras e gravações são feitas simultaneamente . O custo é o aumento da vulnerabilidade a falhas de unidade - uma vez que qualquer unidade em uma configuração de RAID 0 com falha faz com que todo o volume seja perdido, a taxa média de falha do volume aumenta com o número de unidades conectadas.

O RAID 1 consiste em espelhamento de dados, sem paridade ou distribuição. Os dados são gravados de forma idêntica em duas ou mais unidades, produzindo assim um "conjunto espelhado" de unidades. Assim, qualquer solicitação de leitura pode ser atendida por qualquer unidade do conjunto. Se uma solicitação é transmitida para cada unidade do conjunto, ela pode ser atendida pela unidade que acessa os dados primeiro (dependendo de seu tempo de busca e latência rotacional ), melhorando o desempenho. A taxa de transferência de leitura sustentada, se o controlador ou software for otimizado para ele, se aproxima da soma das taxas de transferência de cada unidade no conjunto, assim como para o RAID 0. A taxa de transferência de leitura real da maioria das implementações de RAID 1 é mais lenta do que a da unidade mais rápida. A taxa de transferência de gravação é sempre mais lenta porque cada unidade deve ser atualizada, e a unidade mais lenta limita o desempenho de gravação. O array continua a operar enquanto pelo menos uma unidade estiver funcionando.

O RAID 2 consiste em distribuição de nível de bits com paridade de código de Hamming dedicada . Toda a rotação do fuso do disco é sincronizada e os dados são distribuídos de forma que cada bit sequencial esteja em uma unidade diferente. A paridade do código de Hamming é calculada nos bits correspondentes e armazenada em pelo menos uma unidade de paridade. Este nível tem significado histórico apenas; embora tenha sido usado em algumas máquinas antigas (por exemplo, a Thinking Machines CM-2), a partir de 2014 não é usado por nenhum sistema disponível comercialmente.

O RAID 3 consiste em distribuição em nível de byte com paridade dedicada. Toda a rotação do fuso do disco é sincronizada e os dados são distribuídos de forma que cada byte sequencial esteja em uma unidade diferente. A paridade é calculada em bytes correspondentes e armazenada em uma unidade de paridade dedicada. Embora existam implementações, o RAID 3 não é comumente usado na prática.

O RAID 4 consiste em distribuição em nível de bloco com paridade dedicada. Este nível era usado anteriormente pela NetApp , mas agora foi amplamente substituído por uma implementação proprietária do RAID 4 com dois discos de paridade, chamado RAID-DP . A principal vantagem do RAID 4 sobre o RAID 2 e 3 é o paralelismo de E / S: em RAID 2 e 3, uma única operação de E / S de leitura requer a leitura de todo o grupo de unidades de dados, enquanto em RAID 4 uma operação de leitura de E / S exige não precisa se espalhar por todas as unidades de dados. Como resultado, mais operações de E / S podem ser executadas em paralelo, melhorando o desempenho de pequenas transferências.

O RAID 5 consiste em distribuição em nível de bloco com paridade distribuída. Ao contrário do RAID 4, as informações de paridade são distribuídas entre as unidades, exigindo que todas as unidades, exceto uma, estejam presentes para operar. Em caso de falha de uma única unidade, as leituras subsequentes podem ser calculadas a partir da paridade distribuída de forma que nenhum dado seja perdido. O RAID 5 requer pelo menos três discos. Como todos os conceitos de paridade única, grandes implementações de RAID 5 são suscetíveis a falhas do sistema devido às tendências em relação ao tempo de reconstrução da matriz e à chance de falha da unidade durante a reconstrução (consulte a seção " Aumentando o tempo de reconstrução e a probabilidade de falha " abaixo). A reconstrução de um array requer a leitura de todos os dados de todos os discos, abrindo uma chance para uma segunda falha de unidade e a perda de todo o array.

O RAID 6 consiste em distribuição em nível de bloco com paridade distribuída dupla. A paridade dupla fornece tolerância a falhas de até duas unidades com falha. Isso torna os grupos RAID maiores mais práticos, especialmente para sistemas de alta disponibilidade, pois as unidades de grande capacidade demoram mais para restaurar. O RAID 6 requer um mínimo de quatro discos. Tal como acontece com o RAID 5, uma única falha de unidade resulta na redução do desempenho de todo o array até que a unidade com falha seja substituída. Com um array RAID 6, usando drives de várias fontes e fabricantes, é possível mitigar a maioria dos problemas associados ao RAID 5. Quanto maiores as capacidades do drive e quanto maior o tamanho do array, mais importante se torna escolher o RAID 6 em vez do RAID 5. O RAID 10 também minimiza esses problemas.

RAID aninhado (híbrido)

No que foi originalmente denominado RAID híbrido , muitos controladores de armazenamento permitem que os níveis do RAID sejam aninhados. Os elementos de um RAID podem ser unidades ou matrizes individuais. As matrizes raramente são aninhadas em mais de um nível de profundidade.

A matriz final é conhecida como matriz superior. Quando a matriz superior é RAID 0 (como em RAID 1 + 0 e RAID 5 + 0), a maioria dos fornecedores omite o "+" (resultando em RAID 10 e RAID 50, respectivamente).

  • RAID 0 + 1: cria duas faixas e as espelha. Se ocorrer uma falha de unidade única, então um dos espelhos falhou, neste ponto ele está funcionando efetivamente como RAID 0 sem redundância. Risco significativamente maior é introduzido durante uma reconstrução do que RAID 1 + 0, pois todos os dados de todas as unidades na fração restante devem ser lidos em vez de apenas de uma unidade, aumentando a chance de um erro de leitura irrecuperável (URE) e estendendo significativamente a janela de reconstrução.
  • RAID 1 + 0: (consulte: RAID 10 ) cria um conjunto distribuído de uma série de unidades espelhadas. O array pode suportar múltiplas perdas de drives, desde que nenhum espelho perca todos os drives.
  • JBOD RAID N + N: Com JBOD ( apenas um monte de discos ), é possível concatenar discos, mas também volumes, como conjuntos RAID. Com capacidades de unidade maiores, o atraso de gravação e o tempo de reconstrução aumentam drasticamente (especialmente, conforme descrito acima, com RAID 5 e RAID 6). Ao dividir um conjunto RAID N maior em subconjuntos menores e concatená-los com JBOD linear, o tempo de gravação e reconstrução será reduzido. Se um controlador RAID de hardware não for capaz de aninhar JBOD linear com RAID N, então o JBOD linear pode ser obtido com RAID de software no nível do sistema operacional em combinação com volumes de subconjunto RAID N separados criados em um ou mais controladores RAID de hardware. Além de um aumento drástico de velocidade, isso também oferece uma vantagem substancial: a possibilidade de iniciar um JBOD linear com um pequeno conjunto de discos e poder expandir o conjunto total com discos de tamanhos diferentes, posteriormente (em tempo, discos de maior disponível no mercado). Há outra vantagem na forma de recuperação de desastres (se um subconjunto RAID N falhar, os dados nos outros subconjuntos RAID N não serão perdidos, reduzindo o tempo de restauração).

Níveis fora do padrão

Muitas configurações diferentes dos níveis básicos de RAID numerados são possíveis, e muitas empresas, organizações e grupos criaram suas próprias configurações não padrão, em muitos casos projetadas para atender às necessidades especializadas de um pequeno grupo de nicho. Essas configurações incluem o seguinte:

  • O Linux MD RAID 10 fornece um driver RAID geral que em seu layout "próximo" é padronizado para um RAID 1 padrão com duas unidades e um RAID 1 + 0 padrão com quatro unidades; no entanto, pode incluir qualquer número de unidades, incluindo números ímpares. Com seu layout "distante", o MD RAID 10 pode ser executado tanto distribuído quanto espelhado, mesmo com apenas duas unidades no f2layout; isso executa o espelhamento com leituras distribuídas, fornecendo o desempenho de leitura do RAID 0. RAID 1 regular, conforme fornecido pelo RAID de software do Linux , não distribui leituras, mas pode realizar leituras em paralelo.
  • O Hadoop tem um sistema RAID que gera um arquivo de paridade ao xor-ing uma faixa de blocos em um único arquivo HDFS.
  • BeeGFS , o sistema de arquivos paralelo, tem striping interno (comparável ao RAID0 baseado em arquivo) e opções de replicação (comparável ao RAID10 baseado em arquivo) para agregar taxa de transferência e capacidade de vários servidores e é normalmente baseado em um RAID subjacente para fazer disco falhas transparentes.
  • O RAID desfigurado espalha cópias duplas (ou mais) dos dados em todos os discos (possivelmente centenas) em um subsistema de armazenamento, enquanto retém capacidade sobressalente suficiente para permitir que alguns discos falhem. A dispersão é baseada em algoritmos que dão a aparência de arbitrariedade. Quando um ou mais discos falham, as cópias ausentes são reconstruídas nessa capacidade sobressalente, novamente de forma arbitrária. Como a reconstrução é feita de e para todos os discos restantes, ela opera muito mais rápido do que com o RAID tradicional, reduzindo o impacto geral do sistema de armazenamento nos clientes.

Implementações

A distribuição de dados em várias unidades pode ser gerenciada por hardware de computador dedicado ou por software . Uma solução de software pode ser parte do sistema operacional, parte do firmware e drivers fornecidos com um controlador de unidade padrão (denominado "RAID de software assistido por hardware") ou pode residir inteiramente no controlador RAID de hardware.

Baseado em hardware

Configuração de RAID de hardware

Os controladores RAID de hardware podem ser configurados por meio do BIOS da placa ou ROM opcional antes que um sistema operacional seja inicializado e, depois que o sistema operacional for inicializado, utilitários de configuração proprietários estão disponíveis no fabricante de cada controlador. Ao contrário dos controladores de interface de rede para Ethernet , que geralmente podem ser configurados e atendidos inteiramente por meio dos paradigmas de sistema operacional comuns, como ifconfig no Unix , sem a necessidade de ferramentas de terceiros, cada fabricante de cada controlador RAID geralmente fornece suas próprias ferramentas de software proprietárias para cada sistema operacional que eles considerem oferecer suporte, garantindo o aprisionamento do fornecedor e contribuindo para problemas de confiabilidade.

Por exemplo, no FreeBSD , para acessar a configuração dos controladores Adaptec RAID, os usuários são obrigados a habilitar a camada de compatibilidade do Linux e usar as ferramentas do Linux da Adaptec, potencialmente comprometendo a estabilidade, confiabilidade e segurança de sua configuração, especialmente ao tomar o visão de longo prazo .

Alguns outros sistemas operacionais implementaram suas próprias estruturas genéricas para fazer a interface com qualquer controlador RAID e fornecem ferramentas para monitorar o status do volume RAID, bem como facilitar a identificação da unidade por meio de LED piscando, gerenciamento de alarme e designações de disco sobressalente de dentro do sistema operacional sem ter que reiniciar no BIOS da placa. Por exemplo, esta foi a abordagem adotada pelo OpenBSD em 2005 com seu bio (4) pseudo-dispositivo e o utilitário bioctl , que fornece o status do volume e permite o controle de LED / alarme / ponto de acesso, bem como os sensores (incluindo o sensor da unidade ) para monitoramento de saúde; essa abordagem foi posteriormente adotada e ampliada pelo NetBSD em 2007 também.

Baseado em software

As implementações de RAID de software são fornecidas por muitos sistemas operacionais modernos . O RAID de software pode ser implementado como:

  • Uma camada que abstrai vários dispositivos, fornecendo assim um único dispositivo virtual (como o md do kernel do Linux e o softraid do OpenBSD)
  • Um gerenciador de volume lógico mais genérico (fornecido com a maioria dos sistemas operacionais de classe de servidor, como Veritas ou LVM )
  • Um componente do sistema de arquivos (como ZFS , Spectrum Scale ou Btrfs )
  • Uma camada que fica acima de qualquer sistema de arquivos e fornece proteção por paridade aos dados do usuário (como RAID-F)

Alguns sistemas de arquivos avançados são projetados para organizar dados em vários dispositivos de armazenamento diretamente, sem a necessidade da ajuda de um gerenciador de volume lógico de terceiros:

  • O ZFS suporta os equivalentes de RAID 0, RAID 1, RAID 5 (RAID-Z1) de paridade única, RAID 6 (RAID-Z2) de paridade dupla e uma versão de paridade tripla (RAID-Z3) também conhecida como RAID 7 Como ele sempre distribui sobre vdevs de nível superior, ele suporta equivalentes dos níveis RAID aninhados 1 + 0, 5 + 0 e 6 + 0 (bem como conjuntos de paridade tripla segmentados), mas não outras combinações aninhadas. ZFS é o sistema de arquivos nativo no Solaris e illumos e também está disponível no FreeBSD e Linux. As implementações de código aberto do ZFS são ativamente desenvolvidas sob o projeto guarda-chuva OpenZFS .
  • O Spectrum Scale , inicialmente desenvolvido pela IBM para streaming de mídia e análises escalonáveis, oferece suporte a esquemas de proteção RAID desajustados de até n + 3. Uma particularidade é a prioridade de reconstrução dinâmica, que é executada com baixo impacto em segundo plano até que um bloco de dados atinja a redundância n + 0, caso em que esse bloco é rapidamente reconstruído para pelo menos n + 1. Além disso, o Spectrum Scale oferece suporte a RAID 1 de distância metropolitana.
  • Btrfs suporta RAID 0, RAID 1 e RAID 10 (RAID 5 e 6 estão em desenvolvimento).
  • O XFS foi originalmente projetado para fornecer um gerenciador de volume integrado que suporta concatenação, espelhamento e distribuição de vários dispositivos de armazenamento físico. No entanto, a implementação do XFS no kernel do Linux carece do gerenciador de volume integrado.

Muitos sistemas operacionais fornecem implementações de RAID, incluindo o seguinte:

  • Hewlett-Packard 's OpenVMS operacional suporta sistema RAID 1. Os discos espelhados, chamado de 'set shadow', pode ser em diferentes locais para ajudar na recuperação de desastres.
  • O macOS da Apple e o macOS Server são compatíveis com RAID 0, RAID 1 e RAID 1 + 0.
  • O FreeBSD suporta RAID 0, RAID 1, RAID 3 e RAID 5, e todos os agrupamentos via módulos GEOM e ccd.
  • O MD do Linux suporta RAID 0, RAID 1, RAID 4, RAID 5, RAID 6 e todos os agrupamentos. Certas operações de remodelagem / redimensionamento / expansão também são suportadas.
  • O Microsoft Windows oferece suporte a RAID 0, RAID 1 e RAID 5 usando várias implementações de software. O Logical Disk Manager , introduzido com o Windows 2000 , permite a criação de volumes RAID 0, RAID 1 e RAID 5 usando discos dinâmicos , mas isso foi limitado apenas às edições profissionais e de servidor do Windows até o lançamento do Windows 8 . O Windows XP pode ser modificado para desbloquear o suporte para RAID 0, 1 e 5. O Windows 8 e o Windows Server 2012 introduziram um recurso semelhante ao RAID conhecido como Espaços de Armazenamento , que também permite aos usuários especificar espelhamento, paridade ou nenhuma redundância em uma pasta -por pasta. Essas opções são semelhantes a RAID 1 e RAID 5, mas são implementadas em um nível de abstração mais alto.
  • O NetBSD suporta RAID 0, 1, 4 e 5 por meio de sua implementação de software, chamada RAIDframe.
  • O OpenBSD suporta RAID 0, 1 e 5 por meio de sua implementação de software, chamada softraid.

Se uma unidade de inicialização falhar, o sistema deve ser sofisticado o suficiente para ser capaz de inicializar a partir da (s) unidade (s) restante (s). Por exemplo, considere um computador cujo disco está configurado como RAID 1 (unidades espelhadas); se a primeira unidade no array falhar, então um carregador de boot de primeiro estágio pode não ser sofisticado o suficiente para tentar carregar o carregador de boot de segundo estágio da segunda unidade como um fallback. O carregador de boot de segundo estágio para FreeBSD é capaz de carregar um kernel de tal array.

Baseado em firmware e driver

Um controlador SATA 3.0 que fornece funcionalidade RAID por meio de firmware e drivers proprietários

O RAID implementado por software nem sempre é compatível com o processo de inicialização do sistema e geralmente é impraticável para versões de desktop do Windows. No entanto, os controladores RAID de hardware são caros e proprietários. Para preencher essa lacuna, foram introduzidos "controladores RAID" baratos que não contêm um chip controlador RAID dedicado, mas simplesmente um chip controlador de unidade padrão com firmware e drivers proprietários. Durante a inicialização inicial, o RAID é implementado pelo firmware e, uma vez que o sistema operacional tenha sido completamente carregado, os drivers assumem o controle. Conseqüentemente, esses controladores podem não funcionar quando o suporte do driver não estiver disponível para o sistema operacional host. Um exemplo é a Tecnologia de armazenamento Intel Rapid , implementada em muitas placas-mãe para consumidores.

Como algum suporte mínimo de hardware está envolvido, esta implementação também é chamada de "RAID de software assistido por hardware", RAID de "modelo híbrido" ou mesmo "RAID falso". Se RAID 5 for suportado, o hardware pode fornecer um acelerador XOR de hardware. Uma vantagem desse modelo sobre o RAID de software puro é que - se estiver usando um modo de redundância - a unidade de inicialização é protegida contra falhas (devido ao firmware) durante o processo de inicialização, mesmo antes que os drivers do sistema operacional assumam o controle.

Integridade

A depuração de dados (referida em alguns ambientes como leitura de patrulha ) envolve a leitura e verificação periódicas pelo controlador RAID de todos os blocos em uma matriz, incluindo aqueles não acessados ​​de outra forma. Isso detecta blocos defeituosos antes do uso. A depuração de dados verifica se há blocos defeituosos em cada dispositivo de armazenamento de uma matriz, mas também usa a redundância da matriz para recuperar blocos defeituosos em uma única unidade e reatribuir os dados recuperados a blocos sobressalentes em outro local da unidade.

Freqüentemente, um controlador RAID é configurado para "descartar" uma unidade de componente (ou seja, assumir que uma unidade de componente falhou) se a unidade não responder por cerca de oito segundos; isso pode fazer com que o controlador de array deixe cair uma unidade boa porque essa unidade não teve tempo suficiente para concluir o procedimento de recuperação de erro interno. Conseqüentemente, o uso de unidades vendidas para o consumidor com RAID pode ser arriscado e as chamadas unidades de "classe empresarial" limitam o tempo de recuperação de erro para reduzir o risco. As unidades de desktop da Western Digital costumavam ter uma correção específica. Um utilitário chamado WDTLER.exe limitava o tempo de recuperação de erro de uma unidade. O utilitário habilitou TLER (recuperação de erro por tempo limitado) , o que limita o tempo de recuperação de erro a sete segundos. Por volta de setembro de 2009, a Western Digital desabilitou esse recurso em suas unidades de desktop (como a linha Caviar Black), tornando essas unidades inadequadas para uso em configurações RAID. No entanto, as unidades de classe empresarial Western Digital são enviadas de fábrica com TLER habilitado. Tecnologias semelhantes são usadas pela Seagate, Samsung e Hitachi. Para uso não RAID, uma unidade de classe empresarial com um curto tempo limite de recuperação de erro que não pode ser alterado é, portanto, menos adequada do que uma unidade de desktop. No final de 2010, o programa Smartmontools começou a suportar a configuração do ATA Error Recovery Control, permitindo que a ferramenta configure muitos discos rígidos de classe de desktop para uso em configurações RAID.

Embora o RAID possa proteger contra falha da unidade física, os dados ainda estão expostos à destruição do operador, software, hardware e vírus. Muitos estudos citam a falha do operador como uma fonte comum de mau funcionamento, como um operador de servidor substituindo a unidade incorreta em um RAID com defeito e desabilitando o sistema (mesmo temporariamente) no processo.

Um array pode ser sobrecarregado por uma falha catastrófica que excede sua capacidade de recuperação e todo o array corre o risco de sofrer danos físicos por incêndio, desastre natural e forças humanas; no entanto, os backups podem ser armazenados fora do local. Um array também é vulnerável a falhas de controlador porque nem sempre é possível migrá-lo para um controlador novo e diferente sem perda de dados.

Fraquezas

Falhas correlacionadas

Na prática, as unidades geralmente têm a mesma idade (com desgaste semelhante) e estão sujeitas ao mesmo ambiente. Como muitas falhas de unidade são devidas a problemas mecânicos (que são mais prováveis ​​em unidades mais antigas), isso viola as suposições de taxa de falha idêntica e independente entre as unidades; as falhas são, de fato, estatisticamente correlacionadas. Na prática, as chances de uma segunda falha antes que a primeira seja recuperada (causando perda de dados) são maiores do que as chances de falhas aleatórias. Em um estudo de cerca de 100.000 unidades, a probabilidade de duas unidades no mesmo cluster falharem em uma hora foi quatro vezes maior do que o previsto pela distribuição estatística exponencial - que caracteriza processos nos quais os eventos ocorrem de forma contínua e independente a uma taxa média constante. A probabilidade de duas falhas no mesmo período de 10 horas era duas vezes maior do que a prevista por uma distribuição exponencial.

Erros de leitura irrecuperáveis ​​durante a reconstrução

Erros de leitura irrecuperáveis ​​(URE) presentes como falhas de leitura de setor, também conhecidos como erros de setor latentes (LSE). A medida de avaliação de mídia associada, taxa de erro de bit irrecuperável (UBE), normalmente é garantida como sendo inferior a um bit em 10 15 para unidades de classe empresarial ( SCSI , FC , SAS ou SATA) e menos de um bit em 10 14 para unidades de classe desktop (IDE / ATA / PATA ou SATA). O aumento das capacidades da unidade e grandes instâncias do RAID 5 levaram às taxas máximas de erro insuficientes para garantir uma recuperação bem-sucedida, devido à alta probabilidade de tal erro ocorrer em uma ou mais unidades restantes durante uma reconstrução do conjunto RAID. Ao reconstruir, os esquemas baseados em paridade, como o RAID 5, são particularmente propensos aos efeitos dos UREs, pois afetam não apenas o setor onde ocorrem, mas também os blocos reconstruídos usando esse setor para cálculo de paridade.

Esquemas baseados em paridade de proteção dupla, como RAID 6, tentam resolver esse problema fornecendo redundância que permite falhas de unidade dupla; como desvantagem, esses esquemas sofrem de penalidade elevada de gravação - o número de vezes que o meio de armazenamento deve ser acessado durante uma única operação de gravação. Esquemas que duplicam (espelham) dados de uma maneira unidade a unidade, como RAID 1 e RAID 10, têm um risco menor de UREs do que aqueles que usam computação de paridade ou espelhamento entre conjuntos distribuídos. A depuração de dados , como um processo em segundo plano, pode ser usada para detectar e recuperar de UREs, reduzindo efetivamente o risco de ocorrerem durante reconstruções de RAID e causar falhas de unidade dupla. A recuperação de UREs envolve o remapeamento de setores de disco subjacentes afetados, utilizando o pool de remapeamento de setor da unidade; no caso de UREs detectados durante a depuração do plano de fundo, a redundância de dados fornecida por um conjunto RAID totalmente operacional permite que os dados ausentes sejam reconstruídos e reescritos em um setor remapeado.

Aumentando o tempo de reconstrução e a probabilidade de falha

A capacidade do drive cresceu muito mais rápido do que a velocidade de transferência, e as taxas de erro caíram apenas um pouco em comparação. Portanto, unidades de maior capacidade podem levar horas, senão dias para reconstruir, durante o qual outras unidades podem falhar ou ainda erros de leitura não detectados podem surgir. O tempo de reconstrução também é limitado se todo o array ainda estiver em operação com capacidade reduzida. Dada uma matriz com apenas uma unidade redundante (que se aplica aos níveis de RAID 3, 4 e 5, e ao RAID 1 de duas unidades "clássico"), uma segunda falha de unidade causaria a falha completa da matriz. Embora o tempo médio entre falhas (MTBF) de unidades individuais tenha aumentado com o tempo, esse aumento não acompanhou o aumento da capacidade de armazenamento das unidades. O tempo para reconstruir a matriz após uma única falha de unidade, bem como a chance de uma segunda falha durante uma reconstrução, aumentaram com o tempo.

Alguns comentaristas declararam que o RAID 6 é apenas um "band-aid" a esse respeito, porque ele apenas chuta o problema um pouco mais adiante. No entanto, de acordo com o estudo de 2006 da NetApp de Berriman et al., A chance de falha diminui por um fator de cerca de 3.800 (em relação ao RAID 5) para uma implementação adequada do RAID 6, mesmo ao usar unidades convencionais. No entanto, se as tendências tecnológicas atualmente observadas permanecerem inalteradas, em 2019 uma matriz RAID 6 terá a mesma chance de falha que sua contraparte RAID 5 teve em 2010.

Esquemas de espelhamento, como RAID 10, têm um tempo de recuperação limitado, pois exigem a cópia de uma única unidade com falha, em comparação com esquemas de paridade, como RAID 6, que exige a cópia de todos os blocos das unidades em um conjunto de matrizes. Esquemas de paridade tripla, ou espelhamento triplo, foram sugeridos como uma abordagem para melhorar a resiliência a uma falha de unidade adicional durante esse grande tempo de reconstrução.

Atomicidade

Uma falha do sistema ou outra interrupção de uma operação de gravação pode resultar em estados onde a paridade é inconsistente com os dados devido à não atomicidade do processo de gravação, de forma que a paridade não pode ser usada para recuperação no caso de uma falha de disco. Isso é comumente denominado buraco de gravação RAID 5. O furo de gravação de RAID é um problema conhecido de corrupção de dados em RAIDs mais antigos e de baixo custo, causado por desescalonamento interrompido de gravações em disco. O furo de gravação pode ser resolvido com o registro de write-ahead . Isso foi corrigido no mdadm com a introdução de um dispositivo de journaling dedicado (para evitar penalidade de desempenho, normalmente, SSDs e NVMs são preferidos) para esse propósito.

Este é um modo de falha pouco conhecido e raramente mencionado para sistemas de armazenamento redundantes que não utilizam recursos transacionais. O pesquisador de banco de dados Jim Gray escreveu "Update in Place is a Poison Apple" durante os primeiros dias da comercialização de banco de dados relacional.

Confiabilidade do cache de gravação

Existem preocupações sobre a confiabilidade do cache de gravação, especificamente em relação aos dispositivos equipados com um cache de write-back , que é um sistema de cache que relata os dados assim que são gravados no cache, ao contrário de quando são gravados no não meio volátil. Se o sistema sofrer uma perda de energia ou outra falha grave, os dados podem ser irrevogavelmente perdidos do cache antes de chegar ao armazenamento não volátil. Por esse motivo, boas implementações de cache de write-back incluem mecanismos, como bateria redundante, para preservar o conteúdo do cache em caso de falhas do sistema (incluindo falhas de energia) e para limpar o cache no momento da reinicialização do sistema.

Veja também

Referências

links externos