A melhor maneira de aumentar o RAID 1 do software Linux para o RAID 10

21

mdadm parece não suportar o crescimento de uma matriz do nível 1 para o nível 10.

Eu tenho dois discos no RAID 1. Eu quero adicionar dois novos discos e converter o array em um array RAID 10 de quatro discos.

Minha estratégia atual:

  1. Faça um bom backup.
  2. Crie uma matriz RAID 10 de 4 discos degradada com dois discos ausentes.
  3. rsync the RAID 1 array with the RAID 10 array.
  4. falha e remove um disco da matriz RAID 1.
  5. Adicione o disco disponível ao array RAID 10 e espere a ressincronização ser concluída.
  6. Destrua a matriz RAID 1 e adicione o último disco à matriz RAID 10.

O problema é a falta de redundância no passo 5.

Existe uma maneira melhor?

    
por Hans Malherbe 21.07.2009 / 20:20

5 respostas

8

Com o linux softraid, você pode criar um array RAID 10 com apenas dois discos.

Nomes dos dispositivos usados abaixo:

  • md0 é a matriz antiga do tipo / nível RAID1.
  • md1 é a nova matriz do tipo / nível RAID10.
  • sda1 e sdb2 são novo , partições vazias (sem dados).
  • sda2 e sdc1 são partições antigas (com dados cruciais).

Substitua os nomes para caber no seu caso de uso. Use, e. lsblk para ver seu layout atual.

0) Backup, backup, backup, backup e backup

1) Crie o novo array (4 dispositivos: 2 existentes, 2 ausentes):

mdadm -v --create /dev/md1 --level=raid10 --raid-devices=4 /dev/sda1 missing /dev/sdb2 missing

Observe que, neste exemplo, o layout sda1 tem uma contraparte ausente e sdb2 tem outra contraparte ausente. Seus dados em md1 não são seguros neste momento (efetivamente, é RAID0 até você adicionar membros ausentes).

Para visualizar o layout e outros detalhes do uso da matriz criada:

mdadm -D /dev/md1

Nota! Você deve salvar o layout da matriz:

# View current mdadm config:
cat /etc/mdadm/mdadm.conf
# Add new layout (grep is to make sure you don't re-add md0):
mdadm --detail --scan | grep "/dev/md1" | tee -a /etc/mdadm/mdadm.conf
# Save config to initramfs (to be available after reboot)
update-initramfs -u

2) Formatar e montar. O /dev/md1 deve ser imediatamente utilizável, mas precisa ser formatado e montado.

3) Copie os arquivos. Use, e. rsync para copiar dados do antigo RAID 1 para o novo RAID 10. (este é apenas um exemplo de comando, leia as man pages do rsync)

rsync -arHx / /where/ever/you/mounted/the/RAID10

4) Falha na primeira parte do antigo RAID1 (md0) e adicioná-lo ao novo RAID10 (md1)

mdadm /dev/md0 --fail /dev/sda2 --remove /dev/sda2
mdadm /dev/md1 --add /dev/sda2

Nota! Isso eliminará os dados de sda2 . O md0 ainda deve ser utilizável, mas apenas se o outro membro do raide estiver totalmente operacional.

Observe também que isso iniciará os processos de sincronização / recuperação em md1 . Para verificar o status, use um dos comandos abaixo:

# status of sync/recovery
cat /proc/mdstat
# details
mdadm -D /dev/md1

Aguarde até a recuperação terminar.

5) Instale o GRUB no novo Array (Supondo que você esteja inicializando nele). Algum CD de boot / boot do Linux funciona melhor.

6) Inicialize em uma nova matriz. SE FUNCIONAR CORRECTAMENTE Destrua o array antigo e adicione o disco restante ao novo array.

PONTO DE NÃO RETORNO

Neste ponto, você destruirá os dados no último membro da matriz md0 antiga. Esteja absolutamente certo de que tudo está funcionando.

mdadm --stop /dev/md0
mdadm /dev/md0 --remove /dev/sdc1
mdadm /dev/md1 --add /dev/sdc1

E novamente - aguarde até que a recuperação em md1 seja concluída.

# status of sync/recovery
cat /proc/mdstat
# details
mdadm -D /dev/md1

7) Atualizar configuração do mdadm

Lembre-se de atualizar /etc/mdadm/mdadm.conf (remover md0).

E salve a configuração no initramfs (para estar disponível após a reinicialização)

update-initramfs -u
    
por 21.07.2009 / 21:13
9

Siga o mesmo procedimento que Mark Turner, mas quando você criar a matriz de ataque, mencione 2 discos ausentes

mdadm -v --create /dev/md1 --level=raid10 --raid-devices=4 /dev/sda1 missing /dev/sdb2 missing

Em seguida, continue com outras etapas.

Em suma, crie RAID10 com um total de 4 discos (dos quais 2 estão faltando), resync, adicione outros dois discos depois disso.

    
por 09.01.2010 / 13:59
6

Acabei de sair do LVM em dois discos mdadm RAID 1 de 2TB para LVM em um RAID 10 de quatro discos (dois originais + dois novos discos).

Como o @aditsu observou, a ordem dos discos é importante ao criar o array.

mdadm -v --create /dev/md1 --level=raid10 --raid-devices=4 /dev/sda missing /dev/sdb missing

O código acima fornece uma matriz utilizável com dois discos ausentes (adicione números de partição se você não estiver usando discos inteiros). Assim que o terceiro disco for adicionado, ele começará a ser sincronizado. Eu adicionei o quarto disco antes do terceiro terminar a sincronização. Mostrou como um sobressalente até o terceiro disco terminar, então começou a sincronização.

Passos para minha situação:

  1. Faça um bom backup.

  2. Crie um RAID 10 de 4 discos degradado matriz com dois discos ausentes (nós vai chamar os discos ausentes # 2 e 4).

  3. Diga à esposa para não alterar / adicionar arquivos que ela se preocupa com

  4. Falha e remova um disco do Matriz RAID 1 (disco 4).

  5. Mover extensões físicas do RAID 1 matriz para a matriz RAID 10 saindo disco 2 vazio.

  6. Mate o array RAID 1 ativo, adicione que agora disco vazio (disco 2) para o Matriz RAID 10 e aguarde a sincronização para completar.

  7. Adicione o primeiro disco removido do RAID 1 (disco 4) para o array RAID 10.

  8. Dê esposa em frente.

Na etapa 7, acho que a unidade 1, 2, OU 4 pode falhar (durante a ressincronização do disco 4) sem matar a matriz. Se a unidade 3 falhar, os dados na matriz serão torrados.

    
por 24.03.2011 / 00:04
1

Eu movi meu raid1 para o raid10 agora e enquanto esta página me ajudou, mas há algumas coisas faltando nas respostas acima. Especialmente meu objetivo era manter o ext4 birthtimes.

a configuração foi:

  • 2 discos raid1 de cada tipo msdos e md0 com partição ext4 e mbr com msdos
  • 2 novos discos novos se tornando as novas primárias (todas do mesmo tamanho)
  • resultando em uma invasão de 4 discos md127 ext4, mas devido ao tamanho eu tive que mudar de mbr para gpt
  • é meu disco inicial, portanto, nenhuma configuração de gerenciador de inicialização é necessária ou pretendida
  • usando meu Ubuntu todos os dias (então: não usando o disco de recuperação externo)
  • usando gparted, dd e mdadm

como qualquer um afirmou antes: o zero passo deve ser o backup e sempre pode haver algo errado no processo, resultando em extremos de dados

  1. BACKUP

  2. configuração do novo ataque

    1. crie um novo ataque

      mdadm -v --create /dev/md127 --level=raid10 --raid-devices=4 /dev/sdb1 missing /dev/sde1 missing
      

      (descobri que o layout é importante ... o segundo e o quarto parecem ser os duplicados em um ataque "próximo" padrão)

    2. define a partição do ataque Eu estava usando gparted configurar gpt no md127 e, em seguida, adicionando uma nova partição (ext4) do tamanho do antigo ou maior
  3. migrar

    1. agora recebendo os dados ... eu estava tentando usar o rsync que funcionou mas não conseguiu manter o horário de nascimento ... use dd para clone do antigo ataque para o novo

      dd if=/dev/md0 of=/dev/md127p1 bs=1M conv=notrunc,noerror,sync
      

      ESPERE POR TI
      você pode verificar com o envio USR1 para esse processo

      kill -s USR1 <pid>
      
    2. consertar o ataque
      O gparted é uma ótima ferramenta: você diz para verificar e corrigir a partição e redimensioná-la para o tamanho total desse disco com apenas alguns cliques do mouse;)

    3. defina um novo uuid para essa partição e atualize seu fstab com ele (altere o uuid)

    4. armazene seu raid em conf

      mdadm --examine --scan  >> /etc/mdadm/mdadm.conf
      

      e remova o antigo

      vim /etc/mdadm/mdadm.conf 
      
    5. reinicialize se você não estiver em um sistema de recursos
  4. destruindo o antigo

    1. falha o primeiro e adiciona-o ao novo ataque

      mdadm /dev/md0 --fail /dev/sdc1 --remove /dev/sdc1
      

      faça então o gpt naquele dispositivo e ajuste uma nova partição vazia

      mdadm /dev/md127 --add /dev/sdc1
      

      ESPERE POR TI
      você pode verificar com

      cat /proc/mdstat
      
    2. pare o segundo

      mdadm --stop /dev/md0 
      

      faça o gpt no último dispositivo e defina uma nova partição vazia novamente

      mdadm /dev/md127 --add /dev/sdd1
      

      ESPERE DE NOVO

por 09.07.2016 / 08:34
0

Eu fiz isso com o LVM. Configuração inicial: - sda2, sdb2 - e criou o raid1 md1 no topo. sda1 e sdb1 foram usados para o segundo raid1 para a partição / boot. - md1 foi pv no espaço do grupo de volume, com alguns lvm.

Eu adicionei discos sdc e sdd e criei partições como em sda / sdb.

Então:

  1. criou o md10 como:

    mdadm --criar / dev / md10 --level raid10 --raid-devices = 4 / dev / sdc2 ausente / dev / sdd2

  2. estenda vg nele:

    pvcreate / dev / md10 vgextend space / dev / md10

  3. movido volumes de md1 para md10:

    pvmove -v / dev / md1 / dev / md10

(espera por terminar) 4. reduzir o grupo de volume:

vgreduce space /dev/md1
pvremove /dev/md1
  1. pare o array md1:

    mdadm -S / dev / md1

  2. adicione discos do antigo md1 ao md10:

    mdadm -a / dev / md10 / dev / sda2 / dev / sdb2

  3. atualize a configuração em /etc/mdadm/mdadm.conf:

    mdadm -E --scan > > /dev/mdadm/mdadm.conf

(e remova o antigo md1)

Tudo feito no sistema live, com volumes ativos usados para o kvm;)

    
por 29.01.2015 / 17:46