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

nessun oggetto della modifica
Nessun oggetto della modifica
Riga 23: Riga 23:


=== RAID Hardware e Software ===
=== RAID Hardware e Software ===
Esistono due modi per creare e gestire un volume raid: attraverso la mediazione di controller hardware dedicati oppure via software.<br />
Esistono due modi per creare e gestire un volume raid: attraverso la mediazione di controller hardware dedicati oppure via software.<br />
* La prima soluzione è più costosa e richiede attenzione nello scegliere prodotti che siano effettivamente compatibili con linux, ma comporta un minor consumo di risorse macchina (per esempio un ridotto impegno della CPU).<br />
* La prima soluzione è più costosa e richiede attenzione nello scegliere prodotti che siano effettivamente compatibili con linux, ma comporta un minor consumo di risorse macchina (per esempio un ridotto impegno della CPU).<br />
Riga 41: Riga 40:
<pre># aptitude install mdadm</pre>
<pre># aptitude install mdadm</pre>


=== Utilizzo ===
== Principali comandi ==
 
{{Box|Nota|È possibile mettere in raid sia interi dischi che singole partizioni.}}
 
{{Warningbox|<code>mdadm</code> richiede che l'utente abbia già provveduto a creare le partizioni da mettere in raid. Strumenti come ''fdisk'', ''parted'', ecc. vanno tutti bene.}}
 
=== Creare nuovi volumi ===
* Creare un volume composto da due partizioni attive (<code>-C</code> = <code>--create</code>)
<pre>
# mdadm -C /dev/md0 -l 1 -n 2 /dev/sde1 /dev/sde1
</pre>
* Creare un volume degradato (cioè composto da una sola partizione attiva)
<pre>
# mdadm -C /dev/md0 -l 1 -n 2 /dev/sde1 missing
</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/>
Un volume composto da un solo elemento attivo è inutile, generalmente questa soluzione viene adottata perché sulla seconda partizione che si intende usare sono presenti dati che si vuole includere nel volume raid. In sintesi prima si crea un volume raid composto da un solo disco su cui copiare i dati di interesse e poi si aggiunge la seconda partizione al volume appena creato (il punto è che aggiungere una partizione ad un volume raid comporta la perdita di tutti i dati che contiene).
 
=== Avviare i volumi ===
* Avviare un volume quando NON esiste il file mdadm.conf (<code>-A</code> = <code>--assemble</code>):
<pre>
# mdadm -A /dev/md0
</pre>
* Avviare un volume quando ESISTE il file mdadm.conf (<code>-As</code> = <code>--assemble --scan</code>):
<pre>
# mdadm -As /dev/md0
</pre>
 
=== Ottenere informazioni ===
* Mostrare i dettagli dell'array '''md0''' (<code>-D</code> = <code>--detail</code>)
<pre>
# mdadm -D /dev/md0
</pre>
* Mostrare i metadati dell'array salvati nella partizione '''/dev/sde1''' (<code>-E</code> = <code>--examine</code>):
<pre>
# mdadm -E /dev/sde1
</pre>
* Monitorare il volume '''md0''' (<code>-F</code> = <code>--follow</code> = <code>--monitor</code>) ogni 5 minuti (<code>-d</code> = <code>--delay</code>):
<pre>
# mdadm -F -d=300 /dev/md0
</pre>
 
=== Aggiungere una nuova partizione a volumi esistenti ===
* Aggiungere la partizione <code>/dev/sdh1</code> all'array '''md0''' (<code>-a</code> = <code>--add</code>):
<pre>
# mdadm /dev/md0 -a /dev/sdh1
</pre>
 
=== Rimuovere una partizione da volumi esistenti ===
* 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 una partizione attiva dall'array '''md0''' (<code>-f</code> = <code>--fail</code>):
<pre>
# mdadm /dev/md0 -f /dev/sdh1 -r /dev/sdh1
</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/>
 
=== Fermare volumi ===
* Fermare un volume (<code>-S</code> = <code>--stop</code>):
<pre>
# mdadm -S /dev/md0
</pre>
* Fermare tutti gli array:
<pre>
# mdadm -Ss
</pre>
 
=== Sincronizzare nuovamente un volume ===
* Ottenere informazioni sugli array in esecuzione:
<pre>
# cat /proc/mdstat
</pre>
 
* Risincronizzare un array. Se il comando precedente restituisce:
<pre>
md0 : active (auto-read-only) raid1 sda1[0] sdb1[1]
2000000 blocks [2/2] [UU]
resync=PENDING</pre>
 
occorre dare il comando:
<pre>
# mdadm --readwrite /dev/mdX
</pre>e la sincronizzazione ripartirà:<pre>
[===>...] resync = 16.2% (324736/2000000) finish=0.6min speed=46390K/sec
</pre>
 
== Esempi ==
 
=== Creazione di un volume raid che include due partizioni ===


==== 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''.}}
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:
Riga 61: Riga 147:
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 del volume RAID con ''mdadm'' ====


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:
Riga 118: Riga 204:
<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 144: Riga 230:
# blkdiscard /dev/sdY</pre>
# blkdiscard /dev/sdY</pre>
Da notare che questo comando non elimina realmente i dati, ma li rende inaccessibili facendo semplicemente apparire i dischi come vuoti (non è quindi una cancellazione sicura). Ad entrambi i precedenti comandi deve essere aggiutna l'opzione <code>-f</code> altrimenti il sistema si limiterà a stampare a video un messaggio di avvertimento relativo alla perdita dei dati sui dischi specificati.
Da notare che questo comando non elimina realmente i dati, ma li rende inaccessibili facendo semplicemente apparire i dischi come vuoti (non è quindi una cancellazione sicura). Ad entrambi i precedenti comandi deve essere aggiutna l'opzione <code>-f</code> altrimenti il sistema si limiterà a stampare a video un messaggio di avvertimento relativo alla perdita dei dati sui dischi specificati.
== Principali comandi ==
* Creare un volume degradato (cioè composto da un solo disco attivo)
<pre>
# mdadm -C /dev/md0 -l 1 -n 2 /dev/sde1 missing
</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 volume quando NON esiste il file mdadm.conf (<code>-A</code> = <code>--assemble</code>):
<pre>
# mdadm -A /dev/md0
</pre>
* Avviare un volume quando ESISTE il file mdadm.conf (<code>-As</code> = <code>--assemble --scan</code>):
<pre>
# mdadm -As /dev/md0
</pre>
* Mostrare i dettagli dell'array '''md0''' (<code>-D</code> = <code>--detail</code>)
<pre>
# mdadm -D /dev/md0
</pre>
* Mostrare i metadati dell'array salvati nella partizione '''/dev/sde1''' (<code>-E</code> = <code>--examine</code>):
<pre>
# mdadm -E /dev/sde1
</pre>
* Monitorare il volume '''md0''' (<code>-F</code> = <code>--follow</code> = <code>--monitor</code>) ogni 5 minuti (<code>-d</code> = <code>--delay</code>):
<pre>
# mdadm -F -d=300 /dev/md0
</pre>
* Aggiungere la partizione <code>/dev/sdh1</code> all'array '''md0''' (<code>-a</code> = <code>--add</code>):
<pre>
# mdadm /dev/md0 -a /dev/sdh1
</pre>
* 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''' (<code>-f</code> = <code>--fail</code>):
<pre>
# mdadm /dev/md0 -f /dev/sdh1 -r /dev/sdh1
</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/>
* Fermare un volume (<code>-S</code> = <code>--stop</code>):
<pre>
# mdadm -S /dev/md0
</pre>
* Fermare tutti gli array:
<pre>
# mdadm -Ss
</pre>
* Ottenere informazioni sugli array in esecuzione:
<pre>
# cat /proc/mdstat
</pre>
* Risincronizzare un array. Se il comando precedente restituisce:
<pre>
md0 : active (auto-read-only) raid1 sda1[0] sdb1[1]
2000000 blocks [2/2] [UU]
resync=PENDING</pre>
occorre dare il comando:
<pre>
# mdadm --readwrite /dev/mdX
</pre>e la sincronizzazione ripartirà:<pre>
[===>...] resync = 16.2% (324736/2000000) finish=0.6min speed=46390K/sec
</pre>


== Approfondimenti ==
== Approfondimenti ==
3 084

contributi