GNU/Linux >> Linux Esercitazione >  >> Linux

Implementazione Mdadm Raid con partizionamento Gpt?

La mia idea attuale è creare un array software, classe RAID-6, con 4 unità membro, usando mdadm .

In particolare, le unità sarebbero HDD da 1 TB su SATA in un piccolo server Dell T20.

Il sistema operativo è GNU/Linux Debian 8.6 (successivamente aggiornato:Jessie ⟶ Stretch ⟶ Buster)

Ciò farebbe 2 TB di spazio su disco con 2 TB di parità nel mio caso.

Mi piacerebbe anche averlo con la tabella delle partizioni GPT, affinché funzioni, non sono sicuro di come procedere specificamente supponendo che preferirei farlo esclusivamente dal terminale.

Dato che non ho mai creato un array RAID, potresti guidarmi su come dovrei procedere?

Note:

  • Questo array servirà solo per i soli dati. Nessun avvio o sistema operativo su di esso.

  • Ho optato per RAID-6 per lo scopo di questo array. Due guasti dell'unità che l'array deve essere in grado di sopravvivere. Dal momento che sono limitato dall'hardware a 4 unità, non c'è alternativa a RAID-6 che io sappia. (Per quanto brutto possa sembrare il rallentamento RAID-6, non importa in questo array.)

Risposta accettata:

In questa risposta, sia chiaro che tutti i dati verranno distrutti su tutti i membri dell'array (unità), quindi esegui prima il backup!

Apri il terminale e diventa root (su ); se hai sudo abilitato, puoi anche fare ad esempio sudo -i; vedi man sudo per tutte le opzioni):

sudo -i

Innanzitutto, dovremmo cancellare le unità, se prima c'erano dati e filesystem, cioè. Supponiamo di avere 4 membri:sdi , sdj , sdk , sdl . Allo scopo di avere un feedback visivo di questo processo, il pv (visualizzatore di pipe ) è stato utilizzato qui:

pv < /dev/zero > /dev/sdi
pv < /dev/zero > /dev/sdj
pv < /dev/zero > /dev/sdk
pv < /dev/zero > /dev/sdl

In alternativa, per verificare semplicemente se non è rimasto nulla, puoi dare un'occhiata con GParted su tutte le unità e, se è presente una partizione con o senza filesystem, cancellarla potrebbe essere sufficiente, anche se io stesso preferisco quanto sopra azzerando tutto le unità coinvolte, ricorda di smontare tutte le partizioni prima di farlo, potrebbe essere fatto in modo simile a questi one-liner:

umount /dev/sdi?; wipefs --all --force /dev/sdi?; wipefs --all --force /dev/sdi
umount /dev/sdj?; wipefs --all --force /dev/sdj?; wipefs --all --force /dev/sdj
umount /dev/sdk?; wipefs --all --force /dev/sdk?; wipefs --all --force /dev/sdk
umount /dev/sdl?; wipefs --all --force /dev/sdl?; wipefs --all --force /dev/sdl

Quindi, inizializziamo tutte le unità con la tabella delle partizioni GUID (GPT) e dobbiamo partizionare tutte le unità, ma non farlo con GParted, perché creerebbe un filesystem nel processo, cosa che non vogliamo, usa gdisk invece:

gdisk /dev/sdi
gdisk /dev/sdj
gdisk /dev/sdk
gdisk /dev/sdl

In tutti i casi utilizzare quanto segue:

o Entra per la nuova tabella delle partizioni GUID (GPT) vuota
y Entra per confermare la tua decisione
n Entra per la nuova partizione
Invio per impostazione predefinita della prima partizione
Invio per default del primo settore
Invio per default dell'ultimo settore
fd00 Entra per tipo RAID Linux
w Entra per scrivere le modifiche
y Entra per confermare la tua decisione

Correlati:CPU per uso generico come analizzatore logico migliore / peggiore dell'implementazione FPGA dedicata?

Puoi esaminare le unità ora:

mdadm --examine /dev/sdi /dev/sdj /dev/sdk /dev/sdl

Dovrebbe dire:

(type ee)

In tal caso, esaminiamo ora le partizioni:

mdadm --examine /dev/sdi1 /dev/sdj1 /dev/sdk1 /dev/sdl1

Dovrebbe dire:

No md superblock detected

In tal caso, possiamo creare l'array RAID6:

mdadm --create /dev/md0 --level=6 --raid-devices=4 /dev/sdi1 /dev/sdj1 /dev/sdk1 /dev/sdl1

Dovremmo aspettare fino a quando l'array non è completamente creato, questo processo possiamo facilmente watch :

watch cat /proc/mdstat

Dopo la creazione dell'array, dovremmo esaminarne i dettagli:

mdadm --detail /dev/md0

Dovrebbe dire:

          State : clean
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

Ora creiamo un filesystem sull'array, se usi ext4 , di seguito nascosto comando è meglio evitare, a causa di ext4lazyinit richiederebbe una notevole quantità di tempo nel caso di un array di grandi dimensioni, da cui il nome "lazyinit “, quindi ti consiglio di evitare questo:

mkfs.ext4 /dev/md0

Invece, dovresti forzare un'inizializzazione istantanea completa (con lo 0% riservato a root poiché è un array di dati):

mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0 /dev/md0

Specificando queste opzioni, gli inode e il journal verranno inizializzati immediatamente durante la creazione, utile per array più grandi.

Se hai scelto di prendere una scorciatoia e hai creato il ext4 filesystem con il "comando da evitare", nota che ext4lazyinit ci vorrà una notevole quantità di tempo per inizializzare tutti gli inode, puoi guardarlo fino al termine, ad es. con iotop o nmon .

In ogni caso, scegli di eseguire l'inizializzazione del file system, dovresti montarlo dopo che ha terminato l'inizializzazione.

Ora creiamo una directory per questo array RAID6:

mkdir -p /mnt/raid6

E montalo semplicemente:

mount /dev/md0 /mnt/raid6

Dato che abbiamo essenzialmente finito, potremmo usare di nuovo GParted per verificare rapidamente se mostra linux-raid filesystem, insieme al raid flag su tutte le unità.

In tal caso, abbiamo creato correttamente l'array RAID6 con le partizioni GPT e ora possiamo copiare i file su di esso.

Guarda quale UUID è il md il filesystem ha:

blkid /dev/md0

Copia l'UUID negli appunti.

Ora dobbiamo modificare fstab , con il tuo editor di testo preferito, ho usato nano , sebbene sudoedit potrebbe essere meglio utilizzato:

nano /etc/fstab

E aggiungi una voce ad esso:

UUID=<the UUID you have in the clipboard>    /mnt/raid6    ext4    defaults    0 0

Io stesso non consiglio di usare defaults set di flag, volevo semplicemente che la linea non fosse eccessivamente complessa.

Ecco quali flag di montaggio utilizzo su un RAID dati di backup UPS (invece di defaults ):
nofail,nosuid,nodev,noexec,nouser,noatime,auto,async,rw,data=journal,errors=remount-ro

Puoi verificare se è corretto dopo aver salvato le modifiche:

mount -av | grep raid6

Dovrebbe dire:

already mounted

In tal caso, salviamo la configurazione dell'array; nel caso tu non abbia alcun md dispositivo ancora creato, puoi semplicemente fare:

mdadm --detail --scan >> /etc/mdadm/mdadm.conf

Nel caso ci siano array già esistenti, basta eseguire il comando precedente senza reindirizzare al file di configurazione:

mdadm --detail --scan

e aggiungi manualmente il nuovo array al file di configurazione.

Correlati:Ora di inizio del processo con fuso orario?

Alla fine, non dimenticare di aggiornare il tuo initramfs , perché altrimenti il ​​tuo nuovo array verrà assemblato automaticamente in sola lettura, probabilmente come /dev/md127 o simili:

update-initramfs -u -k all

Controlla se hai fatto tutto secondo i piani e, in tal caso, puoi riavviare:

reboot

Linux
  1. Sostituzione di un'unità RAID 6 difettosa con mdadm

  2. Matrici Bash con esempi

  3. Gli array AWK spiegati con 5 esempi pratici

  4. RedHat / CentOS:gestione del software RAID con mdadm

  5. Sostituzione di un disco mirror guasto in un array RAID software (mdadm)

Bash Scripting – Array associativo spiegato con esempi

mdadm:comando non trovato

strategia di partizionamento e subvol con btrfs

Impossibile fermare il dispositivo raid

Crea un array con tutte le interfacce di rete in bash

Il raid di Linux scompare dopo il riavvio