Desenvolvimento de uma matriz RAID-1 de hardware

1

Gostaria de receber alguns conselhos de alguém que já possa ter a experiência que estou prestes a ganhar.

Estamos prestes a atualizar a matriz RAID-1 em nosso servidor POP com alguns discos maiores. O sistema em si tem cerca de 6 anos (eu fui o único a construí-lo originalmente), roda o FreeBSD 4.9 e o controlador RAID é um Adaptec 2400A. O sistema operacional está em uma unidade separada. Já consideramos e rejeitamos a ideia de substituir completamente o controlador e as unidades devido ao custo, à incerteza do novo hardware e à indisponibilidade de antigos controladores PCI.

Eu pesquisei documentação sobre esse processo, mas não encontrei nenhum. O formato da árvore morta também não faz menção a isso.

Meu plano, por assim dizer, é até agora:

  1. Informe os usuários.
  2. Faça um backup completo dos dados.
  3. Encerre o servidor, substitua a unidade 2 na matriz.
  4. Inicialize o servidor, deixe a matriz ser reconstruída.
  5. Encerre o servidor novamente (talvez no dia seguinte) e substitua a unidade 1 e o hot spare na matriz.
  6. Espero que isso torne o tamanho do array maior automaticamente, ou mexa nele usando o software de gerenciamento de armazenamento no disco que veio com ele.

Não gosto de planos que terminem com "Esperança". É por isso que estou pedindo o Serverfault. "Testar em um testbed" também não é uma opção (e é assim que a opção original "replace the controller" morreu).

A última opção possível, claro, é "bombardear o drive e construir um novo, depois restaurar o backup", mas existe a possibilidade de perder e-mails enquanto isso acontece, além do tempo de inatividade adicional. Eu prefiro que o plano que eu tenho funcione do jeito que eu deveria.

    
por Ernie 22.07.2009 / 01:45

5 respostas

3

OBSERVAÇÃO: o seguinte somente é possível se você puder instalar fisicamente mais unidades no sistema sem antes remover as unidades antigas.

um método que usei com sucesso para tarefas como esta é usar o rsync para criar e preencher o novo sistema de arquivos enquanto o sistema de arquivos existente ainda está em uso, então agendar um novo corte para o novo fs em um momento conveniente. isso minimiza o tempo de inatividade e minimiza o trabalho após o expediente porque a maior parte da cópia pode ser feita enquanto o sistema ainda está funcionando normalmente.

o tempo total de inatividade é apenas o tempo que leva para fazer o rsync e a reconfiguração finais (etapas 8-12 abaixo).

no linux, você pode até usar ionice para dar ao job de rsync uma baixa prioridade de IO para minimizar o impacto no desempenho, porque realmente não importa o tempo que o rsync leva. Espero que o FreeBSD tenha capacidades semelhantes.

o procedimento geral é algo assim:

  1. avisa os usuários que haverá uma breve interrupção (tempo suficiente para você desligar a máquina e instalar os novos discos). este passo não é necessário se o seu servidor tiver compartimentos hot swap.

  2. no horário agendado, instale os novos discos e crie o novo array de raids e o sistema de arquivos que os utiliza.

  3. monte-o como, por exemplo, / mnt

  4. rsync seu antigo sistema de arquivos para ele

  5. repita o passo 4 quantas vezes quiser. você pode atrasar os próximos passos indefinidamente, até que tenha uma janela de tempo adequada para concluir o trabalho.

  6. agendar algum tempo de inatividade e avisar os usuários.

  7. imediatamente ANTES da interrupção, execute o rsync novamente.

  8. desligue TODOS os processos (por exemplo, daemons MTA e pop / imap etc) que estão gravando no sistema de arquivos em questão. Se esta for a raiz fs ou se houver vários daemons usando o fs, isso significa reinicializar no modo de usuário único.

  9. agora que o antigo fs é estático (não sendo atualizado), faça um rsync final. isso não vai demorar muito, porque os novos fs já estarão quase atualizados. depois disso, o novo fs será agora um instantâneo completo e atualizado dos fs antigos.

  10. reconfigure o que for necessário para que o novo fs seja usado em vez do antigo fs. se é o root fs, isso significa escrever um MBR no novo disco, editar fstab e assim por diante. se for apenas uma partição de dados, desmonte o novo fs, desmonte o antigo fs e monte o novo fs em seu lugar. edite o fstab para refletir a nova configuração.

  11. verifique cuidadosamente se você não esqueceu nada :). corrija e repita até terminar.

  12. agora reinicie os processos que você encerrou (ou simplesmente reinicialize).

você pode se aposentar e remover as unidades antigas quando quiser.

Eu usei variações desse método para mover serviços de uma máquina para outra, por exemplo, ao substituir o servidor de arquivos antigo por um novo. A idéia básica é minimizar o tempo de inatividade visível ao usuário, tanto quanto possível, fazendo a maioria das cópias em segundo plano.

    
por 22.07.2009 / 02:29
1

O RAID não deve expandir magicamente sua partição do disco rígido como você está pensando (a partir do meu entendimento do RAID). Desde que você espelhe primeiramente a movimentação 1 para conduzir dois 2 (movimentação nova) espelhará a velha que será menor. Você teria que redimensioná-lo usando gparted ou algo assim.

Para atualizar trabalhos HDD como este, eu uso DriveImageXML em um UBCD4Win .

Eu tenho o processo de atualização detalhado no meu Admin Wiki:

Nota: Ele também pode ser usado em conjunto com unidades de rede mapeadas.

Passos do meu Wiki:

  • Inicialize a caixa de destino com o disco UBCD4Win.
  • Execute o DriveImageXML.
  • Fazer backup de todas as partições no HDD Uma a uma, em um disco separado ou em uma unidade mapeada.
  • Remover HDD A.
  • Instalar o HDD B.
  • Recriar partições do HDD A usando o gerenciador de disco do Windows para novos tamanhos desejados. Reinicie se necessário.
  • Restaurar backups usando o DriveImageXML. Ele permitirá que você restaure os arquivos para um disco rígido maior.
  • Execute o FixMBR para reparar o MBR.
  • Tente inicializar no seu sistema operacional.
  • Se você não conseguir inicializar em seu sistema operacional, tente o modo de segurança e, em seguida, o modo de recuperação.
  • Examine o gerenciador de discos para certificar-se de que tudo esteja correto.
  • Talvez seja necessário reinicializar após a inicialização no sistema operacional porque os drivers ou o Windows não reconhecem as partições. Apenas continue corrigindo quaisquer problemas de partição no gerenciador de disco.
  • Teste se a máquina funciona e funciona como deveria antes de dar OK.

Nota: Recomenda-se recriar o espelho como 0 byte de espelho vazio (se necessário) antes de restaurá-lo, pois isso economizará seu tempo.

Este método é adequado apenas para upgrades de unidades de HDD maiores ou menores. DriveImageXML não será restaurado para uma unidade que não seja idêntica ou menor em tamanho. É altamente recomendado que a nova unidade seja maior em todos os casos

No seu caso, seria:

  • Faça backup de imagem DriveImageXML e armazene em algum lugar
  • extrair unidades antigas em RAID
  • instale as novas unidades no RAID
  • zerar o RAID
  • aplique a imagem do DriveImageXML ao novo RAID

Fazer isso com o DriveImageXML pode parecer ter uma etapa extra envolvida, mas o processo permite que você tenha um backup confiável durante o qual é importante.

Uma última pegadinha: o DriveImageXML não é capaz de fazer backup de partições ocultas.

    
por 22.07.2009 / 02:08
0

Eu tenho alguns 2400A e a boa notícia é que você está com sorte!

O 2400A foi a primeira unidade ATA da Adaptec a suportar um recurso chamado "Expansão Online". Eu entendo que você está executando uma matriz de três discos, deixando um canal sobressalente?

Parece-me que o que você está sugerindo pode funcionar. Eu nunca tentei dessa forma ser honesto (eu só adicionei novos discos da mesma capacidade), mas o redimensionamento "automagicamente" da matriz provavelmente não vai acontecer. Mas você poderá ativar seu software de gerenciamento Adaptec e redimensioná-lo para usar todo o espaço disponível.

Apenas uma nota - por favor, por favor, certifique-se de ter um backup completo de 100% antes de tentar qualquer coisa. O RAID não é um substituto para o backup, por isso, se algo der errado, você está enraizado.

Na verdade, se você pegar esse backup de 100%, então as chances são de que você pode apenas eliminar o array, substituir todos os três discos, criar um novo array e restaurar o backup (como você mencionou). Provavelmente seria mais rápido em geral (mas sim, claro, mais tempo de inatividade).

    
por 22.07.2009 / 01:51
0

Você pode adicionar as duas novas unidades ao controlador? Se assim for, adicione-os como uma nova matriz, execute-os juntamente com o RAID1 atual e, em seguida, migre todos os dados para a nova matriz. Você pode então remover o RAID1 atual quando os dados estiverem no novo RAID1, já que você disse que seu sistema operacional está em outra unidade.

Outra maneira mais de cortar o lado dele. Defina qualquer software de serviço (e-mail, etc) que acesse o RAID 1, não inicie ao inicializar primeiro

Encerre o servidor completamente

Imagem do atual RAID 1 para outro servidor

  • Isso requer um software de imagem que possa ver o RAID corretamente

  • E outro servidor com espaço suficiente nele. Embora você possa usar uma unidade USB para isso

Remova as unidades RAID 1 atuais

Instale novas unidades RAID & configurar o RAID no BIOS

Represente a unidade no novo RAID & expandi-lo ao mesmo tempo ou após a imagem de volta usando outro utilitário.

Inicialize o sistema operacional e veja se ele aparece corretamente.

Se assim iniciar o software novamente

Se ele falhar, não funcionar, etc. Você deve poder soltar as unidades RAID 1 antigas e voltar a funcionar rapidamente.

    
por 22.07.2009 / 11:37
0

Eu não arriscaria uma máquina de produção com essas ações. O controlador não expandirá automaticamente o disco lógico, mas após a reconstrução, você poderá criar uma segunda raid1 no espaço sobressalente recém-adicionado

Eu voto para backup- > teste- > new array- > restore

    
por 22.07.2009 / 15:11