Dimensione: 2856
Commento:
|
Dimensione: 9887
Commento:
|
Le cancellazioni sono segnalate in questo modo. | Le aggiunte sono segnalate in questo modo. |
Linea 8: | Linea 8: |
Per ''Linux Software RAID'' si intende una particolare tipologia di RAID il cui funzionamento dipende da un driver e non richiede hardware dedicato. Per contro, i sistemi ''fake RAID'' possono essere realizzati solo in presenza di una scheda madre compatibile, e gli ''hardware RAID'' richiedono specifici controller dedicati.<<BR>> Il tool software che consente la creazione e la gestione degli array Linux Software RAID è '''mdadm''', la cui installazione comprende l'installazione del driver '''md'''.<<BR>> Gli array software vengono visti dal sistema come dispositivi virtuali detti multi-disk e assumono una nomenclatura del tipo '''md''N''''', dove '''''N''''' è un numero in base zero, ad esempio '''md0''', '''md1''', ecc... Nel paragrafo [[#Metadati|Metadati]] viene spiegato come vengono indicate le partizioni all'interno di un array, se supportate. |
Per ''Linux Software RAID'' si intende una particolare tipologia di RAID il cui funzionamento dipende da un driver software e non richiede hardware dedicato. Per contro, i sistemi ''fake RAID'' possono essere realizzati solo in presenza di una scheda madre compatibile, e gli ''hardware RAID'' richiedono specifici controller dedicati.<<BR>> Il tool software che consente la creazione e la gestione degli array Linux Software RAID è '''mdadm''', la cui installazione comprende il driver '''md'''.<<BR>> Gli elementi che compongono un array possono essere interi dischi, ad esempio '''sda''' ed '''sdb''', oppure singole partizioni, ad esempio '''sda1''' ed '''sdb1'''. Ciò significa che sugli stessi dischi possono coesistere diversi array con diversi [[#Livelli_RAID_supportati|livelli RAID]]. Ad esempio utilizzando i dischi '''sda''' ed '''sdb''' è possibile creare un '''RAID 1''' con le partizioni '''sda1''' ed '''sdb1''' e un '''RAID 0''' con le partizioni '''sda2''' ed '''sdb2'''. = Nomenclatura degli array = Gli array software vengono visti dal sistema come dispositivi virtuali detti ''multi-disk'' (md) e assumono una nomenclatura del tipo '''md''N''''', dove '''''N''''' è un numero in base zero, ad esempio '''md0''', '''md1''', ecc...<<BR>> Le partizioni all'interno di un array vengono indicate come '''p''N''''', dove '''''N''''' è un numero in base 1, ad esempio '''md0p1''', '''md0p2''', ecc... Tuttavia, in casi particolari, l'array può essere privo di tabella delle partizioni. In questo caso il solo nome dell'array ('''md''N''''' senza '''p''N''''') sì riferirsi all'unica partizione presente nell'array. Per maggiori dettagli consultare il paragrafo [[#Metadati|Metadati]]. |
Linea 13: | Linea 18: |
* Linear (o JBOD) * RAID 0 * RAID 1 * RAID 4 * RAID 5 * RAID 6 * RAID 10 Oltre a quasti livelli RAID sono supportate ulteriori modalità, come '''Container''', '''Faulty''' e '''Multipath'''. Per maggiori informazioni consultare il manuale di [[https://manpages.ubuntu.com/manpages/focal/en/man4/md.4.html|md]]. |
* '''Linear''' (o JBOD) * '''RAID 0''' (eccetto metadati versione '''0.90''') * '''RAID 1''' * '''RAID 4''' * '''RAID 5''' * '''RAID 6''' * '''RAID 10''' Oltre a quasti livelli RAID sono supportate ulteriori modalità, come '''Container''', '''Faulty''' e '''Multipath'''. Per maggiori informazioni consultare il [[https://manpages.ubuntu.com/manpages/focal/en/man4/md.4.html|manuale di md]]. |
Linea 23: | Linea 29: |
I metadati sono una piccola quantità di dati memorizzati nel superblocco che servono per conservare informazioni sulla struttura e sullo stato dell'array. Le versioni di metadati supportate sono le seguenti: * Versione originale ('''0.90'''): supporta array composti da un massimo di 28 dispositivi e ha un limite di 2 TB per gli array di livello 1 o superiore. Il superblocco si trova alla fine del disco. I metadati vengono memorizzati in un modo dipendente dal processore, pertanto gli array non possono essere facilmente spostati su computer con processori diversi. * Nuova versione ('''1.x'''): supporta array composti da centinaia di dispositivi. I metadati vengono memorizzati in un formato indipendente dal processore. Il superblocco può trovarsi in una delle seguenti posizioni:<<BR>> |
I metadati sono una piccola quantità di dati memorizzata nel superblocco. Il loro scopo è conservare informazioni sulla struttura e sullo stato dell'array. Le versioni di metadati supportate sono le seguenti: * Versione originale ('''0.90'''): supporta array composti da un massimo di 28 elementi con una dimensione massima di 2 TB per elemento. Non supporta il '''livello 0'''. Il superblocco si trova alla fine del disco. Il modo in cui vengono memorizzati i metadati dipende dal processore, pertanto gli array non possono essere facilmente spostati fra computer con processori diversi. * Nuova versione ('''1.x'''): supporta array composti da centinaia di elementi. Il modo in cui vengono memorizzati i metadati è indipendente dal processore. Il superblocco può trovarsi in una delle seguenti posizioni:<<BR>> |
Linea 28: | Linea 35: |
'''1.2''': 4 KiB dall'inizio del disco. Gli array con metadati versione '''0.90''' o '''1.0''' non possono essere suddivisi in partizioni, pertanto il nome dell'array, ad esempio '''md0''' è anche il nome dell'unica partizione che contiene. Gli array di livello 1 con metadati versione '''0.90''' o '''1.0''' possono essere usati come partizioni di avvio, ad esempio '''ESP''' e '''/boot'''. Gli array con metadati versione '''1.1''' o '''1.2''' invece possono essere suddivisi in partizioni che vengono indicate come '''p''N''''', dove '''''N''''' è un numero in base 1, ad esempio '''md0p1''', '''md0p2''', ecc... |
'''1.2''': A 4 KiB dall'inizio del disco. Per impostazione predefinita vengono usati i metadati versione '''1.2'''. Per specificare una versione diversa utilizzare il parametro `--metadata=` oppure `-e` al momento della creazione . Per utilizzare la versione '''1.0''' specificare `1.0` e non `1`. == Peculiarità dei metadati versione 0.90 e 1.0 == I metadati versione '''0.90''' e '''1.0''' sono accomunati dal fatto che il superblocco si trova alla fine del disco. Da questa caratteristica derivano alcune peculiarità.<<BR>> <<BR>> Se il primo elemento dell'array è una partizione, l'array sarà esso stesso una partizione, senza una tabella delle partizioni. In questo caso il nome dell'array (ad esempio '''md0''') si riferisce a quell'unica partizione. Per gli array di '''livello 4''' o superiore è necessario formattare l'array con un file system oppure assegnargli una tabella e suddividerlo in partizioni. Gli array di '''livello 1''' invece mantengono inalterato il file system e tutti i dati della prima partizione che li costituisce.<<BR>> Ad esempio, se '''sda1''' ed '''sdb1''' sono il primo e secondo elemento di un array di '''livello 1''', questo sarà privo di tabella delle partizioni e avrà lo stesso file system e i dati di '''sda1'''. Trattandosi di un array di '''livello 1''', file system e dati verranno replicati perfettamente su '''sdb1'''. Di conseguenza l'eventuale file system e i dati di '''sdb1''' verranno distrutti.<<BR>> <<BR>> Sempre in riferimento agli array di '''livello 1''', quando l'array non è attivo le partizioni che lo compongono sono accessibili in lettura e scrittura singolarmente, in modo indipendente. Se viene modificato il contenuto della partizione che funge da primo elemento, quando l'array viene riassemblato queste modifiche vengono replicate sugli altri elementi dell'array. Al contrario se viene modificato il contenuto di un altro elemento, quando l'array viene riassemblato queste modifiche non vengono mantenute e viene ripristinata una perfetta replica del primo elemento dell'array.<<BR>> Ad esempio, se '''sda1''' ed '''sdb1''' sono il primo e secondo elemento di un array di '''livello 1''', quando l'array non è attivo è possibile accedere in lettura e scrittura alle due partizioni in modo indipendente. Essendo '''sda1''' il primo elemento dell'array, qualsiasi modifica apportata al suo contenuto verrà poi replicata su '''sdb1''' quando l'array verrà riassemblato. Al contrario le modifiche apportate a '''sdb1''' andranno perse, rimpiazzate da una perfetta replica di '''sda1'''.<<BR>> <<BR>> Prendendo in considerazione una situazione reale, in un sistema '''UEFI''' il firmware della scheda madre all'avvio deve poter accedere alla partizione EFI. Pertanto un'eventuale ''array EFI'' dovrà essere necessariamente di '''livello 1''' e utilizzare i metadati versione '''0.90''' o '''1.0'''. Inoltre se nel sistema è già presente una partizione EFI e questa contiene i file di avvio di altri sistemi operativi (multiboot), questa partizione dovrà essere indicata come primo elemento dell'array. In caso contrario i file di avvio degli altri sistemi andrebbero distrutti. = Creare un array = Il comando per creare un array è il seguente:{{{ sudo mdadm --create /dev/mnN --level=N --devices=N /dev/<primo elemento> /dev/<ennesimo elemento>}}} Seguono alcuni esempi pratici: * Per creare un array denominato '''md0''' di '''livello 1''' composta da 3 elementi, ovvero le partizioni '''sda1''', '''sdb1''' ed '''sdc1''', digitare il seguente comando:{{{ sudo mdadm --create /dev/md0 --level=1 --devices=3 /dev/sd[a-c]1}}} Notare che la formula `/dev/sd[a-c]1` equivale a `/dev/sda1 /dev/sdb1 /dev/sdc1`. * Per creare un array denominato '''md1''' di '''livello 0''' composta da 2 elementi, ovvero le partizioni '''sda1''' ed '''sdb3''', digitare il seguente comando:{{{ sudo mdadm --create /dev/md1 --level=0 --devices=2 /dev/sda1 /dev/sdb3}}} Notare che le partizioni che compongono l'array possono avere numeri diversi, in questo esempio '''1''' e '''3'''. * Per creare un array denominato '''md2''' di '''livello 5''' composta da 3 elementi, ovvero i dischi '''sda''', '''sdb''' ed '''sdc''', digitare il seguente comando:{{{ sudo mdadm --create /dev/md2 --level=5 --devices=3 /dev/sda /dev/sdb /dev/sdc}}} Notare che gli elementi di un array possono essere anche interi dischi, in questo esempio '''sda''', '''sdb''' ed '''sdc'''. * Per creare un ''array EFI'' denominato '''md3''' in un sistema in cui è già presente la partizione EFI '''sda1''' che si intende mettere in RAID con la partizione '''sdb1''', digitare il seguente comando:{{{ sudo mdadm --create /dev/md3 --level=1 --metadata=1.0 --devices=2 /dev/sda1 /dev/sdb1}}} Notare che, come specificato nel paragrafo [[#Peculiarit.2BAOA_dei_metadati_versione_0.90_e_1.0|Peculiarità dei metadati versione 0.90 e 1.0]], l'array EFI deve necessariamente essere di '''livello 1''' ed è necessario specificare il parametro `--metadata=` (oppure `-e`) con valore '''0.90''' oppure '''1.0'''. Inoltre il primo elemento dell'array deve essere l'eventuale partizione EFI preesistente, in questo esempio '''sda1'''. = Eliminare un array = Nei passaggi seguenti sostituire `/dev/mdN` con l'array da eliminare, ad esempio `/dev/md0`, e `/dev/sdX` con i dispositivi o le partizioni che lo compongono, ad esempio `/dev/sda` o `/dev/sda1`. 0. Se montato, smontare l'array digitando il seguente comando nel [[AmministrazioneSistema/Terminale|terminale]]:{{{ sudo umount /dev/mdN}}} 0. Disattivare l'array digitando il seguente comando nel [[AmministrazioneSistema/Terminale|terminale]]:{{{ sudo mdadm --stop /dev/mdN}}} 0. Rimuovere i [[#Metadati|metadati]] presenti sui dispositivi o partizioni che compongono l'array digitando per ciascuno di essi il seguente comando nel [[AmministrazioneSistema/Terminale|terminale]]:{{{ sudo mdadm --zero-superblock /dev/sdX}}} 0. Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/Sudo|privilegi di amministrazione]] il file `/etc/mdadm/mdadm.conf`. 0. Rimuovere o commentare la riga che fa riferimento all'array che si intende eliminare, se presente. La riga avrà un formato di questo tipo:{{{ ARRAY /dev/mdN metadata=N.N name=mdadmwrite:N UUID=XXXXXXXX:XXXXXXXX:XXXXXXXX:XXXXXXXX}}} 0. Salvare il file e chiudere l'editor di testo. 0. Aggiornare `initramfs` digitando il seguente comando nel [[AmministrazioneSistema/Terminale|terminale]]:{{{ sudo update-initramfs -u}}} 0. Se in [[AmministrazioneSistema/Fstab|fstab]] sono presenti riferimenti all'array o a sue partizioni, rimuoverli. |
Guida verificata con Ubuntu: 20.04
Introduzione
Per Linux Software RAID si intende una particolare tipologia di RAID il cui funzionamento dipende da un driver software e non richiede hardware dedicato. Per contro, i sistemi fake RAID possono essere realizzati solo in presenza di una scheda madre compatibile, e gli hardware RAID richiedono specifici controller dedicati.
Il tool software che consente la creazione e la gestione degli array Linux Software RAID è mdadm, la cui installazione comprende il driver md.
Gli elementi che compongono un array possono essere interi dischi, ad esempio sda ed sdb, oppure singole partizioni, ad esempio sda1 ed sdb1. Ciò significa che sugli stessi dischi possono coesistere diversi array con diversi livelli RAID. Ad esempio utilizzando i dischi sda ed sdb è possibile creare un RAID 1 con le partizioni sda1 ed sdb1 e un RAID 0 con le partizioni sda2 ed sdb2.
Nomenclatura degli array
Gli array software vengono visti dal sistema come dispositivi virtuali detti multi-disk (md) e assumono una nomenclatura del tipo mdN, dove N è un numero in base zero, ad esempio md0, md1, ecc...
Le partizioni all'interno di un array vengono indicate come pN, dove N è un numero in base 1, ad esempio md0p1, md0p2, ecc... Tuttavia, in casi particolari, l'array può essere privo di tabella delle partizioni. In questo caso il solo nome dell'array (mdN senza pN) sì riferirsi all'unica partizione presente nell'array. Per maggiori dettagli consultare il paragrafo Metadati.
Livelli RAID supportati
Linear (o JBOD)
RAID 0 (eccetto metadati versione 0.90)
RAID 1
RAID 4
RAID 5
RAID 6
RAID 10
Oltre a quasti livelli RAID sono supportate ulteriori modalità, come Container, Faulty e Multipath. Per maggiori informazioni consultare il manuale di md.
Metadati
I metadati sono una piccola quantità di dati memorizzata nel superblocco. Il loro scopo è conservare informazioni sulla struttura e sullo stato dell'array. Le versioni di metadati supportate sono le seguenti:
Versione originale (0.90): supporta array composti da un massimo di 28 elementi con una dimensione massima di 2 TB per elemento. Non supporta il livello 0. Il superblocco si trova alla fine del disco. Il modo in cui vengono memorizzati i metadati dipende dal processore, pertanto gli array non possono essere facilmente spostati fra computer con processori diversi.
Nuova versione (1.x): supporta array composti da centinaia di elementi. Il modo in cui vengono memorizzati i metadati è indipendente dal processore. Il superblocco può trovarsi in una delle seguenti posizioni:
1.0: Alla fine del disco.
1.1: All'inizio del disco.
1.2: A 4 KiB dall'inizio del disco.
Per impostazione predefinita vengono usati i metadati versione 1.2. Per specificare una versione diversa utilizzare il parametro --metadata= oppure -e al momento della creazione . Per utilizzare la versione 1.0 specificare 1.0 e non 1.
Peculiarità dei metadati versione 0.90 e 1.0
I metadati versione 0.90 e 1.0 sono accomunati dal fatto che il superblocco si trova alla fine del disco. Da questa caratteristica derivano alcune peculiarità.
Se il primo elemento dell'array è una partizione, l'array sarà esso stesso una partizione, senza una tabella delle partizioni. In questo caso il nome dell'array (ad esempio md0) si riferisce a quell'unica partizione. Per gli array di livello 4 o superiore è necessario formattare l'array con un file system oppure assegnargli una tabella e suddividerlo in partizioni. Gli array di livello 1 invece mantengono inalterato il file system e tutti i dati della prima partizione che li costituisce.
Ad esempio, se sda1 ed sdb1 sono il primo e secondo elemento di un array di livello 1, questo sarà privo di tabella delle partizioni e avrà lo stesso file system e i dati di sda1. Trattandosi di un array di livello 1, file system e dati verranno replicati perfettamente su sdb1. Di conseguenza l'eventuale file system e i dati di sdb1 verranno distrutti.
Sempre in riferimento agli array di livello 1, quando l'array non è attivo le partizioni che lo compongono sono accessibili in lettura e scrittura singolarmente, in modo indipendente. Se viene modificato il contenuto della partizione che funge da primo elemento, quando l'array viene riassemblato queste modifiche vengono replicate sugli altri elementi dell'array. Al contrario se viene modificato il contenuto di un altro elemento, quando l'array viene riassemblato queste modifiche non vengono mantenute e viene ripristinata una perfetta replica del primo elemento dell'array.
Ad esempio, se sda1 ed sdb1 sono il primo e secondo elemento di un array di livello 1, quando l'array non è attivo è possibile accedere in lettura e scrittura alle due partizioni in modo indipendente. Essendo sda1 il primo elemento dell'array, qualsiasi modifica apportata al suo contenuto verrà poi replicata su sdb1 quando l'array verrà riassemblato. Al contrario le modifiche apportate a sdb1 andranno perse, rimpiazzate da una perfetta replica di sda1.
Prendendo in considerazione una situazione reale, in un sistema UEFI il firmware della scheda madre all'avvio deve poter accedere alla partizione EFI. Pertanto un'eventuale array EFI dovrà essere necessariamente di livello 1 e utilizzare i metadati versione 0.90 o 1.0. Inoltre se nel sistema è già presente una partizione EFI e questa contiene i file di avvio di altri sistemi operativi (multiboot), questa partizione dovrà essere indicata come primo elemento dell'array. In caso contrario i file di avvio degli altri sistemi andrebbero distrutti.
Creare un array
Il comando per creare un array è il seguente:
sudo mdadm --create /dev/mnN --level=N --devices=N /dev/<primo elemento> /dev/<ennesimo elemento>
Seguono alcuni esempi pratici:
Per creare un array denominato md0 di livello 1 composta da 3 elementi, ovvero le partizioni sda1, sdb1 ed sdc1, digitare il seguente comando:
sudo mdadm --create /dev/md0 --level=1 --devices=3 /dev/sd[a-c]1
Notare che la formula /dev/sd[a-c]1 equivale a /dev/sda1 /dev/sdb1 /dev/sdc1.
Per creare un array denominato md1 di livello 0 composta da 2 elementi, ovvero le partizioni sda1 ed sdb3, digitare il seguente comando:
sudo mdadm --create /dev/md1 --level=0 --devices=2 /dev/sda1 /dev/sdb3
Notare che le partizioni che compongono l'array possono avere numeri diversi, in questo esempio 1 e 3.
Per creare un array denominato md2 di livello 5 composta da 3 elementi, ovvero i dischi sda, sdb ed sdc, digitare il seguente comando:
sudo mdadm --create /dev/md2 --level=5 --devices=3 /dev/sda /dev/sdb /dev/sdc
Notare che gli elementi di un array possono essere anche interi dischi, in questo esempio sda, sdb ed sdc.
Per creare un array EFI denominato md3 in un sistema in cui è già presente la partizione EFI sda1 che si intende mettere in RAID con la partizione sdb1, digitare il seguente comando:
sudo mdadm --create /dev/md3 --level=1 --metadata=1.0 --devices=2 /dev/sda1 /dev/sdb1
Notare che, come specificato nel paragrafo Peculiarità dei metadati versione 0.90 e 1.0, l'array EFI deve necessariamente essere di livello 1 ed è necessario specificare il parametro --metadata= (oppure -e) con valore 0.90 oppure 1.0. Inoltre il primo elemento dell'array deve essere l'eventuale partizione EFI preesistente, in questo esempio sda1.
Eliminare un array
Nei passaggi seguenti sostituire /dev/mdN con l'array da eliminare, ad esempio /dev/md0, e /dev/sdX con i dispositivi o le partizioni che lo compongono, ad esempio /dev/sda o /dev/sda1.
Se montato, smontare l'array digitando il seguente comando nel terminale:
sudo umount /dev/mdN
Disattivare l'array digitando il seguente comando nel terminale:
sudo mdadm --stop /dev/mdN
Rimuovere i metadati presenti sui dispositivi o partizioni che compongono l'array digitando per ciascuno di essi il seguente comando nel terminale:
sudo mdadm --zero-superblock /dev/sdX
Aprire con un editor di testo e con i privilegi di amministrazione il file /etc/mdadm/mdadm.conf.
Rimuovere o commentare la riga che fa riferimento all'array che si intende eliminare, se presente. La riga avrà un formato di questo tipo:
ARRAY /dev/mdN metadata=N.N name=mdadmwrite:N UUID=XXXXXXXX:XXXXXXXX:XXXXXXXX:XXXXXXXX
- Salvare il file e chiudere l'editor di testo.
Aggiornare initramfs digitando il seguente comando nel terminale:
sudo update-initramfs -u
Se in fstab sono presenti riferimenti all'array o a sue partizioni, rimuoverli.