Converter raid5 de software linux de raid5 para raid6

11

Atualmente, tenho um servidor de arquivos com 3 discos de 1,5 TB em um array RAID5. Como está praticamente cheio, recebi três discos adicionais (também 1,5 TB cada).

Agora eu gostaria de mudar para o RAID6 já que o espaço de 6 TB é suficiente e eu gostaria de ter a segurança aumentada do raid6. Embora eu tenha um backup completo - por exemplo, eu poderia simplesmente criar um novo array e restaurar o backup - eu preferiria alternar sem precisar restaurar um backup. Isso é possível e, se sim, como?

    
por ThiefMaster 18.01.2012 / 22:15

3 respostas

9

A terminologia que você está procurando é uma "migração de nível de RAID".

De acordo com isso , é possível . Eu não fiz isso, mas o procedimento parece que você deve adicionar a nova unidade como um hotspare para o array existente, então use o mdadm para atualizar o nível de raid e o número de dispositivos raid.

Você precisará de um mdadm recente para fazer isso: mdadm-2.6.9 (por exemplo, centos 5.x) não parece suportá-lo, mas o mdadm-3.1.4 (por exemplo, ubuntu 11.10) faz:

   Grow   Grow (or shrink) an array, or otherwise reshape it in some way.  Currently supported growth options including changing the active size of component devices and
          changing the number of active devices in RAID levels 1/4/5/6, changing the RAID level between 1, 5, and 6, changing the chunk size and  layout  for  RAID5  and
          RAID5, as well as adding or removing a write-intent bitmap.

Por exemplo, adicione um novo dispositivo de hotspare, / dev / sdg, ao array RAID5 primeiro:

$ sudo mdadm --manage /dev/md/md0 --add /dev/sdg

Em seguida, converta em uma matriz RAID6 e faça-a reconstruir para um estado limpo. O --raid-devices 4 informa quantas unidades você tem no total no novo array.

$ sudo mdadm --grow /dev/md/md0 --raid-devices 4 --level 6

Eu não tenho ideia de quão rápido isso vai ser embora. Na minha experiência em fazer migrações no nível do RAID em controladores RAID de hardware, foi mais rápido criar o novo array desde o início e recuperar seu backup para ele.

    
por 18.01.2012 / 22:55
7

Aviso obrigatório: planeje a falha. Mantenha um backup pronto e leve em consideração o tempo de inatividade.

Além disso, teste-o em uma VM ou algo similar antes, isso é de minhas anotações e eu não faço isso há muito tempo. Isso pode estar incompleto.

  1. Você precisará add dos discos para a matriz:

    mdadm --manage /dev/md0 --add /dev/sdf  
    

    Faça isso para cada um dos três discos e substitua os nomes dos dispositivos de acordo.

  2. Cresça o array:

    mdadm --grow /dev/md0 --level 6 --raid-devices 6 
    
por 18.01.2012 / 22:55
2

Use a opção --backup-file , portanto, no caso de perda de energia, você pode continuar a aumentar o dispositivo após a reinicialização e garantir que não haja perda de dados.

mdadm --grow /dev/md0 --level=raid6 --raid-devices=6 --backup-file=/root/mdadm5-6_backup_md0

O arquivo de backup deve ser salvo em um sistema de arquivos que não faz parte da matriz que você irá desenvolver.

--backup-file= é necessário quando --grow é usado para aumentar o número de dispositivos de ataque em um RAID5 ou RAID6, se não houver dispositivos sobressalentes disponíveis, ou para reduzir, alterar o nível ou o layout do RAID. Veja a seção MODO DE CRESCIMENTO abaixo em MUDANÇAS DE DISPOSITIVOS DE RAID. O arquivo deve ser armazenado em um dispositivo separado, não na matriz RAID sendo reformulada.

--continue é complementar à opção --freeze-reshape para montagem. É necessário quando a operação --grow é interrompida e não é reiniciada automaticamente devido ao uso de --freeze-reshape durante a montagem da matriz. Essa opção é usada junto com o comando -G , ( --grow ) e o dispositivo para que uma remodelação pendente continue. Todos os parâmetros necessários para continuar a reformulação serão lidos a partir dos metadados da matriz. Se o comando --grow inicial exigiu que a opção --backup-file= fosse definida, a opção de continuação exigirá ter exatamente o mesmo arquivo de backup fornecido.

Qualquer outro parâmetro transmitido juntamente com a opção --continue será ignorado.

    
por 12.08.2017 / 06:03