Reduzir o RAID removendo um disco?

14

Eu tenho um Synology NAS com 12 compartimentos. 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 peças de reposição.

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?

Pierre Arnaud
fonte
Qual é o objetivo aqui? Atualmente, dois discos são usados ​​como paridade e, portanto, a matriz pode tolerar duas falhas. Se você quiser duas peças de reposição, poderá deixá-las nas proximidades e ter a mesma tolerância, mas com mais espaço em disco.
Paul
Claro, mas tenho que ir ao escritório, retirar um disco e inserir um disco de substituição. Ter um sobressalente permite fazer isso remotamente.
Pierre Arnaud
O seu Synology tem MDADM embutido se você fizer ssh?
Paul
Sim, eu tenho acesso à ferramenta mdadm.
Pierre Arnaud

Respostas:

19

Para isso, vou assumir que existem 12 discos na matriz e cada um tem 1 TB de tamanho.

Isso significa que há 10 TB de armazenamento. Por exemplo, desde que você não esteja usando mais de 6 discos (6 TB) de armazenamento, não importa o tamanho deles.

Isenção de responsabilidade: nada disso pode ser suportado pela Synology, portanto, gostaria de verificar com eles se essa abordagem pode causar problemas, fazer backup antecipado e encerrar qualquer serviço de sinologia antes. Synology usar arrays RAID md padrão, tanto quanto eu sei, e eles são acessíveis se o disco são movidos para um servidor padrão que suporta md - por isso não deve haver problemas.

Visão geral

A sequência é assim:

  1. Reduzir o tamanho do sistema de arquivos
  2. Reduza o tamanho do volume lógico
  3. Reduza o tamanho da matriz
  4. Redimensione o sistema de arquivos de volta
  5. Converta os discos sobressalentes em hot spares

Sistema de arquivo

Encontre a partição principal, usando df -h, ela deve se parecer com:

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 verifica:

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 (aumente um pouco o tamanho):

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 que foram alocadas no final do volume físico para o 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 da matriz (com crescimento):

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 significa que, para ajustar a matriz atual em 10 discos, precisamos reduzir o tamanho da matriz.

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

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

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

Isso levará muito tempo e poderá 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

Definir discos sobressalentes como peças de reposição

Nada a fazer aqui, quaisquer discos sobressalentes em uma matriz são automaticamente peças de reposição. Depois de concluída a remodelagem, 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] 
Paulo
fonte
Muito obrigado por estas instruções detalhadas. Esperarei primeiro que minha matriz RAID termine de reconstruir depois de substituir um HD (capacidade total: 17,86 TB, está demorando um pouco).
Pierre Arnaud
Veja também a folha de dicas do mdadm ( ducea.com/2009/03/08/mdadm-cheat-sheet ).
Pierre Arnaud
@ Paulo - superuser.com/questions/1274328/... sinalizar este comentário a remoção após a determinar se você pode ajudar o usuário
Ramhound
Cuidado! Eu acho que essa resposta pode levar à perda de dados, como é: não há verificação de que o lvm lv está realmente no início do pv! (que não é garantido com lvm). Consulte unix.stackexchange.com/questions/67702/… (e unix.stackexchange.com/questions/67702/… em caso de erro) para obter uma maneira de garantir que o final do PV esteja livre para ser reduzido.
Ekleog
Graças @Ekleog, este comentário seria melhor colocado como parte da resposta em caso perdido
Paul