Resiliência do Linux MD RAID em situações com poder imprevisível

4

Se você recebeu uma situação em que DEVE usar o RAID por motivos fora de seu controle e o servidor com o RAID pode não estar em um backup de bateria e o prédio está propenso a perda de energia, quais são algumas coisas que você pode fazer para tornar o RAID mais resiliente em situações em que a energia é eliminada imediatamente? Essa situação parece complicada, mas na verdade é uma situação na qual estou agora por razões que não posso entrar.

Alguma especificação RAID específica suportada pelo RAID de software Linux seria mais resiliente ao lidar com a perda de energia do que qualquer outra especificação RAID ou há algum parâmetro de configuração RAID que possa ser útil aqui?

Por exemplo, é um RAID 10 mais / menos propenso a não voltar após a perda de energia do que, digamos, uma configuração de RAID baseada em paridade como RAID5 ou RAID6. Além disso, existem configurações de RAID que tentam lidar com a realidade de não ter um bom hardware RAID BBU para armazenar em cache?

    
por John Hargrove 09.01.2014 / 23:27

3 respostas

2

Não me lembro de nenhuma opção específica de md raid:

Desativar o cache de gravação em disco

hdparm
 -W   get/set drive write-caching flag (0/1)

monte todas as partições com as opções sync / dirsync

de man mount:

dirsync  
All directory updates within the file system should be done synchronously.  This affects the   following sys-tem calls: creat, link, unlink, symlink, mkdir, rmdir, mknod and rename.

sync  
All I/O to the file system should be done synchronously. In case of media  with  limited  number   of  write cycles (e.g. some flash drives) "sync" may cause life-cycle shortening.

... e talvez depois de uma perda de energia estará em sincronia.

    
por 10.01.2014 / 00:17
3

Existem algumas coisas que você pode fazer que ajudarão, que TomTom e Barlomiej cobriram. Mas isso ainda é uma má ideia. A solução real é que os requisitos de alguém precisam mudar . Por isso, darei várias razões pelas quais essa é uma ideia ruim, que você pode aceitar para quem acha que esses requisitos são aceitáveis.

Definindo o RAID de lado por um momento, ter o corte de energia de um servidor inesperadamente acabará causando problemas:

  • Se a perda de energia é comum no prédio, a energia instável também pode ser - as condições de falta de energia e sobretensão podem causar um grande impacto no hardware e reduzir significativamente sua vida útil.
  • Você perderá tudo o que estiver trabalhando quando o servidor falhar. Mesmo se o sistema de arquivos estiver bom, o que acontece com os arquivos que estavam salvando quando a energia foi cortada? Em alguns casos, você não apenas perde o trabalho que estava salvando, mas o arquivo inteiro está corrompido e perde todo o trabalho antes dele.
  • Eventualmente, o seu sistema de arquivos será corrompido. Os sistemas de arquivos modernos normalmente lidam com isso de maneira bastante razoável, embora você possa gastar um tempo extra verificando os sistemas de arquivos quando a energia voltar. Em discos grandes, isso pode levar horas. Às vezes dias. Mesmo que os usuários deste servidor possam tolerá-lo reinicializando quando a energia acabar, é improvável que eles tolerem que ele fique fora por mais 4 horas após a energia voltar.
  • Mesmo com o cache de gravação desativado, você ainda perderá alguns dados. Isso reduz significativamente o risco, mas não o evita completamente.
  • Um dia, seu sistema de arquivos será corrompido e o fsck não o corrigirá. Então você pode restaurar a partir de backups. Então você percebe que os backups estão corrompidos devido aos mesmos problemas de energia.

Agora, jogue RAID no mix:

  • Adicionando outra camada de armazenamento onde os dados podem ser corrompidos - no sistema de arquivos, no RAID e nos próprios discos.
  • Então, um dos seus discos fica danificado quando a energia falha. Sem problemas. Isso é o que é o RAID. Jogue um novo disco no servidor e ele começa a reconstruir. A reconstrução demora horas ou dias na maioria dos sistemas. Enquanto está ocupado reconstruindo, o desempenho é terrível, mas pelo menos o sistema ainda está ativo. Então a energia se apaga novamente. Dependendo do RAID, ele pode começar a ressincronizar novamente ou pode começar de onde parou. Mas o pior cenário é que a perda de energia faz com que um segundo disco falhe. Ou um terceiro. E agora a matriz RAID é irrecuperável.

UPSs existem por um motivo. Você não precisa de um no-break de tamanho de rack de servidor sofisticado. Se você tiver que, você provavelmente poderia ficar com um UPS final do consumidor final por cerca de US $ 100-200. Tudo o que você realmente precisa é que dure o suficiente para desligar o servidor corretamente. Conecte o cabo USB, configure o software do no-break e configure-o para que o computador inicie o desligamento após 10 segundos de perda de energia. Agora ele permanece durante as pequenas quedas de energia da segunda metade (e a UPS garante que o servidor não veja nenhuma das condições horríveis de energia que geralmente acompanham esses eventos). E durante os mais longos, ele é desligado e ordenado, sem perda de dados, sem trabalhar um turno de 20 horas tentando recuperar o servidor.

Se você nos der mais informações sobre o motivo pelo qual esses requisitos existem, poderemos fornecer mais ideias sobre como trabalhar dentro do espírito do requisito e encontrar uma solução aceitável. Mas, como diz agora, tudo o que posso dizer é: Obtenha um no-break.

    
por 10.01.2014 / 03:01
0

Comece usando um SSD de cache de gravação - e obtenha um com condensadores para lidar com a perda de energia.

Caso contrário, desabilite qualquer dica de desempenho. Nenhum cache de write back em qualquer lugar da pilha (incluindo o nível de hardware).

E é sobre isso. Não tenho certeza se o Linux tem um sistema de arquivos otimizado para isso.

    
por 09.01.2014 / 23:31