RAID: Redundant Array of Indipendent Disks: differenze tra le versioni

(16 versioni intermedie di uno stesso utente non sono mostrate)
Riga 3: Riga 3:
|successivo=Nfs-kernel-server:_condividere_risorse_tra_macchine_GNU/Linux
|successivo=Nfs-kernel-server:_condividere_risorse_tra_macchine_GNU/Linux
}}{{Versioni_compatibili}}{{Template:RAID}}
}}{{Versioni_compatibili}}{{Template:RAID}}
= Introduzione =
== Introduzione ==


=== Generalità ===
=== Generalità ===
Riga 30: Riga 30:
Si noti che purtroppo il raid software linux non è supportato da windows (e probabilmente anche da altri SO non linux), quindi in caso di dual boot tale soluzione è assolutamente da scartare; in tale circostanza se non si vuole rinunciare al raid e a windows, oppure a linux, è possibile usare <code>dmraid</code> per implementare anche sotto linux soluzioni fake raid.
Si noti che purtroppo il raid software linux non è supportato da windows (e probabilmente anche da altri SO non linux), quindi in caso di dual boot tale soluzione è assolutamente da scartare; in tale circostanza se non si vuole rinunciare al raid e a windows, oppure a linux, è possibile usare <code>dmraid</code> per implementare anche sotto linux soluzioni fake raid.


= Installare debian su RAID software =
== Installare debian su RAID software ==


Si  veda [[Installare Debian: configurazione RAID | questa pagina]] per un  esempio di come utilizzare lo strumento di partizionamento predefinito.
Si  veda [[Installare Debian: configurazione RAID | questa pagina]] per un  esempio di come utilizzare lo strumento di partizionamento predefinito.


= Creare RAID software dopo l'installazione (mdadm) =
== Creare RAID software dopo l'installazione (mdadm) ==


== Installazione ==
=== Installazione ===
Se durante l'installazione del sistema operativo avete configurato uno o più volumi raid allora ''mdadm'' sarà già stato installato, in caso contrario:
Se durante l'installazione del sistema operativo avete configurato uno o più volumi raid allora ''mdadm'' sarà già stato installato, in caso contrario:
<pre># aptitude install mdadm</pre>
<pre># aptitude install mdadm</pre>


== Utilizzo ==
=== Utilizzo ===


=== Preparazione dischi ===
==== Preparazione dischi ====
{{Box|Nota|È possibile mettere in raid sia interi dischi che singole partizioni. In questa guida sarà esaminato il caso di singola partizione e pertanto il termine ''volume raid'' sarà effettivamente sinonimo di ''partizione raid''.}}
{{Box|Nota|È possibile mettere in raid sia interi dischi che singole partizioni. In questa guida sarà esaminato il caso di singola partizione e pertanto il termine ''volume raid'' sarà effettivamente sinonimo di ''partizione raid''.}}
La prima cosa da sottolineare è che mdadm richiede che l'utente abbia già provveduto a creare le partizioni da mettere in raid. Strumenti come ''fdisk'', ''parted'', ecc. vanno tutti bene.
La prima cosa da sottolineare è che mdadm richiede che l'utente abbia già provveduto a creare le partizioni da mettere in raid. Strumenti come ''fdisk'', ''parted'', ecc. vanno tutti bene.
==== Esempio con fdisk ====
===== Esempio con fdisk =====
Supponendo per esempio di usaree l'utilità ''fdisk'' (ma qualsiasi altro tool come ''parted'' o altri andrebbe egualmente bene) e di usare un disco identificato come <code>/dev/sde</code> digitare da terminale:
Supponendo per esempio di usaree l'utilità ''fdisk'' (ma qualsiasi altro tool come ''parted'' o altri andrebbe egualmente bene) e di usare un disco identificato come <code>/dev/sde</code> digitare da terminale:
<pre># fdisk /dev/sde</pre>
<pre># fdisk /dev/sde</pre>
Riga 60: Riga 60:
Ripetere le precedenti operazioni per tutti gli altri dischi che concorreranno alla formazione dei volumi raid con una o più partizioni.
Ripetere le precedenti operazioni per tutti gli altri dischi che concorreranno alla formazione dei volumi raid con una o più partizioni.


=== Creazione di un volume RAID ===
==== Creazione di un volume RAID ====


Posto di volere creare un volume raid1 di nome ''md0'' comprendente le partizioni '''sde1''' ed '''sdf1''' digitare da terminale:
Posto di volere creare un volume raid1 di nome ''md0'' comprendente le partizioni '''sde1''' ed '''sdf1''' digitare da terminale:
<pre># mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sde1 /dev/sdf1</pre>
<pre># mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sde1 /dev/sdf1</pre>
* <code>--create</code> (<code>-C</code>) dice banalmente che si vuole creare un nuovo volume raid.
* <code>--create</code> (<code>-C</code>) dice banalmente che si vuole creare un nuovo volume raid. Ogni nuovo volume creato è anche automaticamente attivato.
* <code>--verbose</code> (<code>-V</code>) fa sì che siano mostrate più informazioni durante l'esecuzione dell'attività richiesta.
* <code>--level=1</code> (<code>-l=1</code>) dichiara che stiamo creando un raid 1. Se invece di ''1'' si fosse dichiarato ''0'' si sarebbe creato un raid 0.
* <code>--level=1</code> (<code>--l=1</code>) dichiara che stiamo creando un raid 1. Se invece di ''1'' si fosse dichiarato ''0'' si sarebbe creato un raid 0
* <code>--raid-devices=2</code> (<code>-n=2</code>) dichiara il numero di dischi che comporranno il volume raid. Questo numero deve essere uguale al numero di partizioni dichiarate come attive più l'eventuale numero di dischi di riserva dichiarati. In questo esempio non è stato esplicitato il numero di dischi di riserva che quindi viene considerato zero (cioè nessun disco di riserva) e pertanto si sono dichiarate correttamente solo due partizioni attive (<code>/dev/sde1</code> e <code>/dev/sdf1</code>).
* <code>--raid-devices=2</code> (<code>--n=2</code>) dichiara il numero di dischi che comporranno il volume raid. Questo numero deve essere uguale al numero di partizioni dichiarate come attive più l'eventuale numero di dischi di riserva dichiarati. In questo esempio non è stato esplicitato il numero di dischi di riserva che quindi viene considerato zero (cioè nessun disco di riserva) e pertanto si sono dichiarate correttamente solo due partizioni attive (<code>/dev/sde1</code> e <code>/dev/sdf1</code>).
{{Box|Nota|È sempre possibile aumentare il numero di dischi attivo che compongono il volume raid con la modalità <code>--grow</code>, in caso contrario ogni eventuale disco aggiunto successivamente al volume raid verrà considerato essere di riserva.}}
{{Box|Nota|È sempre possibile aumentare il numero di dischi attivo che compongono il volume raid con la modalità <code>--grow</code>, in caso contrario ogni eventuale disco aggiunto successivamente al volume raid verrà considerato essere di riserva.}}
Per verificare che il volume sia correttamente inizializzato digitare
Per verificare che il volume sia correttamente inizializzato digitare
Riga 84: Riga 83:
Ripetere la procedura per tutti gli eventuali altri volumi raid che si desidera creare.
Ripetere la procedura per tutti gli eventuali altri volumi raid che si desidera creare.


=== Rendere permanente un volume RAID creato ===
==== Attivare automaticamente un volume RAID ad ogni avvio ====


Ogni volume raid creato non sopravviverebbe ad un riavvio del sistema, pertanto è necessario modificare o creare un apposito file di configurazione <code>/etc/mdadm/mdadm.conf</code> che ne memorizzi la struttura.<br />
Come già scritto ogni volume raid appena creato viene anche automaticamente attivato e quindi reso immediatamente disponibile, tuttavia tale attivazione deve essere eseguita nuovamente ad ogni riavvio del computer. È possibile attivare manualmente un volume raid tramite l'opzione <code>--assemble</code> (<code>-A</code>) oppure automatizzare la procedura di attivazione di tutti i volumi raid creati salvandone la relativa struttura in un apposito file di configurazione: <code>/etc/mdadm/mdadm.conf</code>.<br />
Se tale file esiste già è sufficiente aggiungere manualmente al suddetto file l'output del seguente comando:
La struttura di tutti i volumi raid creati può essere visualizzata con:
<pre># mdadm --detail --scan</pre>
<pre># mdadm --detail --scan</pre>
oppure ridurre il tutto ad un solo comando digitando:
Tutte le righe che iniziano con <code>ARRAY ...</code> possono essere aggiunte in coda al file <code>/etc/mdadm/mdadm.conf</code>.
 
È utile notare che attualmente (v.4.2-5) <code>mdadm</code> attribuisce come nome di default agli array <code>nome_host_pc:numero progressivo</code>, ottenendo quindi qualcosa di simile a <code>pippo:0</code> per quanto riguarda <code>md0</code>. Sfortunatamente il carattere <code>:</code> non è POSIX compatibile col risultato che il sistema stamperà a video anche un messaggio di avvertenza simile a <code>mdadm Value: "pippo:0" cannot be set as devname. Reason: not POSIX compatible. Value ignored.</code>. Un simile messaggio NON deve evidentemente essere aggiunto a <code>/etc/mdadm/mdadm.conf</code>. In concreto questo significa che nella directory <code>/dev/md/</code> non sarà presente un collegamento simbolico a <code>/dev/md0</code> di nome <code>/dev/md/pippo:0</code>, ma più semplicemente <code>/dev/md/0</code>.
 
La predetta procedura può anche essere ridotta ad un solo comando digitando:
<pre># mdadm --detail --scan >> /etc/mdadm/mdadm.conf</pre>
<pre># mdadm --detail --scan >> /etc/mdadm/mdadm.conf</pre>
Che provvede anche a creare direttamente il file ''.conf'' se questo non esisteva.  
Che provvede anche a creare direttamente il file ''.conf'' se questo non esisteva.
{{Warningbox|Il precedente comando potrebbe aggiungere anche righe che non iniziano con <code>ARRAY ...</code>, nel qual caso spetterà all'utente cancellare le suddette righe.}}
Qualora ci si dimenticasse di (o non si volesse) creare/modificare il file <code>/etc/mdadm/mdadm.conf</code>, dopo un riavvio è possibile riassemblare un volume dando un comando del tipo:
Qualora ci si dimenticasse di (o non si volesse) creare/modificare il file <code>/etc/mdadm/mdadm.conf</code>, dopo un riavvio è possibile riassemblare un volume dando un comando del tipo:
<pre>mdadm -A /dev/md0 /dev/sde1 /dev/sdf1</pre>
<pre>mdadm -A /dev/md0 /dev/sde1 /dev/sdf1</pre>
posto naturalmente che il suddetto volume non contenesse informazioni essenziali per l'avvio del sistema, nel qual caso non ripartirebbe proprio il sistema operativo.
posto naturalmente che il suddetto volume non contenesse informazioni essenziali per l'avvio del sistema, nel qual caso non ripartirebbe proprio il sistema operativo.


=== Rendere utilizzabili i volumi RAID ===
==== Rendere usabili i volumi RAID ====


Per poter materialmente memorizzare dati all'interno di un volume raid è necessario montarlo come una qualsiasi altra partizione, pertanto creare in primis un punto di mount, ad esempio:
Per poter materialmente memorizzare dati all'interno di un volume raid è necessario montarlo come una qualsiasi altra partizione, pertanto creare in primis un punto di mount, ad esempio:
Riga 113: Riga 117:
<pre>blkid /dev/md0</pre>
<pre>blkid /dev/md0</pre>


=== Eliminare un volume RAID ===
==== Eliminare un volume RAID ====


Si supponga di voler eliminare il volume <code>mdX</code>.
Si supponga di voler eliminare il volume <code>mdX</code>.
Riga 122: Riga 126:


Visualizzare e prendere nota dei dischi/partizioni che compongono il volume:
Visualizzare e prendere nota dei dischi/partizioni che compongono il volume:
<pre># mdadm --D /dev/mdX</pre>
<pre># mdadm -D /dev/mdX</pre>
Supponiamo che sia composto da due partizioni: <code>/dev/sdX1</code> e <code>/dev/sdY1</code>
Supponiamo che sia composto da due partizioni: <code>/dev/sde1</code> e <code>/dev/sdf1</code>


Fermare il volume che si vuole eliminare
Fermare il volume che si vuole eliminare
<pre># mdadm --S /dev/mdX</pre>
<pre># mdadm -S /dev/mdX</pre>


Eliminare tutti i metadati dai dischi/partizioni che compongono il volume <code>mdX</code>, che in questo esempio significa
Eliminare tutti i metadati dai dischi/partizioni che compongono il volume <code>mdX</code>, che in questo esempio significa
<pre># mdadm --zero-superblock /dev/sdX1 /dev/sdY1</pre>
<pre># mdadm --zero-superblock /dev/sde1 /dev/sdf1</pre>


Aggiornare il file <code>/etc/mdadm/mdadm.conf</code> eliminando la riga corrispondente a <code>mdX</code>.
Aggiornare il file <code>/etc/mdadm/mdadm.conf</code> eliminando la riga corrispondente a <code>mdX</code>.
Riga 139: Riga 143:
Da notare che questo comando non elimina realmente i dati, ma fa semplicemente apparire i dischi come vuoti.
Da notare che questo comando non elimina realmente i dati, ma fa semplicemente apparire i dischi come vuoti.


= Principali comandi =
== Principali comandi ==


Avviare un Array (se ESISTE il file mdadm.conf):
Creare un volume degradato (cioè composto da un solo disco attivo)
<pre>
<pre>
# mdadm -As /dev/md0
# mdadm -C /dev/md0 -l 1 -n 2 /dev/sde1 missing
</pre>
</pre>
Come già scritto nella prima parte di questa guida quando si dichiara il numero di dischi che compongono il raid il numero delle partizioni dichiarate deve essere pari alla somma di <code>n+x</code>, ecco perché oltre a <code>/dev/sde1</code> viene dichiarato anche <code>missing</code><br/><br/>


Avviare un Array (se NON esiste il file mdadm.conf):
Avviare un volume quando NON esiste il file mdadm.conf (<code>-A</code> = <code>--assemble</code>):
<pre>
<pre>
# mdadm -A /dev/md0
# mdadm -A /dev/md0
</pre>
</pre>


Fermare un Array:
Avviare un volume quando ESISTE il file mdadm.conf (<code>-As</code> = <code>--assemble --scan</code>):
<pre>
# mdadm -As /dev/md0
</pre>
 
Fermare un volume (<code>-S</code> = <code>--stop</code>):
<pre>
<pre>
# mdadm -S /dev/md0
# mdadm -S /dev/md0
Riga 157: Riga 167:
Fermare tutti gli array:
Fermare tutti gli array:
<pre>
<pre>
# mdadm -S -s
# mdadm -Ss
</pre>
</pre>


Aggiungere un disco all'array md0:
Aggiungere un disco all'array md0 (<code>-a</code> = <code>--add</code>):
<pre>
<pre>
# mdadm /dev/md0 --add /dev/sdh1
# mdadm /dev/md0 -a /dev/sdh1
</pre>  
</pre>  


Rimuovere un disco dall'array md0:
Rimuovere (<code>-r</code> = <code>--remove</code>) un disco già identificato come danneggiato (''failed'') oppure di riserva (''spare'') dall'array '''md0''':
<pre>
# mdadm /dev/md0 -r /dev/sdh1
</pre>
 
Rimuovere un disco attivo dall'array '''md0''':
<pre>
<pre>
# mdadm /dev/md0 --fail /dev/sdc1 --remove /dev/sdc1
# mdadm /dev/md0 --f /dev/sdh1 -r /dev/sdh1
</pre>  
</pre>
In sintesi è prima necessario contrassegnare il disco da rimuovere come danneggiato (<code>-f</code> = <code>--fail</code>) anche se in realtà è perfettamente funzionante.<br/><br/>


Mostrare i metadati dell'array salvati nel disco:
Mostrare i metadati dell'array salvati nel disco '''/dev/sde1''' (<code>-E</code> = <code>--examine</code>):
<pre>
<pre>
# mdadm -E /dev/sdb1
# mdadm -E /dev/sde1
</pre>  
</pre>  


Mostrare i dettagli dell'array md0
Mostrare i dettagli dell'array '''md0''' (<code>-D</code> = <code>--detail</code>)
<pre>
<pre>
# mdadm -D /dev/md0
# mdadm -D /dev/md0
Riga 203: Riga 219:
</pre>
</pre>


= Approfondimenti =
== Approfondimenti ==


=== Debianizzati ===
=== Debianizzati ===
3 084

contributi