Expande uma matriz RAID 10 do Linux MD para usar discos maiores

10

Pelo que entendi, isso é possível, mas não consigo encontrar uma resposta direta sobre como exatamente fazer isso, e não quero me arriscar a perder dados experimentando isso, por isso estou perguntando aqui.

Eu tenho um servidor doméstico com cinco discos executando o CentOS. Um deles é um SSD segurando o sistema operacional. Os quatro discos restantes são discos rígidos de 4 TB configurados no RAID10 com o mdraid. O sistema de arquivos em uso é o xfs.

Estou pensando em substituir os discos de 4 TB por 8 TB. O que exatamente precisa ser feito para fazer essa substituição acontecer sem ter que reconfigurar um novo RAID e perder dados?

Details output:

[root@fluttershy ~]# mdadm -D /dev/md127
/dev/md127:
        Version : 1.2
  Creation Time : Mon Apr 18 12:46:24 2016
     Raid Level : raid10
     Array Size : 7813771264 (7451.79 GiB 8001.30 GB)
  Used Dev Size : 3906885632 (3725.90 GiB 4000.65 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Mon Jun 13 11:04:41 2016
          State : clean 
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : near=2
     Chunk Size : 512K

           Name : fluttershy:data  (local to host fluttershy)
           UUID : aa8f857a:g8bd0344:06d2f6d3:bac01a46
         Events : 13440

    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync set-A   /dev/sda1
       1       8       17        1      active sync set-B   /dev/sdb1
       2       8       33        2      active sync set-A   /dev/sdc1
       3       8       49        3      active sync set-B   /dev/sdd1
    
por Mella 14.06.2016 / 13:05

2 respostas

12

Complete os seguintes passos para cada disco; substitua /dev/sda1 por outros discos conforme necessário. Você deve concluir all destas etapas para um disco antes de prosseguir para o próximo disco.

  • Marque o disco com falha para que o MD pare de usá-lo: mdadm --manage /dev/md127 --fail /dev/sda1
  • Remova o disco da matriz: mdadm --manage /dev/md127 --remove /dev/sda1
  • Substitua fisicamente o disco.
  • Particione o novo disco usando o tipo 0xDA com uma partição abrangendo todo o disco.
  • Adicione o novo disco ao array: mdadm --manage /dev/md127 --add /dev/sda1

O MD irá reconstruir o array assim que você adicionar o disco de substituição. Certifique-se de que a reconstrução esteja concluída antes de prosseguir para o próximo disco. Você pode verificar o status da matriz executando cat /proc/mdstat .

Depois que all dos discos forem substituídos e a matriz for reconstruída, expanda a matriz para preencher a capacidade máxima de todos os discos com mdadm --grow /dev/md127 --size=max . Você pode redimensionar o sistema de arquivos para preencher o RAID expandido; no seu caso, use o comando xfs_growfs .

Mais informações sobre como desenvolver um array MD estão disponíveis no wiki Linux RAID .

Como em qualquer outra tarefa de manipulação de disco, você deve fazer um backup antes de começar.

    
por 25.07.2016 / 02:14
2

Você deseja trocar cada disco um por um em primeiro lugar.

Para fazer isso, você 'falha' em cada disco e o substitui pela sua nova substituição de 8Tb, se você tiver as portas sobressalentes, você pode adicionar os discos extras e, em vez de remover, substituir o mdadm 'replace' um disco do ataque e ter um risco maior de falha.

Esta pergunta detalha a melhor maneira de fazer isso 'com segurança'

Depois de fazer isso, você vai querer simplesmente expandir o FS existente para o espaço recém-criado. Parece que o comando para isso é 'xfs_growfs', mas eu não tenho experiência com o xfs para explicar exatamente como você faria isso.

Como sempre, tenha backups prontos (e o raid não é um backup!).

    
por 21.07.2016 / 19:04