Riduci RAID rimuovendo un disco?


14

Ho un NAS Synology con 12 alloggiamenti. Inizialmente, abbiamo deciso di allocare tutti i 12 dischi per un singolo volume RAID-6, ma ora vorremmo ridurre il volume per utilizzare solo 10 dischi e assegnare due HDD come ricambi.

La procedura guidata Gestione volume può facilmente espandere il volume aggiungendo dischi rigidi, ma non ho trovato alcun modo per ridurlo rimuovendo i dischi rigidi . Come posso farlo senza dover reinizializzare l'intero sistema?


Qual è l'obiettivo qui? Attualmente vengono utilizzati due dischi come parità, quindi l'array può tollerare due errori. Se vuoi due pezzi di ricambio, puoi anche lasciarli nelle vicinanze e avere la stessa tolleranza, ma con più spazio su disco.
Paolo,

Certo, ma devo andare in ufficio, estrarre un disco e inserire un disco sostitutivo. Avere un ricambio ti permette di farlo da remoto.
Pierre Arnaud,

Synology ha MDADM integrato se lo utilizzi?
Paolo,

Sì, ho accesso allo strumento mdadm.
Pierre Arnaud,

Risposte:


19

Per questo suppongo che ci siano 12 dischi nell'array e ciascuno sia grande 1 TB.

Ciò significa che ci sono 10 TB di spazio di archiviazione. Questo è ad esempio, a condizione che non si stia utilizzando più di 6 dischi (6 TB) di spazio di archiviazione, quindi non importa quale sia la loro dimensione.

Dichiarazione di non responsabilità: nulla di tutto ciò può essere supportato da Synology, quindi vorrei verificare con loro se questo approccio può causare problemi, eseguire il backup in anticipo e arrestare in anticipo eventuali servizi di sinologia. Synology utilizza array md raid standard per quanto ne so e sono accessibili se il disco viene spostato su un server standard che supporta md, quindi non dovrebbero esserci problemi.

Panoramica

La sequenza è la seguente:

  1. Ridurre le dimensioni del filesystem
  2. Ridurre le dimensioni del volume logico
  3. Ridurre le dimensioni dell'array
  4. Ridimensiona il file system
  5. Converti i dischi di riserva in hot spare

File system

Trova la partizione principale, usando df -h, dovrebbe assomigliare a:

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

Utilizzare questo comando per ridimensionare al massimo le necessità e non di più:

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

Ora controlla:

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

Per ridurre le dimensioni del volume, usa lvreduce (rendilo un po 'più grande per ogni evenienza):

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

Ora che il volume logico è stato ridotto, utilizzare pvresize per ridurre la dimensione del volume fisico:

pvresize --setphysicalvolumesize 5.3T /dev/md0

Se il ridimensionamento fallisce, vedere questa altra domanda per spostare le parti di dati allocate alla fine del volume fisico verso l'inizio.

Ora abbiamo un volume 5.3T su un array 10T, quindi possiamo ridurre in sicurezza le dimensioni dell'array di 2T.

Vettore

Scopri il dispositivo md:

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

Il primo passo è dire a mdadm di ridurre le dimensioni dell'array (con 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

Ciò significa che per adattare l'array corrente a 10 dischi, è necessario ridurre le dimensioni dell'array.

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

Ora è più piccolo, possiamo ridurre il numero di dischi:

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

Questo richiederà molto tempo e può essere monitorato qui:

 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__]

Ma non dobbiamo aspettare.

Ridimensiona al massimo PV, LV e filesystem:

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

Impostare i dischi di riserva come ricambi

Niente da fare qui, eventuali dischi di riserva in un array vengono automaticamente risparmiati. Una volta completato il rimodellamento, controlla lo stato:

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] 

Grazie mille per queste istruzioni dettagliate. Aspetterò prima che il mio array RAID termini la ricostruzione dopo aver sostituito un HDD (capacità totale: 17,86 TB, ci vorrà del tempo).
Pierre Arnaud,

Dai un'occhiata anche al cheat sheet di mdadm ( ducea.com/2009/03/08/mdadm-cheat-sheet ).
Pierre Arnaud,

@Paul - superuser.com/questions/1274328/… segnala questo commento per la rimozione dopo aver determinato se puoi aiutare l'utente
Ramhound

Attenzione! Penso che questa risposta potrebbe portare alla perdita di dati, così com'è: non c'è alcun controllo sul fatto che lvm lv sia effettivamente all'inizio del pv! (che non è garantito con lvm). Vedere unix.stackexchange.com/questions/67702/… (e unix.stackexchange.com/questions/67702/… in caso di errore) per un modo per assicurarsi che la fine del PV sia libera di essere ridotta.
Ekleog

@Ekleog Grazie, questo commento verrebbe meglio inserito come parte della risposta in caso di mancata risposta
Paul
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.