Diminui o RAID removendo um disco?

13

Eu tenho um Synology NAS com 12 baias. Inicialmente, decidimos alocar todos os 12 discos para um único volume RAID-6, mas agora gostaríamos de diminuir o volume para usar apenas 10 discos e atribuir dois HDDs como sobressalentes.

O Assistente do gerenciador de volume pode expandir facilmente o volume adicionando discos rígidos, mas não encontrei nenhuma maneira de reduzir o volume removendo os discos rígidos . Como posso fazer isso sem ter que reinicializar todo o sistema?

    
por Pierre Arnaud 31.10.2014 / 05:19

1 resposta

18

Para isso, presumo que haja 12 discos na matriz e cada um tem 1 TB de tamanho.

Isso significa que há 10 TB de armazenamento. Isto é, por exemplo, desde que você não esteja usando mais de 6 discos (6TB) de armazenamento, então não importa o tamanho que eles sejam.

Aviso de isenção de responsabilidade: Nada disso pode ser suportado pela Synology, então eu verificaria com eles se essa abordagem pode causar problemas, backup antecipadamente e encerrar qualquer serviço de sincronia antecipadamente. Synology usa arrays padrão de md raid, tanto quanto eu sei, e elas são acessíveis se o disco for movido para um servidor padrão que suporta md - então não deve haver problemas.

Visão geral

A sequência é assim:

  1. Reduza o tamanho do sistema de arquivos
  2. Reduza o tamanho do volume lógico
  3. Reduza o tamanho da matriz
  4. Redimensionar o sistema de arquivos de volta
  5. Converta os discos sobressalentes em peças de reposição

Sistema de arquivos

Encontre a partição principal, usando df -h , deve ser algo como:

Filesystem                Size      Used Available Use% Mounted on
/dev/vg1/volume_1         10T       5T   5T         50% /volume1

Use este comando para redimensionar ao máximo necessário e não mais:

umount /dev/vg1/volume_1
resize2fs -M /dev/vg1/volume_1

Agora verifique:

mount /dev/vg1/volume_1 /volume1
df -h

Filesystem                Size      Used Available Use% Mounted on
/dev/vg1/volume_1         5T       5T    0T        100% /volume1

Volume

Para reduzir o tamanho do volume, use lvreduce (torne-o um pouco maior apenas no caso):

umount /dev/vg1/volume_1
lvreduce -L 5.2T /dev/vg1/volume_1

Agora que o volume lógico foi reduzido, use pvresize para reduzir o tamanho do volume físico:

pvresize --setphysicalvolumesize 5.3T /dev/md0

Se o redimensionamento falhar, consulte esta outra pergunta para mover as partes dos dados alocados no final do volume físico em direção ao início.

Agora, temos um volume de 5,3T em uma matriz de 10T, para que possamos reduzir com segurança o tamanho da matriz em 2T.

Matriz

Descubra o dispositivo md:

 pvdisplay -C
 PV         VG      Fmt  Attr PSize   PFree
 /dev/md0   vg1     lvm2 a--  5.3t    0.1t

O primeiro passo é dizer ao mdadm para reduzir o tamanho do array (com o grow):

mdadm --grow -n10 /dev/md0
mdadm: this change will reduce the size of the array.
       use --grow --array-size first to truncate array.
       e.g. mdadm --grow /dev/md0 --array-size 9683819520

Isso está dizendo que, para ajustar a matriz atual em 10 discos, precisamos reduzir o tamanho da matriz.

 mdadm --grow /dev/md0 --array-size 9683819520

Agora é menor, podemos reduzir o número de discos:

 mdadm --grow -n10 /dev/md0 --backup-file /root/mdadm.md0.backup

Isso levará muito tempo e pode ser monitorado aqui:

 cat /proc/mdstat

Personalities : [raid6] [raid5] [raid4]
md4 : active raid6 sda4[0] sdb4[1] sdc4[2] sdd4[3] sde4[4] sdf4[5] sdg4[6] sdh4[7] sdi4[1] sdj4[1] 
      [>....................]  reshape =  1.8% (9186496/484190976)
                              finish=821.3min speed=9638K/sec [UUUUUUUUUU__]

Mas não precisamos esperar.

Redimensione o PV, LV e sistema de arquivos para o máximo:

pvresize /dev/md0
lvextend -l 100%FREE /dev/vg1/volume_1
e2fsck -f /dev/vg1/volume_1
resize2fs /dev/vg1/volume_1

Defina discos sobressalentes como peças sobressalentes

Nada a fazer aqui, quaisquer discos sobressalentes em uma matriz são automaticamente peças de reposição. Depois que sua reformulação estiver concluída, verifique o status:

cat /proc/mdstat

Personalities : [raid6] [raid5] [raid4]
md4 : active raid6 sda4[0] sdb4[1] sdc4[2] sdd4[3] sde4[4] sdf4[5] sdg4[6] sdh4[7] sdi4[S] sdj4[S] 
    
por 31.10.2014 / 14:03