Come gestire array RAID

Come gestire gli array RAID con mdadm su Ubuntu 22.04

Gli array RAID forniscono prestazioni e ridondanza migliorate combinando singoli dischi in dispositivi di archiviazione virtuali in configurazioni specifiche. In Linux, l’utility mdadmcrea e gestisce array RAID software.

In questa guida eseguirai diverse configurazioni RAID che possono essere configurate utilizzando un server Ubuntu 22.04.

Per seguire questa guida, avrai bisogno dell’accesso a un utente non-root sudo.

Come accennato, questa guida riguarderà la gestione dell’array RAID. Segui la guida su come creare array RAID con mdadmsu Ubuntu 22.04 per creare uno o più array prima di continuare a leggere. Questa guida presuppone che tu abbia uno o più array su cui operare.

Uno dei requisiti più essenziali per una corretta gestione è la capacità di reperire informazioni sulla struttura, sui dispositivi che lo compongono e sullo stato attuale dell’array.

Per informazioni dettagliate su un dispositivo RAID, passare il dispositivo RAID con l’opzione -Do --detaila mdadm:

sudo mdadm -D /dev/md0

Verranno visualizzate informazioni importanti sull’array:

Output/dev/md0:
           Version : 1.2
     Creation Time : Thu Sep 29 17:07:10 2022
        Raid Level : raid10
        Array Size : 209582080 (199.87 GiB 214.61 GB)
     Used Dev Size : 104791040 (99.94 GiB 107.31 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Thu Sep 29 17:08:24 2022
             State : clean, resyncing
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 0

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

              Name : raid2:0  (local to host raid2)
              UUID : 8069bcc7:72e7b49f:fba1c780:560a85e0
            Events : 35

    Number   Major   Minor   RaidDevice State
       0       8        0        0      active sync set-A   /dev/sda
       1       8       16        1      active sync set-B   /dev/sdb
       2       8       32        2      active sync set-A   /dev/sdc
       3       8       48        3      active sync set-B   /dev/sdd

L’output rivela il livello RAID, la dimensione dell’array, lo stato dei singoli pezzi, il file UUIDdell’array, i dispositivi componenti e i loro ruoli.

Per i dettagli abbreviati di un array, adatti per l’aggiunta al file /dev/mdadm/mdadm.conf, puoi passare il flag --briefO -bcon la vista dettagliata:

sudo mdadm -Db /dev/md0

Output
/dev/md0: 199.88GiB raid10 4 devices, 0 spares. Use mdadm --detail for more detail.

Questo può essere utilizzato per trovare a colpo d’occhio le informazioni chiave su un dispositivo RAID.

Ottenere informazioni sui dispositivi componenti

Puoi anche usare mdadmper interrogare i singoli dispositivi componenti.

L’opzione -Q, se utilizzata con un dispositivo componente, ti dirà l’array di cui fa parte e il suo ruolo:

sudo mdadm -Q /dev/sdc

Output
/dev/sdc: is not an md array
/dev/sdc: device 2 in 4 device active raid10 /dev/md0.  Use mdadm --examine for more detail.

È possibile ottenere informazioni più dettagliate utilizzando le opzioni -Eo --examine:

sudo mdadm -E /dev/sdc

Output
/dev/sdc:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 8069bcc7:72e7b49f:fba1c780:560a85e0
           Name : RAID2204:0  (local to host RAID2204)
  Creation Time : Wed Oct  5 15:56:03 2022
     Raid Level : raid10
   Raid Devices : 4

 Avail Dev Size : 209582080 sectors (99.94 GiB 107.31 GB)
     Array Size : 209582080 KiB (199.87 GiB 214.61 GB)
    Data Offset : 133120 sectors
   Super Offset : 8 sectors
   Unused Space : before=132968 sectors, after=0 sectors
          State : clean
    Device UUID : 027f74c5:6d488509:64844c7a:add75d88

    Update Time : Wed Oct  5 16:13:57 2022
  Bad Block Log : 512 entries available at offset 136 sectors
       Checksum : 98edf3ae - correct
         Events : 35

         Layout : near=2
     Chunk Size : 512K

   Device Role : Active device 2
   Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing)

Queste informazioni sono simili a quelle visualizzate quando si utilizza l’opzione -Dcon il dispositivo dell’array, ma focalizzata sulla relazione del dispositivo componente con l’array.

Leggere le informazioni su /proc/mdstat

Per informazioni dettagliate su ciascuno degli array assemblati sul tuo server, controlla il file /proc/mdstat. Questo è spesso il modo migliore per trovare lo stato corrente degli array attivi sul tuo sistema:

cat /proc/mdstat

Output
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid10 sdd[3] sdc[2] sdb[1] sda[0]
      209584128 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
      
unused devices: <none>

L’output qui è piuttosto denso e fornisce molte informazioni in una piccola quantità di spazio:

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
. . .

La riga Personalitiesdescrive i diversi livelli RAID e le configurazioni attualmente supportate dal kernel.

La riga che inizia con md0descrive l’inizio della descrizione di un dispositivo RAID. Le righe rientrate che seguono descrivono anche questo dispositivo:

. . .
md0 : active raid10 sdd[3] sdc[2] sdb[1] sda[0]
. . .

La prima riga indica che l’array è attivo, non difettoso e configurato come RAID 10. Successivamente vengono elencati i dispositivi componenti utilizzati per costruire l’array. I numeri tra parentesi descrivono il ruolo attuale del dispositivo nell’array. Ciò influisce su quali copie dei dati vengono fornite al dispositivo.

. . .
      209584128 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
. . .

La seconda riga visualizzata in questo esempio fornisce il numero di blocchi forniti dai dispositivi virtuali, la versione dei metadati (1.2 in questo esempio) e la dimensione del blocco dell’array. Poiché si tratta di un array RAID 10, include anche informazioni sul layout dell’array. In questo esempio, è stato configurato per memorizzare due copie di ogni blocco di dati nel layout near.

Gli ultimi elementi tra parentesi quadre rappresentano entrambi i dispositivi attualmente disponibili di un set integro. Il primo numero tra parentesi numeriche indica la dimensione di un array integro mentre il secondo numero rappresenta il numero di dispositivi attualmente disponibili. Le altre parentesi sono un’indicazione visiva dello stato dell’array, con Uche rappresentano dispositivi sani e _che rappresentano dispositivi difettosi.

Se il tuo array è attualmente in fase di assemblaggio o ripristino, potresti avere un’altra riga che mostra l’avanzamento:

. . .
      [>....................]  resync =  0.9% (2032768/209584128) finish=15.3min speed=225863K/sec
. . .

Descrive l’operazione applicata e lo stato di avanzamento attuale in diversi modi. Fornisce inoltre la velocità attuale e un tempo stimato fino al completamento.

Una volta che ti sei fatto un’idea di quali array sono attualmente in esecuzione sul tuo sistema, puoi intraprendere una serie di azioni.

Per arrestare un array, il primo passo è smontarlo.

Esci dalla directory montata con il comando cd ~:

cd ~

Quindi smonta il dispositivo:

sudo umount /mnt/md0

Puoi interrompere tutti gli array attivi eseguendo:

sudo mdadm --stop --scan

Se vuoi fermare un array specifico, passalo al comando mdadm --stop:

sudo mdadm --stop /dev/md0

Questo fermerà l’array. Dovrai riassemblare l’array per accedervi nuovamente.

Per avviare tutti gli array definiti nei file di configurazione o /proc/mdstat, esegui quanto segue:

sudo mdadm --assemble --scan

Per avviare un array specifico, puoi passarlo come argomento a mdadm --assemble:

sudo mdadm --assemble /dev/md0

Funziona se l’array è definito nel file di configurazione.

Se nel file di configurazione manca la definizione corretta dell’array, l’array può comunque essere avviato passando i dispositivi componenti:

sudo mdadm --assemble /dev/md0 /dev/sda /dev/sdb /dev/sdc /dev/sdd

Una volta assemblato l’array, è possibile montarlo come al solito:

sudo mount /dev/md0 /mnt/md0

È possibile aggiungere dispositivi di riserva a qualsiasi array che offra ridondanza, come RAID 1, 5, 6 o 10. I dispositivi di riserva non verranno utilizzati attivamente dall’array a meno che un dispositivo attivo non si guasti. Quando ciò accade, l’array risincronizzerà i dati sull’unità di riserva per ripristinare l’integrità dell’array. Non è possibile aggiungere ricambi agli array non ridondanti (RAID 0) poiché l’array non sopravvivrà al guasto di un’unità.

Per aggiungere un dispositivo di riserva, passare l’array e il nuovo dispositivo al comando mdadm --add:

sudo mdadm /dev/md0 --add /dev/sde

Se l’array non è in uno stato degradato, il nuovo dispositivo verrà aggiunto come riserva. Se il dispositivo è attualmente danneggiato, inizierà immediatamente l’operazione di risincronizzazione utilizzando l’unità di riserva per sostituire l’unità difettosa.

Dopo aver aggiunto un ricambio, aggiorna il file di configurazione per riflettere il nuovo orientamento del dispositivo:

sudo nano /etc/mdadm/mdadm.conf

Rimuovi o commenta la riga corrente che corrisponde alla definizione dell’array:

. . .
# ARRAY /dev/md0 metadata=1.2 name=mdadmwrite:0 UUID=d81c843b:4d96d9fc:5f3f499c:6ee99294

Successivamente, aggiungi la configurazione corrente:

sudo mdadm --detail --brief /dev/md0 | sudo tee -a /etc/mdadm/mdadm.conf

Le nuove informazioni verranno utilizzate dall’utility mdadmper assemblare l’array.

È possibile espandere un array aumentando il numero di dispositivi attivi all’interno dell’assieme. La procedura esatta dipende leggermente dal livello RAID che stai utilizzando.

Con RAID 1 o 10

Inizia aggiungendo il nuovo dispositivo come riserva, come dimostrato nell’ultima sezione:

sudo mdadm /dev/md0 --add /dev/sde

Scopri il numero attuale di dispositivi RAID nell’array:

sudo mdadm --detail /dev/md0

Output
/dev/md0:
        Version : 1.2
  Creation Time : Wed Aug 10 15:29:26 2016
     Raid Level : raid1
     Array Size : 104792064 (99.94 GiB 107.31 GB)
  Used Dev Size : 104792064 (99.94 GiB 107.31 GB)
   Raid Devices : 2
  Total Devices : 3
    Persistence : Superblock is persistent

    . . .

In questo esempio, l’array è configurato per utilizzare attivamente due dispositivi. Rivela, tuttavia, che il numero totale di dispositivi disponibili nell’array è tre a causa della riserva.

Ora riconfigura l’array per avere un dispositivo attivo aggiuntivo. La riserva verrà utilizzata per soddisfare i requisiti di drive extra. Ricorda di sostituire il numero di destinazione dei dispositivi RAID in questo comando. Qui stiamo aumentando il RAID 1 con 2 dispositivi a 3. Se sei nel RAID 10 con 4 dispositivi e hai l’unità aggiuntiva, aumentala a 5:

sudo mdadm --grow --raid-devices=3 /dev/md0

L’array inizierà a riconfigurarsi con un disco attivo aggiuntivo. Per visualizzare l’avanzamento della sincronizzazione dei dati, eseguire quanto segue:

cat /proc/mdstat

Puoi continuare a utilizzare il dispositivo una volta completato il processo.

Con RAID 5 o 6

Inizia aggiungendo il nuovo dispositivo come ricambio come dimostrato nell’ultima sezione:

sudo mdadm /dev/md0 --add /dev/sde

Scopri il numero attuale di dispositivi RAID nell’array:

sudo mdadm --detail /dev/md0

Output
/dev/md0:
        Version : 1.2
  Creation Time : Wed Oct 5 18:38:51 2022
     Raid Level : raid5
     Array Size : 209584128 (199.88 GiB 214.61 GB)
  Used Dev Size : 104792064 (99.94 GiB 107.31 GB)
   Raid Devices : 3
  Total Devices : 4
    Persistence : Superblock is persistent

    . . .

In questo esempio, l’array è configurato per utilizzare attivamente tre dispositivi e il numero totale di dispositivi disponibili nell’array è quattro a causa del dispositivo di riserva aggiunto.

Ora riconfigura l’array per avere un dispositivo attivo aggiuntivo. La riserva verrà utilizzata per soddisfare i requisiti di drive extra. Quando si espande un array RAID 5 o RAID 6, è importante includere un’opzione aggiuntiva denominata --backup-file. Ciò indicherà una posizione fuori dall’array in cui verrà archiviato un file di backup contenente informazioni critiche:

sudo mdadm --grow --raid-devices=4 --backup-file=/root/md0_grow.bak /dev/md0

Il seguente output indica che verrà eseguito il backup della sezione critica:

Output
mdadm: Need to backup 3072K of critical section..

L’array inizierà a riconfigurarsi con un disco attivo aggiuntivo. Per visualizzare l’avanzamento della sincronizzazione dei dati, eseguire:

cat /proc/mdstat

Puoi continuare a utilizzare il dispositivo una volta completato questo processo.

Una volta completata la rimodellazione, dovrai espandere il filesystem sull’array per utilizzare lo spazio aggiuntivo:

sudo resize2fs /dev/md0

Il tuo array avrà ora un filesystem che corrisponde alla sua capacità.

Con RAID 0

Gli array RAID 0 non possono avere unità di riserva perché non esiste alcuna possibilità per una riserva di ricostruire un array RAID 0 danneggiato. È necessario aggiungere il nuovo dispositivo contemporaneamente all’espansione dell’array.

Innanzitutto, scopri il numero corrente di dispositivi RAID nell’array:

sudo mdadm --detail /dev/md0

Output
/dev/md0:
        Version : 1.2
  Creation Time : Wed Aug 10 19:17:14 2020
     Raid Level : raid0
     Array Size : 209584128 (199.88 GiB 214.61 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    . . .

Ora puoi incrementare il numero di dispositivi RAID nella stessa operazione di aggiunta della nuova unità:

sudo mdadm --grow /dev/md0 --raid-devices=3 --add /dev/sdc

Riceverai un output che indica che l’array è stato modificato in RAID 4:

Output
mdadm: level of /dev/md0 changed to raid4
mdadm: added /dev/sdc

Questo è normale e previsto. L’array tornerà al RAID 0 quando i dati saranno stati ridistribuiti su tutti i dischi esistenti.

Puoi controllare lo stato di avanzamento dell’azione:

cat /proc/mdstat

Una volta completata la sincronizzazione, ridimensiona il filesystem per utilizzare lo spazio aggiuntivo:

sudo resize2fs /dev/md0

Il tuo array avrà ora un filesystem che corrisponde alla sua capacità.

Talvolta è necessario rimuovere un’unità da un array RAID in caso di guasto o se è necessario sostituire il disco.

Per poter rimuovere un dispositivo, è necessario prima contrassegnarlo come “guasto” all’interno dell’array. Puoi verificare se è presente un dispositivo guasto utilizzando mdadm --detail:

sudo mdadm --detail /dev/md0

Output
/dev/md0:
        Version : 1.2
  Creation Time : Wed Aug 10 21:42:12 2020
     Raid Level : raid5
     Array Size : 209584128 (199.88 GiB 214.61 GB)
  Used Dev Size : 104792064 (99.94 GiB 107.31 GB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Thu Aug 11 14:10:43 2020
          State : clean, degraded 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 1
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 64K

           Name : mdadmwrite:0  (local to host mdadmwrite)
           UUID : bf7a711b:b3aa9440:40d2c12e:79824706
         Events : 144

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8        0        1      active sync   /dev/sda
       2       8       16        2      active sync   /dev/sdb
       0       8       32        -      faulty   /dev/sdc

Tutte le linee evidenziate indicano che un’unità non funziona più. Come esempio, /dev/sdcin questo output rivela che l’unità è difettosa.

Se è necessario rimuovere un’unità che non presenta problemi, è possibile contrassegnarla manualmente come guasta con l’opzione--fail:

sudo mdadm /dev/md0 --fail /dev/sdc

Output
mdadm: set /dev/sdc faulty in /dev/md0

È quindi possibile sostituirlo con una nuova unità, utilizzando lo stesso comando mdadm --addche usi per aggiungere un ricambio:

sudo mdadm /dev/md0 --add /dev/sdd

Output
mdadm: added /dev/sdd

L’array inizierà il ripristino copiando i dati sulla nuova unità.

Per distruggere un array, compresi tutti i dati in esso contenuti, iniziare seguendo il processo utilizzato per arrestare un array.

Esci dalla directory montata con il seguente comando:

cd ~

Quindi smonta il filesystem:

sudo umount /mnt/md0

Quindi, interrompi l’array:

sudo mdadm --stop /dev/md0

Successivamente, elimina l’array stesso con il comando --removedestinato al dispositivo RAID:

sudo mdadm --remove /dev/md0

Una volta rimosso l’array stesso, utilizzare mdadm --zero-superblocksu ciascuno dei dispositivi componenti. Questo cancellerà il superblocco md, un’intestazione utilizzata da mdadmper assemblare e gestire i dispositivi componenti come parte di un array. Se è ancora presente, potrebbe causare problemi quando si tenta di riutilizzare il disco per altri scopi.

Controlla la colonna FSTYPE nell’output lsblk --fsper confermare che il superblocco è presente nell’array:

lsblk --fs

Output
NAME    FSTYPE            LABEL        UUID                                 MOUNTPOINT
…
sda     linux_raid_member mdadmwrite:0 bf7a711b-b3aa-9440-40d2-c12e79824706 
sdb     linux_raid_member mdadmwrite:0 bf7a711b-b3aa-9440-40d2-c12e79824706 
sdc     linux_raid_member mdadmwrite:0 bf7a711b-b3aa-9440-40d2-c12e79824706 
sdd                                                                         
vda                                                                         
├─vda1  ext4              DOROOT       4f8b85db-8c11-422b-83c4-c74195f67b91 /
└─vda15

In questo esempio, /dev/sda, /dev/sdb e /dev/sdcfacevano tutti parte dell’array e sono ancora etichettati come tali.

Rimuovere le etichette con il seguente comando:

sudo mdadm --zero-superblock /dev/sda /dev/sdb /dev/sdc

Successivamente, assicurati di rimuovere o commentare qualsiasi riferimento all’array nel file /etc/fstab. Puoi farlo aggiungendo il simbolo dell’hashtag #all’inizio:

sudo nano /etc/fstab

. . .
# /dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0

Salva e chiudi il file quando hai finito.

Rimuovere o commentare eventuali riferimenti all’array anche dal file /etc/mdadm/mdadm.conf:

nano /etc/mdadm/mdadm.conf

# ARRAY /dev/md0 metadata=1.2 name=mdadmwrite:0 UUID=bf7a711b:b3aa9440:40d2c12e:79824706

Salva e chiudi il file quando hai finito.

Quindi aggiorna l’initramfs:

sudo update-initramfs -u

Ciò rimuoverà il dispositivo dall’ambiente di avvio iniziale.

Creare array RAID

Come creare array RAID con mdadm su Ubuntu 22.04

L’utility mdadmpuò essere utilizzata per creare e gestire array di archiviazione utilizzando le funzionalità RAID del software Linux. Gli amministratori hanno una grande flessibilità nel coordinare i propri dispositivi di storage individuali e nel creare dispositivi di storage logici con maggiori prestazioni o caratteristiche di ridondanza.

In questa guida eseguirai diverse configurazioni RAID che possono essere configurate utilizzando un server Ubuntu 22.04.

Per seguire i passaggi di questa guida, avrai bisogno di:

  • Un utente non root con privilegi sudo su un server Ubuntu 22.04.
  • Una conoscenza di base della terminologia e dei concetti RAID. Per saperne di più sul RAID e sul livello RAID adatto a te, leggi l’articolo introduzione alla terminologia e ai concetti.
  • Più dispositivi di archiviazione raw disponibili sul tuo server. Gli esempi in questo tutorial dimostrano come configurare vari tipi di array sul server. Pertanto, avrai bisogno di alcune unità da configurare.
  • A seconda del tipo di array, saranno necessari da due a quattro dispositivi di archiviazione . Non è necessario formattare queste unità prima di seguire questa guida.

Puoi saltare questa sezione per ora se non hai ancora configurato alcun array. Questa guida introdurrà una serie di diversi livelli RAID. Se desideri seguire e completare ogni livello RAID per i tuoi dispositivi, probabilmente vorrai riutilizzare i dispositivi di archiviazione dopo ogni sezione. È possibile fare riferimento a questa sezione specifica Reimpostazione dei dispositivi RAID esistenti per reimpostare i dispositivi di archiviazione prima di testare un nuovo livello RAID.

Inizia trovando gli array attivi nel file /proc/mdstatfile:

cat /proc/mdstat

Output
Personalities : [raid0] [linear] [multipath] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid0 sdc[1] sdd[0]
      209584128 blocks super 1.2 512k chunks
            
            unused devices: <none>

Quindi smonta l’array dal filesystem:

sudo umount /dev/md0

Ora termina e rimuovi l’array:

sudo mdadm --stop /dev/md0

Trova i dispositivi utilizzati per costruire l’array con il seguente comando:

lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

Output
NAME     SIZE FSTYPE            TYPE MOUNTPOINT
sda      100G linux_raid_member disk 
sdb      100G linux_raid_member disk 
sdc      100G                   disk 
sdd      100G                   disk 
vda       25G                   disk 
├─vda1  24.9G ext4              part /
├─vda14    4M                   part 
└─vda15  106M vfat              part /boot/efi
vdb      466K iso9660           disk

Dopo aver scoperto i dispositivi utilizzati per creare un array, azzera il loro superblocco per ripristinarli alla normalità

sudo mdadm --zero-superblock /dev/sdc
sudo mdadm --zero-superblock /dev/sdd

Dovresti rimuovere tutti i riferimenti persistenti all’array. Modifica il file /etc/fstabe commenta o rimuovi il riferimento al tuo array:

sudo nano /etc/fstab

. . .
# /dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0

Inoltre, commenta o rimuovi la definizione dell’array dal file /etc/mdadm/mdadm.conf:

sudo nano /etc/mdadm/mdadm.conf

. . .
# ARRAY /dev/md0 metadata=1.2 name=mdadmwrite:0 UUID=7261fb9c:976d0d97:30bc63ce:85e76e91

Infine aggiorna ancora il initramfs:

sudo update-initramfs -u

A questo punto dovresti essere pronto per riutilizzare i dispositivi di archiviazione singolarmente o come componenti di un array diverso.

L’array RAID 0 funziona suddividendo i dati in blocchi e distribuendoli sui dischi disponibili. Ciò significa che ogni disco contiene una parte dei dati e che durante il recupero delle informazioni verrà fatto riferimento a più dischi.

  • Requisiti: minimo 2 dispositivi di archiviazione
  • Vantaggio principale: prestazioni
  • Cose da tenere a mente: assicurati di disporre di backup funzionali. Un singolo guasto del dispositivo distruggerà tutti i dati nell’array.

Identificare i dispositivi

Per iniziare, trova gli identificatori per i dischi raw che utilizzerai:

lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

Output
NAME     SIZE FSTYPE   TYPE MOUNTPOINT
sda      100G          disk
sdb      100G          disk
vda       25G          disk 
├─vda1  24.9G ext4     part /
├─vda14    4M          part 
└─vda15  106M vfat     part /boot/efi
vdb      466K iso9660  disk 

In questo esempio, hai due dischi senza filesystem, ciascuno di 100 GB. A questi dispositivi sono stati assegnati gli identificatori /dev/sdaE /dev/sdb per questa sessione e saranno i componenti raw utilizzati per costruire l’array.

Creazione dell’array

Per creare un array RAID 0 con questi componenti, passali al comando mdadm --create. Dovrai specificare il nome del dispositivo che desideri creare, il livello RAID e il numero di dispositivi. In questo esempio di comando, nominerai il dispositivo /dev/md0 e includerai i due dischi che costruiranno l’array:

sudo mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/sda /dev/sdb

Conferma che il RAID è stato creato correttamente controllando il file /proc/mdstat:

cat /proc/mdstat

Output
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid0 sdb[1] sda[0]
      209584128 blocks super 1.2 512k chunks
            
            unused devices: <none>

Questo output rivela che il dispositivo /dev/md0 è stato creato nella configurazione RAID 0 utilizzando i dispositivi /dev/sda e /dev/sdb.

Creazione e montaggio del filesystem

Successivamente, crea un filesystem sull’array:

sudo mkfs.ext4 -F /dev/md0

Quindi, crea un punto di montaggio per collegare il nuovo filesystem:

sudo mkdir -p /mnt/md0

Puoi montare il filesystem con il seguente comando:

sudo mount /dev/md0 /mnt/md0

Successivamente, controlla se il nuovo spazio è disponibile:

df -h -x devtmpfs -x tmpfs

Output
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        25G  1.4G   23G   6% /
/dev/vda15      105M  3.4M  102M   4% /boot/efi
/dev/md0        196G   61M  186G   1% /mnt/md0

Il nuovo filesystem è ora montato e accessibile.

Salvataggio del layout dell’array

Per assicurarti che l’array venga riassemblato automaticamente all’avvio, dovrai modificare il file /etc/mdadm/mdadm.conf. È possibile eseguire automaticamente la scansione dell’array attivo e aggiungere il file con quanto segue:

sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Successivamente è possibile aggiornare il file initramfso file system RAM iniziale, in modo che l’array sia disponibile durante il processo di avvio:

sudo update-initramfs -u

Aggiungi le nuove opzioni di montaggio del filesystem al file /etc/fstabper il montaggio automatico all’avvio:

echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

Il tuo array RAID 0 ora assemblerà e monterà automaticamente ogni avvio.

Ora hai finito con la configurazione del RAID. Se desideri provare un RAID diverso, segui le istruzioni di ripristino all’inizio di questo tutorial per procedere con la creazione di un nuovo tipo di array RAID.

Il tipo di array RAID 1 viene implementato eseguendo il mirroring dei dati su tutti i dischi disponibili. Ogni disco in un array RAID 1 riceve una copia completa dei dati, fornendo ridondanza in caso di guasto del dispositivo.

  • Requisiti: minimo 2 dispositivi di archiviazione .
  • Vantaggio principale: ridondanza tra due dispositivi di archiviazione.
  • Cose da tenere a mente: poiché vengono conservate due copie dei dati, solo la metà dello spazio su disco sarà utilizzabile.

Identificazione dei dispositivi

Per iniziare, trova gli identificatori per i dischi raw che utilizzerai:

lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

Output
NAME     SIZE FSTYPE   TYPE MOUNTPOINT
sda      100G          disk 
sdb      100G          disk 
vda       25G          disk 
├─vda1  24.9G ext4     part /
├─vda14    4M          part 
└─vda15  106M vfat     part /boot/efi
vdb      466K iso9660  disk 

In questo esempio, hai due dischi senza filesystem, ciascuno di 100 GB. A questi dispositivi è stato assegnato gli identificatori /dev/sdaE /dev/sdb per questa sessione e saranno i componenti raw utilizzati per creare l’array.

Creazione dell’array

Per creare un array RAID 1 con questi componenti, passali al comando mdadm --create. Dovrai specificare il nome del dispositivo che desideri creare, il livello RAID e il numero di dispositivi. In questo esempio di comando, nominerai il dispositivo /dev/md0e includerai i dischi che costruiranno l’array:

sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda /dev/sdb

Se i dispositivi che stai utilizzando non sono partizioni con il flagbootabilitato, probabilmente riceverai il seguente avviso. È sicuro rispondere con ye continua:

Output
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
mdadm: size set to 104792064K
Continue creating array? y

Il tool mdadm inizierà a eseguire il mirroring delle unità. Il completamento dell’operazione può richiedere del tempo, ma durante questo periodo è possibile utilizzare l’array. È possibile monitorare l’avanzamento del mirroring controllando il file /proc/mdstat:

cat /proc/mdstat

Output
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sdb[1] sda[0]
      104792064 blocks super 1.2 [2/2] [UU]
      [====>................]  resync = 20.2% (21233216/104792064) finish=6.9min speed=199507K/sec
      
unused devices: <none>

Nella prima riga evidenziata, il dispositivo /dev/md0 è stato creato nella configurazione RAID 1 utilizzando i dispositivi /dev/sdae /dev/sdb. La seconda riga evidenziata rivela lo stato di avanzamento del mirroring. Puoi continuare con il passaggio successivo mentre il processo viene completato.

Creazione e montaggio del filesystem

Successivamente, crea un filesystem sull’array:

sudo mkfs.ext4 -F /dev/md0

Quindi, crea un punto di montaggio per collegare il nuovo filesystem:

sudo mkdir -p /mnt/md0

È possibile montare il filesystem eseguendo quanto segue:

sudo mount /dev/md0 /mnt/md0

Verifica se il nuovo spazio è disponibile:

df -h -x devtmpfs -x tmpfs

Output
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        25G  1.4G   23G   6% /
/dev/vda15      105M  3.4M  102M   4% /boot/efi
/dev/md0         99G   60M   94G   1% /mnt/md0

Il nuovo filesystem è montato e accessibile.

Salvataggio del layout dell’array

Per assicurarti che l’array venga riassemblato automaticamente all’avvio, devi modificare il file /etc/mdadm/mdadm.conf. È possibile eseguire automaticamente la scansione dell’array attivo e aggiungere il file con quanto segue:

sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Successivamente è possibile aggiornare il file initramfso file system RAM iniziale, in modo che l’array sia disponibile durante il processo di avvio:

sudo update-initramfs -u

Aggiungi le nuove opzioni di montaggio del filesystem al file /etc/fstab per il montaggio automatico all’avvio:

echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

L’array RAID 1 ora assemblerà e monterà automaticamente ogni avvio.

Ora hai finito con la configurazione del RAID. Se desideri provare un RAID diverso, segui le istruzioni di ripristino all’inizio di questo tutorial per procedere con la creazione di un nuovo tipo di array RAID.

Il tipo di array RAID 5 viene implementato eseguendo lo striping dei dati sui dispositivi disponibili. Un componente di ciascun stripe è un blocco di parità calcolato. Se un dispositivo si guasta, il blocco di parità e i blocchi rimanenti possono essere utilizzati per calcolare i dati mancanti. Il dispositivo che riceve il blocco di parità viene ruotato in modo che ciascun dispositivo disponga di una quantità bilanciata di informazioni sulla parità.

  • Requisiti: minimo 3 dispositivi di archiviazione .
  • Vantaggio principale: ridondanza con maggiore capacità utilizzabile.
  • Cose da tenere a mente: mentre le informazioni sulla parità vengono distribuite, per la parità verrà utilizzata la capacità di un disco. RAID 5 può presentare prestazioni molto scarse quando si trova in uno stato degradato.

Identificazione dei dispositivi

Per iniziare, trova gli identificatori per i dischi raw che utilizzerai:

lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

Output
NAME     SIZE FSTYPE   TYPE MOUNTPOINT
sda      100G          disk 
sdb      100G          disk 
sdc      100G          disk 
vda       25G          disk 
├─vda1  24.9G ext4     part /
├─vda14    4M          part 
└─vda15  106M vfat     part /boot/efi
vdb      466K iso9660  disk

Hai tre dischi senza filesystem, ciascuno di 100 GB. A questi dispositivi sono stati assegnato gli identificatori /dev/sda, /dev/sdb e /dev/sdc per questa sessione e saranno i componenti raw utilizzati per creare l’array.

Creazione dell’array

Per creare un array RAID 5 con questi componenti, passali al comando mdadm --create. Dovrai specificare il nome del dispositivo che desideri creare, il livello RAID e il numero di dispositivi. In questo esempio di comando, nominerai il dispositivo /dev/md0e includerai i dischi che costruiranno l’array:

sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sda /dev/sdb /dev/sdc

Il tool mdadm inizierà a configurare l’array. Utilizza il processo di ripristino per creare l’array per motivi di prestazioni. Il completamento dell’operazione può richiedere del tempo, ma durante questo periodo è possibile utilizzare l’array. È possibile monitorare l’avanzamento del mirroring controllando il file /proc/mdstat:

cat /proc/mdstat

Output
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid5 sdc[3] sdb[1] sda[0]
      209582080 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]
      [>....................]  recovery =  0.9% (957244/104791040) finish=18.0min speed=95724K/sec
      
unused devices: <none>

Nella prima riga evidenziata, il dispositivo /dev/md0è stato creato nella configurazione RAID 5 utilizzando i dispositivi/dev/sda, /dev/sdbe /dev/sdc. La seconda riga evidenziata mostra l’avanzamento della compilazione.

Avvertenza: a causa del modo in cui mdadm crea gli array RAID 5, mentre l’array è ancora in fase di creazione, il numero di unità di riserva nell’array verrà riportato in modo impreciso. Ciò significa che è necessario attendere il completamento dell’assemblaggio dell’array prima di aggiornare il file /etc/mdadm/mdadm.conf. Se aggiorni il file di configurazione mentre l’array è ancora in fase di creazione, il sistema avrà informazioni errate sullo stato dell’array e non sarà in grado di assemblarlo automaticamente all’avvio con il nome corretto.

Puoi continuare la guida mentre questo processo viene completato.

Creazione e montaggio del filesystem

Successivamente, crea un filesystem sull’array:

sudo mkfs.ext4 -F /dev/md0

Crea un punto di montaggio per collegare il nuovo filesystem:

sudo mkdir -p /mnt/md0

È possibile montare il filesystem con quanto segue:

sudo mount /dev/md0 /mnt/md0

Verifica se il nuovo spazio è disponibile:

df -h -x devtmpfs -x tmpfs

Output
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        25G  1.4G   23G   6% /
/dev/vda15      105M  3.4M  102M   4% /boot/efi
/dev/md0        197G   60M  187G   1% /mnt/md0

Il nuovo filesystem è montato e accessibile.

Salvataggio del layout dell’array

Per assicurarti che l’array venga riassemblato automaticamente all’avvio, devi modificare il file /etc/mdadm/mdadm.conf.

È possibile monitorare l’avanzamento del mirroring controllando il file /proc/mdstat:

cat /proc/mdstat

Output
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid5 sdc[3] sdb[1] sda[0]
      209584128 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
      
unused devices: <none>

Questo output rivela che la ricostruzione è completa. Ora puoi scansionare automaticamente l’array attivo e aggiungere il file:

sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Successivamente è possibile aggiornare il file initramfso file system RAM iniziale, in modo che l’array sia disponibile durante il processo di avvio:

sudo update-initramfs -u

Aggiungi le nuove opzioni di montaggio del filesystem al file /etc/fstabper il montaggio automatico all’avvio:

echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

L’array RAID 5 ora assemblerà e monterà automaticamente ad ogni avvio.

Ora hai finito con la configurazione del RAID. Se desideri provare un RAID diverso, segui le istruzioni di ripristino all’inizio di questo tutorial per procedere con la creazione di un nuovo tipo di array RAID.

Il tipo di array RAID 6 viene implementato eseguendo lo striping dei dati sui dispositivi disponibili. Due componenti di ciascun stripe sono blocchi di parità calcolati. Se uno o due dispositivi si guastano, i blocchi di parità e i blocchi rimanenti possono essere utilizzati per calcolare i dati mancanti. I dispositivi che ricevono i blocchi di parità vengono ruotati in modo che ciascun dispositivo disponga di una quantità bilanciata di informazioni sulla parità. È simile a un array RAID 5, ma consente il guasto di due unità.

  • Requisiti: minimo 4 dispositivi di archiviazione .
  • Vantaggio principale: doppia ridondanza con maggiore capacità utilizzabile.
  • Cose da tenere a mente: mentre le informazioni sulla parità vengono distribuite, per la parità verrà utilizzata la capacità di due dischi. RAID 6 può presentare prestazioni molto scarse quando si trova in uno stato degradato.

Identificazione dei dispositivi

Per iniziare, trova gli identificatori per i dischi raw che utilizzerai:

lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

Output
NAME     SIZE FSTYPE   TYPE MOUNTPOINT
sda      100G          disk 
sdb      100G          disk 
sdc      100G          disk 
sdd      100G          disk 
vda       25G          disk 
├─vda1  24.9G ext4     part /
├─vda14    4M          part 
└─vda15  106M vfat     part /boot/efi
vdb      466K iso9660  disk 

In questo esempio, hai quattro dischi senza filesystem, ciascuno di 100 GB. A questi dispositivi sono stati assegnati gli identificatori /dev/sda, /dev/sdb, /dev/sdc e /dev/sdd per questa sessione e saranno i componenti raw utilizzati per costruire l’array.

Creazione dell’array

Per creare un array RAID 6 con questi componenti, passali al comando mdadm --create. Devi specificare il nome del dispositivo che desideri creare, il livello RAID e il numero di dispositivi. Nel seguente esempio di comando, nominerai il dispositivo /dev/md0e includere i dischi che costruiranno l’array:

sudo mdadm --create --verbose /dev/md0 --level=6 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd

Il tool mdadm inizierà a configurare l’array. Utilizza il processo di ripristino per creare l’array per motivi di prestazioni. Il completamento dell’operazione può richiedere del tempo, ma durante questo periodo è possibile utilizzare l’array. È possibile monitorare l’avanzamento del mirroring controllando il file /proc/mdstat:

cat /proc/mdstat

Output
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid6 sdd[3] sdc[2] sdb[1] sda[0]
      209584128 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/4] [UUUU]
      [>....................]  resync =  0.6% (668572/104792064) finish=10.3min speed=167143K/sec
      
unused devices: <none>

Nella prima riga evidenziata, il dispositivo /dev/md0è stato creato nella configurazione RAID 6 utilizzando i dispositivi /dev/sda, /dev/sdb, /dev/sdce /dev/sdd. La seconda riga evidenziata mostra l’avanzamento della creazione. Puoi continuare la guida mentre questo processo viene completato.

Creazione e montaggio del filesystem

Successivamente, crea un filesystem sull’array:

sudo mkfs.ext4 -F /dev/md0

Crea un punto di montaggio per collegare il nuovo filesystem:

sudo mkdir -p /mnt/md0

È possibile montare il filesystem con quanto segue:

sudo mount /dev/md0 /mnt/md0

Verifica se il nuovo spazio è disponibile:

df -h -x devtmpfs -x tmpfs

Output
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        25G  1.4G   23G   6% /
/dev/vda15      105M  3.4M  102M   4% /boot/efi
/dev/md0        197G   60M  187G   1% /mnt/md0

Il nuovo filesystem è montato e accessibile.

Salvataggio del layout dell’array

Per assicurarti che l’array venga riassemblato automaticamente all’avvio, dovrai modificare il file /etc/mdadm/mdadm.conf. Puoi scansionare automaticamente l’array attivo e aggiungere il file digitando:

sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Successivamente è possibile aggiornare il file initramfso file system RAM iniziale, in modo che l’array sia disponibile durante il processo di avvio:

sudo update-initramfs -u

Aggiungi le nuove opzioni di montaggio del filesystem al file /etc/fstab per il montaggio automatico all’avvio:

echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

L’array RAID 6 ora assemblerà e monterà automaticamente ogni avvio.

Ora hai finito con la configurazione del RAID. Se desideri provare un RAID diverso, segui le istruzioni di ripristino all’inizio di questo tutorial per procedere con la creazione di un nuovo tipo di array RAID.

Il tipo di array RAID 10 viene tradizionalmente implementato creando un array RAID 0 con striping composto da set di array RAID 1. Questo tipo di array annidato offre ridondanza e prestazioni elevate, a scapito di grandi quantità di spazio su disco. L’utility mdadmdispone di un proprio tipo RAID 10 che fornisce lo stesso tipo di vantaggi con maggiore flessibilità. Non viene creato annidando array, ma ha molte delle stesse caratteristiche e garanzie. Utilizzerai il mdadmRAID 10 di sequito.

  • Requisiti: minimo 3 dispositivi di archiviazione .
  • Vantaggio principale: prestazioni e ridondanza.
  • Cose da tenere a mente: l’entità della riduzione della capacità dell’array è definita dal numero di copie dei dati che si sceglie di conservare. Il numero di copie archiviate con RAID 10 in stile mdadm è configurabile.

Per impostazione predefinita, due copie di ciascun blocco di dati verranno archiviate in quello che viene chiamato layout vicino (near). I possibili layout che determinano la modalità di memorizzazione di ciascun blocco dati sono i seguenti:

  • near: la disposizione predefinita. Le copie di ciascun blocco vengono scritte consecutivamente durante lo striping, il che significa che le copie dei blocchi di dati verranno scritte nella stessa parte di più dischi.
  • far: la prima copia e quelle successive vengono scritte in parti diverse dei dispositivi di archiviazione nell’array. Ad esempio, il primo pezzo potrebbe essere scritto vicino all’inizio di un disco, mentre il secondo pezzo potrebbe essere scritto a metà su un disco diverso. Ciò può fornire alcuni miglioramenti nelle prestazioni di lettura per i tradizionali dischi rotanti a scapito delle prestazioni di scrittura.
  • offset: ogni stripe viene copiato e spostato di un’unità. Ciò significa che le copie sono sfalsate l’una dall’altra, ma ancora vicine sul disco. Ciò aiuta a ridurre al minimo la ricerca eccessiva durante alcuni carichi di lavoro.

Puoi scoprire di più su questi layout controllando la sezione RAID10 della pagina man:

man 4 md

Oppure qui.

Identificazione dei dispositivi

Per iniziare, trova gli identificatori per i dischi raw che utilizzerai:

lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

Output
NAME     SIZE FSTYPE   TYPE MOUNTPOINT
sda      100G          disk 
sdb      100G          disk 
sdc      100G          disk 
sdd      100G          disk 
vda       25G          disk 
├─vda1  24.9G ext4     part /
├─vda14    4M          part 
└─vda15  106M vfat     part /boot/efi
vdb      466K iso9660  disk 

In questo esempio, hai quattro dischi senza filesystem, ciascuno di 100 GB. A questi dispositivi sono stati assegnati gli identificatori /dev/sda, /dev/sdb, /dev/sdc, E /dev/sddper questa sessione e saranno i componenti raw utilizzati per costruire l’array.

Creazione dell’array

Per creare un array RAID 10 con questi componenti, passali al comando mdadm --create. Devi specificare il nome del dispositivo che desideri creare, il livello RAID e il numero di dispositivi. Nel seguente esempio, nominerai il dispositivo /dev/md0e includerai i dischi che costruiranno l’array:

È possibile impostare due copie utilizzando il layout vicino senza specificare un layout e un numero di copia:

sudo mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd

Se desideri utilizzare un layout diverso o modificare il numero di copie, dovrai utilizzare l’opzione --layout=, che accetta un layout e un identificatore di copia. I layout sono nper vicino, fper lontano, e oper compensazione. Il numero di copie da archiviare viene aggiunto successivamente.

Ad esempio, per creare un array con tre copie nel layout offset, il comando includerebbe quanto segue:

sudo mdadm --create --verbose /dev/md0 --level=10 --layout=o3 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd

Il tool mdadminizierà a configurare l’array. Utilizza il processo di ripristino per creare l’array per motivi di prestazioni. Il completamento dell’operazione può richiedere del tempo, ma durante questo periodo è possibile utilizzare l’array. È possibile monitorare l’avanzamento del mirroring controllando il file /proc/mdstat:

cat /proc/mdstat

Output
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10] 
md0 : active raid10 sdd[3] sdc[2] sdb[1] sda[0]
      209584128 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
      [===>.................]  resync = 18.1% (37959424/209584128) finish=13.8min speed=206120K/sec
      
unused devices: <none>

Nella prima riga evidenziata, il dispositivo /dev/md0è stato creato nella configurazione RAID 10 utilizzando i disositivi /dev/sda, /dev/sdb, /dev/sdce /dev/sdd. La seconda area evidenziata mostra il layout utilizzato per questo esempio (due copie nella configurazione near). La terza area evidenziata mostra lo stato di avanzamento della costruzione. Puoi continuare la guida mentre questo processo viene completato.

Creazione e montaggio del filesystem

Successivamente, crea un filesystem sull’array:

sudo mkfs.ext4 -F /dev/md0

Crea un punto di montaggio per collegare il nuovo filesystem:

sudo mkdir -p /mnt/md0

È possibile montare il filesystem in questo modo:

sudo mount /dev/md0 /mnt/md0

Verifica se il nuovo spazio è disponibile:

df -h -x devtmpfs -x tmpfs

Output
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        25G  1.4G   23G   6% /
/dev/vda15      105M  3.4M  102M   4% /boot/efi
/dev/md0        197G   60M  187G   1% /mnt/md0

Il nuovo filesystem è montato e accessibile.

Salvataggio del layout dell’array

Per assicurarti che l’array venga riassemblato automaticamente all’avvio, dovrai modificare il file /etc/mdadm/mdadm.conf. È possibile eseguire automaticamente la scansione dell’array attivo e aggiungere il file eseguendo quanto segue:

sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Successivamente è possibile aggiornare il file initramfso file system RAM iniziale, in modo che l’array sia disponibile durante il processo di avvio:

sudo update-initramfs -u

Aggiungi le nuove opzioni di montaggio del filesystem al file /etc/fstab per il montaggio automatico all’avvio:

echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

L’array RAID 10 verrà ora assemblato e montato automaticamente ogni avvio.

RAID – Introduzione alla terminologia e ai concetti

L’archiviazione è una considerazione importante quando si configura un server. Quasi tutte le informazioni importanti che interessano verranno prima o poi scritte su un dispositivo di archiviazione per essere salvate per un successivo recupero. I dischi singoli possono essere utili se le esigenze sono semplici. Tuttavia, se hai requisiti di ridondanza o prestazioni più complessi, soluzioni come RAID possono essere utili.

In questa guida parleremo della terminologia e dei concetti RAID comuni. Discuteremo alcuni vantaggi e svantaggi della disposizione dei dispositivi in ​​array RAID, parleremo delle differenze nelle tecnologie di implementazione e esamineremo il modo in cui i diversi livelli RAID influiscono sull’ambiente di archiviazione.

RAID sta per Array ridondanti di dischi indipendenti (Redundant Arrays of Independent Disks). Combinando le unità in modelli diversi, gli amministratori possono ottenere prestazioni o ridondanza maggiori rispetto a quelle che l’insieme di unità può offrire se gestite individualmente. Il RAID è implementato come uno strato intermedio tra le unità o le partizioni grezze e lo strato del file system.

Quando il RAID è una buona idea?

I valori principali forniti dal RAID sono la ridondanza dei dati e il miglioramento delle prestazioni.

La ridondanza ha lo scopo di contribuire ad aumentare la disponibilità dei dati. Ciò significa che durante determinate condizioni di guasto, come quando un’unità di archiviazione diventa difettosa, le informazioni sono ancora accessibili e il sistema nel suo insieme può continuare a funzionare fino alla sostituzione dell’unità. Questo non è inteso come un meccanismo di backup (con RAID sono sempre consigliati backup separati come con qualsiasi altro tipo di archiviazione), ma è inteso invece a ridurre al minimo le interruzioni quando si verificano problemi.

L’altro vantaggio offerto dal RAID in alcuni scenari riguarda le prestazioni. L’I/O di archiviazione è spesso limitato dalla velocità di un singolo disco. Con RAID, i dati sono ridondanti o distribuiti, il che significa che è possibile consultare più dischi per ogni operazione di lettura, aumentando il throughput totale. Le operazioni di scrittura possono anche essere migliorate in alcune configurazioni poiché a ogni singolo disco potrebbe essere richiesto di scrivere solo una frazione dei dati totali.

Alcuni svantaggi del RAID includono una maggiore complessità di gestione e spesso una riduzione della capacità disponibile. Ciò si traduce in costi aggiuntivi per la stessa quantità di spazio utilizzabile. Ulteriori spese potrebbero essere sostenute attraverso l’uso di hardware specializzato quando l’array non è gestito interamente tramite software.

Un altro svantaggio delle configurazioni di array incentrate sulle prestazioni senza ridondanza è l’aumento del rischio di perdita totale dei dati. In questi scenari un insieme di dati dipende interamente da più di un dispositivo di archiviazione, aumentando il rischio totale di perdita

Gli array RAID possono essere creati e gestiti utilizzando alcune tecnologie diverse.

RAID hardware

È possibile utilizzare hardware dedicato chiamato controller RAID o schede RAID per impostare e gestire il RAID in modo indipendente dal sistema operativo. Questo è noto come RAID hardware. I veri controller RAID hardware avranno un processore dedicato per la gestione dei dispositivi RAID.

Ciò presenta una serie di vantaggi:

  • Prestazioni: i controller RAID hardware originali non hanno bisogno di occupare cicli della CPU per gestire i dischi sottostanti. Ciò significa nessun sovraccarico per la gestione dei dispositivi di archiviazione collegati. I controller di alta qualità forniscono anche un’ampia memorizzazione nella cache, che può avere un enorme impatto sulle prestazioni.
  • Eliminazione della complessità: un altro vantaggio derivante dall’utilizzo dei controller RAID è che astraggono la disposizione del disco sottostante dal sistema operativo. Il RAID hardware può presentare l’intero gruppo di unità come una singola unità logica di archiviazione. Non è necessario che il sistema operativo comprenda la disposizione RAID; può semplicemente interfacciarsi con l’array come se fosse un singolo dispositivo.
  • Disponibilità all’avvio: poiché l’array è gestito interamente al di fuori del software, sarà disponibile all’avvio, consentendo al filesystem root stesso di essere facilmente installato su un array RAID.

Il RAID hardware presenta anche alcuni svantaggi significativi.

  • Vincolo del fornitore: poiché la disposizione RAID è gestita dal firmware proprietario sull’hardware stesso, un array è in qualche modo bloccato sull’hardware utilizzato per crearlo. Se un controller RAID muore, nella quasi totalità dei casi, deve essere sostituito con un modello identico o compatibile. Alcuni amministratori consigliano di acquistare uno o più controller di backup da utilizzare nel caso in cui il primo abbia un problema.
  • Costo elevato: i controller RAID hardware di qualità tendono ad essere piuttosto costosi.

RAID software

Il RAID può anche essere configurato dal sistema operativo stesso. Poiché la relazione tra i dischi è definita all’interno del sistema operativo e non del firmware di un dispositivo hardware, si parla di RAID software .

Alcuni vantaggi del RAID software:

  • Flessibilità: poiché il RAID è gestito all’interno del sistema operativo, può essere facilmente configurato dallo spazio di archiviazione disponibile senza riconfigurare l’hardware, da un sistema in esecuzione. Il RAID software Linux è particolarmente flessibile e consente molti tipi diversi di configurazione RAID.
  • Open source: anche le implementazioni RAID software per sistemi operativi open source come Linux e FreeBSD sono open source. L’implementazione RAID non è nascosta e può essere facilmente letta e implementata su altri sistemi. Ad esempio, l’array RAID creato su una macchina Ubuntu può essere facilmente importato in un server CentOS in un secondo momento. Ci sono poche possibilità di perdere l’accesso ai tuoi dati a causa delle differenze del software.
  • Nessun costo aggiuntivo: il RAID software non richiede hardware speciale, quindi non aggiunge costi aggiuntivi al server o workstation.

Alcuni svantaggi del RAID software sono:

  • Specifico dell’implementazione: sebbene il RAID software non sia legato a un hardware specifico, tende ad essere legato all’implementazione software specifica del RAID. Linux utilizza mdadm, mentre FreeBSD utilizza RAID basato su GEOM e Windows ha la propria versione di RAID software. Sebbene in alcuni casi le implementazioni open source possano essere trasferite o lette, il formato stesso probabilmente non sarà compatibile con altre implementazioni RAID software.
  • Sovraccarico delle prestazioni: storicamente, il RAID software è stato criticato per la creazione di ulteriore sovraccarico. Per gestire l’array sono necessari cicli della CPU e memoria, che potrebbero essere utilizzati per altri scopi. Implementazioni come mdadmsull’hardware moderno, tuttavia, annulla in gran parte queste preoccupazioni. Il sovraccarico della CPU è minimo e nella maggior parte dei casi insignificante.

RAID software assistito da hardware (Fake RAID)

È disponibile anche un terzo tipo di RAID chiamato RAID software assistito da hardware , RAID firmware o RAID falso. In genere, questo si trova nella funzionalità RAID all’interno delle schede madri stesse o in schede RAID poco costose. Il RAID software assistito da hardware è un’implementazione che utilizza il firmware sul controller o sulla scheda per gestire il RAID, ma utilizza la normale CPU per gestire l’elaborazione.

Vantaggi del RAID software assistito da hardware:

  • Supporto per più sistemi operativi: poiché il RAID viene attivato durante l’avvio iniziale e quindi trasferito al sistema operativo, più sistemi operativi possono utilizzare lo stesso array, cosa che potrebbe non essere possibile con il RAID software.

Svantaggi del RAID software assistito da hardware:

  • Supporto RAID limitato: solitamente sono disponibili solo RAID 0 o RAID 1.
  • Richiede hardware specifico: come il RAID hardware, il RAID software assistito da hardware è legato all’hardware utilizzato per crearlo e gestirlo. Questo problema è ancora più problematico se incluso in una scheda madre, poiché un guasto del controller RAID può significare che è necessario sostituire l’intera scheda madre per accedere nuovamente ai dati.
  • Sovraccarico delle prestazioni: come il RAID software, nessuna CPU è dedicata alla gestione del RAID. L’elaborazione deve essere condivisa con il resto del sistema operativo.

La maggior parte degli amministratori si tiene alla larga dal RAID software assistito dall’hardware poiché soffre di una combinazione delle insidie ​​​​delle altre due implementazioni.

La familiarità con alcuni concetti comuni aiuterà a comprendere meglio RAID. Di seguito sono riportati alcuni termini comuni che potresti incontrare:

  • Livello RAID: il livello RAID di un array si riferisce alla relazione imposta sui dispositivi di archiviazione che lo compongono. Le unità possono essere configurate in molti modi diversi, portando a diverse ridondanze dei dati e caratteristiche prestazionali. Consultare la sezione sui livelli RAID per ulteriori informazioni.
  • Striping: lo striping è il processo di divisione delle scritture sull’array su più dischi sottostanti. Questa strategia viene utilizzata da diversi livelli RAID. Quando i dati vengono distribuiti su un array, vengono suddivisi in blocchi e ciascun blocco viene scritto su almeno uno dei dispositivi sottostanti.
  • Dimensione blocco: durante lo striping dei dati, la dimensione del blocco definisce la quantità di dati che ogni blocco conterrà. La regolazione della dimensione del blocco in modo che corrisponda alle caratteristiche di I/O previste può contribuire a influenzare le prestazioni relative dell’array.
  • Parità: la parità è un meccanismo di integrità dei dati implementato calcolando le informazioni dai blocchi di dati scritti nell’array. Le informazioni sulla parità possono essere utilizzate per ricostruire i dati in caso di guasto di un’unità. La parità calcolata viene posizionata su un dispositivo separato rispetto ai dati da cui viene calcolata e, nella maggior parte delle configurazioni, viene distribuita tra le unità disponibili per prestazioni e ridondanza migliori.
  • Array degradati: gli array dotati di ridondanza possono subire diversi tipi di guasti delle unità senza perdere dati. Quando un array perde un dispositivo ma è ancora operativo, si dice che sia in modalità degradata. Gli array danneggiati possono essere ricostruiti in condizioni pienamente operative una volta sostituito l’hardware guasto, ma nel frattempo potrebbero subire una riduzione delle prestazioni.
  • Resilvering: Resilvering, o risincronizzazione, è il termine utilizzato per ricostruire un array danneggiato. A seconda della configurazione RAID e dell’impatto del guasto, ciò avviene copiando i dati dai file esistenti nell’array oppure calcolando i dati valutando le informazioni di parità.
  • Array annidati: gruppi di array RAID possono essere combinati in array più grandi. Questo di solito viene fatto per sfruttare le funzionalità di due o più livelli RAID diversi. Di solito, gli array con ridondanza (come RAID 1 o RAID 5) vengono utilizzati come componenti per creare un array RAID 0 per migliorare le prestazioni.
  • Span: Sfortunatamente, span ha un significato diverso quando si parla di array.
    • In determinati contesti, “span” può significare unire due o più dischi insieme end-to-end e presentarli come un unico dispositivo logico, senza miglioramenti in termini di prestazioni o ridondanza. Questa è anche conosciuta come disposizione lineare quando si ha a che fare con Linux mdadmimplementazione.
    • Uno “span” può anche riferirsi al livello inferiore di array combinati per formare il livello successivo quando si parla di livelli RAID nidificati, come RAID 10.
  • Scrubbing: lo scrubbing, o controllo, è il processo di lettura di ogni blocco in un array per assicurarsi che non vi siano errori di coerenza. Ciò aiuta a garantire che i dati siano gli stessi su tutti i dispositivi di archiviazione e previene situazioni in cui errori silenziosi possono causare danni, soprattutto durante procedure delicate come le ricostruzioni.

Le caratteristiche di un array sono determinate dalla configurazione e dalla relazione dei dischi, nota come livello RAID . I livelli RAID più comuni sono:

RAID 0

RAID 0 combina due o più dispositivi distribuendo i dati su di essi. Come accennato in precedenza, lo striping è una tecnica che suddivide i dati in blocchi e quindi li scrive alternativamente su ciascun disco dell’array. Il vantaggio di ciò è che, poiché i dati sono distribuiti, l’intera potenza di ciascun dispositivo può essere utilizzata sia per le letture che per le scritture. Il profilo prestazionale teorico di un array RAID 0 è semplicemente la prestazione di un singolo disco moltiplicata per il numero di dischi (le prestazioni nel mondo reale saranno inferiori a questo). Un altro vantaggio è che la capacità utilizzabile dell’array è semplicemente la capacità combinata di tutte le unità che lo compongono.

Sebbene questo approccio offra ottime prestazioni, presenta anche alcuni svantaggi molto importanti. Poiché i dati vengono suddivisi e divisi tra ciascuno dei dischi dell’array, il guasto di un singolo dispositivo causerà il guasto dell’intero array e tutti i dati andranno persi. A differenza della maggior parte degli altri livelli RAID, gli array RAID 0 non possono essere ricostruiti, poiché nessun sottoinsieme di dispositivi componenti contiene informazioni sufficienti sul contenuto per ricostruire i dati. Se si utilizza un array RAID 0, i backup diventano estremamente importanti, poiché l’intero set di dati dipende in egual misura dall’affidabilità di ciascuno dei dischi dell’array.

RAID 1

RAID 1 è una configurazione che rispecchia i dati tra due o più dispositivi. Tutto ciò che viene scritto nell’array viene posizionato su ciascuno dei dispositivi del gruppo. Ciò significa che ogni dispositivo ha un set completo di dati disponibili, offrendo ridondanza in caso di guasto del dispositivo. In un array RAID 1, i dati saranno comunque accessibili finché un singolo dispositivo nell’array funziona correttamente. L’array può essere ricostruito sostituendo le unità guaste, a quel punto i dispositivi rimanenti verranno utilizzati per copiare i dati sul nuovo dispositivo.

Questa configurazione presenta anche alcune penalità. Come RAID 0, la velocità di lettura teorica può ancora essere calcolata moltiplicando la velocità di lettura di un singolo disco per il numero di dischi. Per le operazioni di scrittura, tuttavia, le prestazioni massime teoriche saranno quelle del dispositivo più lento dell’array. Ciò è dovuto al fatto che l’intero dato deve essere scritto su ciascuno dei dischi dell’array. Inoltre, la capacità totale dell’array sarà quella del disco più piccolo. Pertanto un array RAID 1 con due dispositivi di uguali dimensioni avrà la capacità utilizzabile di un singolo disco. L’aggiunta di ulteriori dischi può aumentare il numero di copie ridondanti dei dati, ma non aumenterà la quantità di capacità disponibile.

RAID 5

RAID 5 presenta alcune caratteristiche dei due livelli RAID precedenti, ma presenta un profilo prestazionale diverso e diversi inconvenienti. In RAID 5, i dati vengono distribuiti sui dischi più o meno allo stesso modo di un array RAID 0. Tuttavia, per ogni striscia di dati scritta sull’array, le informazioni sulla parità, un valore calcolato matematicamente che può essere utilizzato per la correzione degli errori e la ricostruzione dei dati, verranno scritte su uno dei dischi. Il disco che riceve il blocco di parità calcolata anziché un blocco dati ruoterà con ogni stripe scritto.

Ciò presenta alcuni vantaggi importanti. Come altri array con striping, le prestazioni di lettura traggono vantaggio dalla capacità di leggere da più dischi contemporaneamente. Gli array RAID 5 gestiscono la perdita di qualsiasi disco nell’array. Se ciò accade, i blocchi di parità consentono la ricostruzione completa dei dati. Poiché la parità è distribuita (alcuni livelli RAID meno comuni utilizzano un’unità di parità dedicata, nella fattispecie RAID 4), ogni disco dispone di una quantità bilanciata di informazioni sulla parità. Mentre la capacità di un array RAID 1 è limitata alla dimensione di un singolo disco (tutti i dischi hanno copie identiche dei dati), con la parità RAID 5 è possibile ottenere un livello di ridondanza al costo dello spazio di un solo disco. Pertanto, quattro unità da 100 G in un array RAID 5 produrrebbero 300 G di spazio utilizzabile (gli altri 100 G sarebbero occupati dalle informazioni di parità distribuite).

Come gli altri livelli, RAID 5 presenta alcuni inconvenienti significativi che devono essere presi in considerazione. Le prestazioni del sistema possono rallentare notevolmente a causa dei calcoli di parità al volo. Ciò può influire su ogni operazione di scrittura. Se un disco si guasta e l’array entra in uno stato degradato, verrà introdotta anche una penalità significativa per le operazioni di lettura (i dati mancanti dovranno essere calcolati dai dischi rimanenti). Inoltre, quando l’array viene riparato dopo la sostituzione di un’unità guasta, è necessario leggere ciascuna unità e utilizzare la CPU per calcolare i dati mancanti e ricostruirli. Ciò può stressare le unità rimanenti, portando talvolta a ulteriori guasti, con conseguente perdita di tutti i dati.

RAID 6

RAID 6 utilizza un’architettura simile a RAID 5, ma con informazioni di doppia parità. Ciò significa che l’array può sopportare il guasto di due dischi qualsiasi. Si tratta di un vantaggio significativo dovuto alla maggiore probabilità che si verifichi un ulteriore guasto del disco durante il processo di ricostruzione intensivo dopo che si è verificato un errore. Come altri livelli RAID che utilizzano lo striping, le prestazioni di lettura sono generalmente buone. Tutti gli altri vantaggi del RAID 5 esistono anche per il RAID 6.

Per quanto riguarda gli svantaggi, RAID 6 compensa la doppia parità aggiuntiva con la capacità di un disco aggiuntivo. Ciò significa che la capacità totale dell’array corrisponde allo spazio combinato delle unità coinvolte, meno due unità. Il calcolo per determinare i dati di parità per RAID 6 è più complesso di RAID 5, il che può portare a prestazioni di scrittura peggiori rispetto a RAID 5. RAID 6 soffre di alcuni degli stessi problemi di degrado di RAID 5, ma la ridondanza del disco aggiuntivo protegge contro la probabilità che ulteriori errori cancellino i dati durante le operazioni di ricostruzione.

RAID 10

RAID 10 può essere implementato in diversi modi, che influiscono sulle sue caratteristiche generali:

  • RAID nidificato 1+0

Tradizionalmente, RAID 10 si riferisce a un RAID nidificato, creato impostando prima due o più mirror RAID 1 e quindi utilizzandoli come componenti per creare un array RAID 0 con striping su di essi. A volte questo viene ora chiamato RAID 1+0 per essere più espliciti su questa relazione. A causa di questa progettazione, sono necessari almeno quattro dischi per formare un array RAID 1+0 (RAID 0 con striping su due array RAID 1 costituiti da due dispositivi ciascuno).

Gli array RAID 1+0 hanno le caratteristiche di prestazioni elevate di un array RAID 0, ma invece di fare affidamento su singoli dischi per ciascun componente dello stripe, viene utilizzato un array con mirroring, fornendo ridondanza. Questo tipo di configurazione può gestire i guasti del disco in qualsiasi set RAID 1 con mirroring purché almeno un disco in ciascun RAID 1 rimanga disponibile. L’array complessivo è tollerante agli errori in modo sbilanciato, il che significa che può gestire un numero diverso di errori a seconda di dove si verificano.

Poiché RAID 1+0 offre sia ridondanza che prestazioni elevate, di solito è un’ottima opzione se il numero di dischi richiesti non è proibitivo.

  • RAID 10 di mdadm

Quello di Linux mdadmoffre la propria versione di RAID 10, che porta avanti lo spirito e i vantaggi di RAID 1+0, ma altera l’effettiva implementazione per essere più flessibile e offrire alcuni vantaggi aggiuntivi.

Come RAID 1+0, mdadmRAID 10 consente copie multiple e dati con striping. Tuttavia, i dispositivi non sono disposti in termini di coppie speculari. L’amministratore decide invece il numero di copie che verranno scritte per l’array. I dati vengono suddivisi in blocchi e scritti sull’array in più copie, assicurandosi che ciascuna copia di un blocco venga scritta su un dispositivo fisico diverso. Il risultato finale è che esiste lo stesso numero di copie, ma l’array non è vincolato tanto dalla nidificazione sottostante.

Questa concezione del RAID 10 presenta alcuni notevoli vantaggi rispetto al RAID 1+0 nidificato. Poiché non si basa sull’utilizzo di array come elementi costitutivi, può utilizzare un numero dispari di dischi e ha un numero minimo di dischi inferiore (sono richiesti solo 3 dispositivi). Anche il numero di copie da conservare è configurabile. La gestione è semplificata poiché è necessario indirizzare un solo array ed è possibile allocare parti di riserva che possono essere utilizzate per qualsiasi disco dell’array invece che per un solo array componente.