mdadm: Trocando pequenos discos rígidos para discos maiores em um RAID5, Como particionar?

3

Então, eu tenho a essência de trocar drivers rígidos menores por outros maiores em um RAID5 MDADM:

Falha e remova uma unidade.

mdadm -f /dev/md0 /dev/sdd1
mdadm -r /dev/md0 /dev/sdd1

Desligue, troque o disco rígido, particione e adicione de volta ao array

mdadm --add /dev/md0 /dev/sdd1

Aguarde a nova sincronização e continue com todas as unidades restantes.

Finalmente, aumente a matriz

mdadm --grow /dev/md0 --size=max

Minha pergunta é como você particiona as novas unidades maiores? Eu vejo instruções diferentes pela rede e sei que a maioria delas está desatualizada, então queria ver se alguém fez isso recentemente.

  1. Particione as novas unidades para o mesmo tamanho das unidades antigas na matriz

  2. Particione as novas unidades para o tamanho máximo da unidade.

Eu tenho uma configuração muito simples, 4 unidades RAID5 de 350GB cada. Eu só tenho uma partição em cada unidade e construo uma matriz única. Este é um disco de arquivo de dados, portanto, não há necessidade de vários arrays ou partições.

A outra abordagem que estou pensando é backup para uma unidade, construir uma matriz de 3 unidades, adicionar a unidade de backup para a matriz. Isso é:

  • Remover uma unidade (350 GB)
  • Adicione uma nova unidade (1TB)
  • Backup de todos os meus dados na nova unidade (meus dados de invasão caberão em uma nova unidade)
  • Extraia as unidades antigas 3 (350 GB) restantes
  • Coloque no restante das novas unidades de 3 (1 TB)
  • Construa uma matriz de 3 unidades
  • Copie os dados para a matriz da primeira nova unidade
  • Limpe o disco de backup e adicione à matriz para criar 4 unidades.

Isso é mais seguro? Mais rápido? Pensamentos?

    
por JD Frias 17.09.2010 / 01:15

4 respostas

1

Eventualmente, você precisará ter a "partição raid" para ter o tamanho máximo do disco; Não importa se você fizer isso após a reconstrução ou se você reparticionar uma vez que sua matriz for renovada.

Eu recentemente fiz algo parecido, é bem rápido. Note que você pode definir a velocidade de recompilação da raid (/ proc / sys / dev / raid / speed_limit_min / max), por padrão ela é limitada para reconstruções em segundo plano.

Note que há um passo faltando em seu plano: você precisará instruir a coisa em cima de sua camada md para crescer também (sistema de arquivos, ou lvm pv, ou ...)

No entanto, se você puder fazê-lo (pode manter o sistema inativo por mais tempo, investir mais tempo e ter slots de disco suficientes), é provavelmente mais seguro copiar tudo em um disco de backup. Os dados permanecem à vista de todos os momentos, o que eu acho reconfortante.

    
por 17.09.2010 / 08:29
1

A maneira mais simples / segura de acabar com um array formado por discos maiores seria

  • copie todos os dados para uma unidade externa
  • remova todos os discos pequenos e substitua-os por grandes
  • crie a nova matriz nos discos maiores
  • copie os dados de volta

Isso também forneceria duas cópias dos dados: uma na unidade externa e outra ainda na coleção de unidades menores removidas. (Mantenha cuidado com qual disco é qual!)

Eu não acho que você pode crescer matrizes RAID-5, adicionando um disco para ele. Você estaria criando um array RAID-5 de 3 discos, e o melhor que você poderia fazer depois de copiar dados para o novo array seria marcar o quarto disco como um hot-spare ... que não é exatamente a mesma coisa que uma matriz RAID-5 de 4 discos.

    
por 17.09.2010 / 05:30
1

Estou me fazendo a mesma pergunta, apenas com 4x 400 GB de discos RAID5 (vamos chamá-lo / dev / md1) substituídos por discos muito maiores (algo entre 2 e 4 TB). LVM além disso.

Uma solução não tão elegante que eu descobri é a seguinte:

Remova um disco (preferível ao mais propenso a erros de acordo com os valores SMART dos discos), substitua-o por um novo. Particione o novo disco com uma partição do mesmo tamanho que as antigas e uma segunda partição para o restante. Adicione a partição do mesmo tamanho ao RAID / dev / md1 e espere que a ressincronização termine.

Em seguida, faça o mesmo novamente com o próximo disco. Agora você tem mais duas partições ainda não usadas. Inicie um novo RAID 5 neles. Adicione o novo RAID5 (por exemplo, / dev / md2) como volume físico (PV) ao grupo de volumes usado em / dev / md1. Depois de dois discos serem substituídos, você já tem mais espaço em disco redundante disponível.

Faça o mesmo para o terceiro e último disco, adicione-os como discos adicionais ao / dev / md2 e execute pvresize no dispositivo posteriormente.

Eu suspeito que farei o mesmo sugerido duas vezes neste tópico: Coloque todas as coisas (atualmente cerca de 700G dos 1.2 TB que o RAID tem) em um disco externo (possivelmente um dos novos) e depois inicie uma nova matriz RAID5 com três discos, copie os dados de volta e adicione o último disco que foi usado como armazenamento temporário.

    
por 23.07.2013 / 01:14
0

As versões atuais das ferramentas md suportam a substituição de um dispositivo, mantendo o RAID (e, portanto, a redundância) funcionando.

Você precisa de capacidade para adicionar pelo menos mais um dispositivo ao computador, mas depois disso, não será necessário manter o array em estado degradado por horas (ou dias, no caso de HDDs de vários TB atuais) enquanto ele é reconstruído .

Primeiro você precisa adicionar um disco como sobressalente ao array (assumindo 4 drives no RAID):

mdadm /dev/md0 --add /dev/sde1

Em seguida, você diz ao Linux para começar a mover os dados para a nova unidade:

mdadm /dev/md0 --replace /dev/sda1 --with /dev/sde1

Após a substituição ser concluída, o dispositivo é marcado como defeituoso, então você precisa removê-lo da matriz:

mdadm /dev/md0 --remove /dev/sda1

Repita para outras unidades na matriz.

Se você tiver capacidade de conectar várias unidades adicionais, poderá fazê-lo mesmo para todas as unidades ao mesmo tempo, tudo isso mantendo a matriz on-line e com redundância total. Então, segue um conjunto válido de comandos:

mdadm /dev/md0 --add /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1
mdadm /dev/md0 --replace /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1 --with /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1

Espere até terminar, remova as unidades antigas:

mdadm /dev/md0 --remove /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1
    
por 17.06.2017 / 14:06