Atualizando um RAID5 de software Linux

2

Meu servidor Linux em casa tem um RAID 5 de software de quatro unidades, em que cada unidade SATA possui duas partições, denominadas sd [abcd] [12]. / dev / md1 é construído a partir de sd [abcd] 1, / dev / md2 é construído a partir de sd [abcd] 2. Cada unidade é de 500 GB e cada partição é de 250 GB. Eu uso o LVM para mesclar md1 e md2 em um único grupo de volume.

Qual seria um bom procedimento para atualizar essas unidades para 1 TB cada? Não tenho mais portas SATA disponíveis. Eu considerei puxar uma das unidades para fora, substituindo-a por uma nova unidade de 1 TB particionada com duas partições de 250 GB, e uma partição de 500 GB, e reconstruindo a matriz. Repita para cada unidade e crie um novo RAID5 em sd [abcd] 3. Isso parece "menos que ideal": abusar do processo de sincronização / recuperação parece não ser o caminho certo para fazer isso.

Faz mais sentido usar um gabinete USB externo, inserir um novo disco de 1TB, particioná-lo, adicioná-lo aos arrays md1 e md2, ressincronizar e depois remover um dos discos antigos do array, repetindo isso para cada disco?

Não há uma boa razão para ter vários arrays espalhados pelos mesmos discos, então, se o processo eliminou isso, seria bom.

Obrigado pelas suas sugestões!

    
por joev 04.05.2009 / 19:29

4 respostas

4

Primeiro de tudo, particionar os drives em vários arrays RAID e mesclá-los de volta com o LVM faz muito pouco sentido.

O USB é incrivelmente lento e exige muita CPU, por isso, ao anexar quatro unidades em sequência e copiar, muitos dados demoram séculos. Eu prefiro apenas trocar as unidades uma de cada vez.

Minha receita para isso seria (se seus dados são muito importantes e você é muito paranóico, você pode adicionar um drive USB como um hot spare durante esta operação, mas levará muito mais tempo):

  1. Puxe uma de suas unidades antigas e insira uma nova. Aguarde que sincronize
  2. Repita para o restante das unidades
  3. Agora você tem quatro unidades de 1 TB com 500 GB alocadas como duas partições de 250 GB e 500 GB de espaço não utilizado
  4. Expanda uma das partições existentes de 250 GB para 750 GB para que você use todo o disco
  5. Cresça o ataque que contém a partição expandida usando mdadm grow
  6. Expanda seu LVM para que o tamanho inteiro esteja em uso
  7. Remova seu pv de matriz de 250GBx4 do LVM. Isso moverá seus dados das pequenas partições para as grandes partições, então levará algum tempo
  8. Exclua as partições de 250 GB e repita o processo de crescimento das partições de 750 GB

Depois disso, você terá quatro discos de 1TB com uma partição de 1TB cada, reunidos em um RAID5 com o LVM no topo. Resultado perfeito.

    
por 04.05.2009 / 22:13
1

Você pode fazer a dança resync-and-replace como sugere, mas quando terminar, copie todos os arquivos de md1 & 2 em md3, em seguida, digite o md1 & 2 partições e expanda a partição md3 para usar o novo espaço. Para fazer isso, você vai querer fazer com que a primeira partição nas unidades TB seja parte do md3, para que você não tenha que realocar os dados mais tarde.

    
por 04.05.2009 / 19:41
1

Eu recomendo fazer esse trabalho em uma caixa de areia.
Eu escrevi um artigo mais longo sobre como configurar tal sandbox com arquivos e não partições: Posso" atomicamente "trocar um drive raid5 em raid de software Linux?

    
por 07.07.2009 / 04:59
0

Se o seu uso atual de HD for menor que 1TB, eu ficaria tentado a fazer o seguinte:

  • retire uma das unidades de 500 GB e instale uma bateria de 1 TB
  • copie tudo para a unidade de 1 TB
  • instale as outras unidades de 1 TB
  • crie um novo RAID5 + lvm degradado e particione como desejar com os outros discos
  • copie seus dados da unidade autônoma de 1 TB para o RAID5 degradado
  • adicione a unidade autônoma à matriz.
por 04.05.2009 / 21:06