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

(8 versioni intermedie di uno stesso utente non sono mostrate)
Riga 17: Riga 17:
* RAID '''10''' (non dieci, ma 1+0), garantisce sul piano teorico un incremento di prestazioni pari a quello di un raid 0 e l'affidabilità di un raid 1. Richiede un minimo di quattro dischi. Scegliere sempre questa modalità al posto di 0+1.
* RAID '''10''' (non dieci, ma 1+0), garantisce sul piano teorico un incremento di prestazioni pari a quello di un raid 0 e l'affidabilità di un raid 1. Richiede un minimo di quattro dischi. Scegliere sempre questa modalità al posto di 0+1.
{{Box|Nota|
{{Box|Nota|
* Le partizioni che andranno a formare un certo volume raid '''DEVONO''' avere tutte la stessa dimensione.
* Le partizioni o i dischi che andranno a formare un certo volume raid '''DEVONO''' avere tutti la stessa dimensione, pena lo spreco di spazio nel disco/partizione di dimensioni maggiori.
* In un ambiente domestico e/o soho generalmente l'incremento di prestazioni dovute ad un raid 0 e/o 10 risulta apprezzabile solo quando si hanno a che fare con grossi file
* In un ambiente domestico e/o soho generalmente l'incremento di prestazioni dovute ad un raid 0 e/o 10 risulta apprezzabile solo quando si hanno a che fare con grossi file
}}
}}
Per chi intendesse approfondire maggiormente l'argomento può iniziare consultando [[#Approfondimenti | wikipedia]].<br />
Per chi intendesse approfondire maggiormente l'argomento può iniziare consultando [[#Approfondimenti | wikipedia]].<br />


=== RAID Hardware, Software e Fake ===
=== RAID Hardware e Software ===


Esistono due modi per creare e gestire un volume raid: attraverso la mediazione di controller hardware dedicati oppure via software direttamente dal sistema operativo.<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 />
La seconda non richiede hardware dedicato e quindi non presenta costi aggiuntivi, ma come già detto comporta un maggior consumo di risorse macchina. In debian il programma deputato a creare e gestire i volumi raid si chiama ''mdadm''.<br/>
* La seconda non richiede hardware dedicato e quindi non presenta costi aggiuntivi, ma come già detto comporta un maggior consumo di risorse macchina. Ci sono due sottocategorie: raid software puro e ''fake raid''.
Esiste una terza via, molto simile come concetto al raid software, ovvero i "fake raid" (falsi raid hardware). Tipico esempio di questa classe sono i controller RAID integrati nelle schede madri che non essendo di norma veri controller hardware si devono appoggiare completamente alla capacità di calcolo della macchina proprio come un raid software, garantendo quindi gli stessi (s)vantaggi prestazionali. Data questa premessa è pratica comune ignorare in linux eventuali controller integrati ed implementare tutto via software evitando in tal modo possibili problemi di compatibilità.<br/>
** In debian il programma deputato a creare e gestire i volumi raid software puri si chiama ''mdadm''.<br/>
** Il "fake raid", ovvero falso raid hardware, è tipicamente un controller RAID integrato nella scheda madre che per funzionare deve appoggiarsi completamente alla capacità di calcolo della macchina stessa, proprio come un raid software puro. Unisce quindi tipicamente gli svantaggi di un raid software puro (consumo risorse macchina) a quelli di un raid hardware (driver proprietari), pertanto in linux è pratica comune ignorare eventuali controller integrati ed implementare tutto via software evitando in tal modo possibili problemi di compatibilità.
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.


Riga 146: Riga 147:
== Principali comandi ==
== Principali comandi ==


Creare un volume degradato (cioè composto da un solo disco attivo)
* Creare un volume degradato (cioè composto da un solo disco attivo)
<pre>
<pre>
# mdadm -C /dev/md0 -l 1 -n 2 /dev/sde1 missing
# mdadm -C /dev/md0 -l 1 -n 2 /dev/sde1 missing
Riga 152: Riga 153:
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/>
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>):
* 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>


Avviare un volume quando ESISTE il file mdadm.conf (<code>-As</code> = <code>--assemble --scan</code>):
* Avviare un volume quando ESISTE il file mdadm.conf (<code>-As</code> = <code>--assemble --scan</code>):
<pre>
<pre>
# mdadm -As /dev/md0
# mdadm -As /dev/md0
</pre>
</pre>


Fermare un volume (<code>-S</code> = <code>--stop</code>):
* Mostrare i dettagli dell'array '''md0''' (<code>-D</code> = <code>--detail</code>)
<pre>
<pre>
# mdadm -S /dev/md0
# mdadm -D /dev/md0
</pre>
</pre>
Fermare tutti gli array:
 
* Mostrare i metadati dell'array salvati nella partizione '''/dev/sde1''' (<code>-E</code> = <code>--examine</code>):
<pre>
<pre>
# mdadm -Ss
# mdadm -E /dev/sde1
</pre>
</pre>


Aggiungere un disco all'array md0 (<code>-a</code> = <code>--add</code>):
* 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>
<pre>
# mdadm /dev/md0 -a /dev/sdh1
# mdadm /dev/md0 -a /dev/sdh1
</pre>  
</pre>


Rimuovere (<code>-r</code> = <code>--remove</code>) un disco già identificato come danneggiato (''failed'') oppure di riserva (''spare'') 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>
<pre>
# mdadm /dev/md0 -r /dev/sdh1
# mdadm /dev/md0 -r /dev/sdh1
</pre>
</pre>


Rimuovere un disco attivo dall'array '''md0''':
* Rimuovere un disco attivo dall'array '''md0''' (<code>-f</code> = <code>--fail</code>):
<pre>
<pre>
# mdadm /dev/md0 --f /dev/sdh1 -r /dev/sdh1
# 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/>
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 '''/dev/sde1''' (<code>-E</code> = <code>--examine</code>):
* Fermare un volume (<code>-S</code> = <code>--stop</code>):
<pre>
<pre>
# mdadm -E /dev/sde1
# mdadm -S /dev/md0
</pre>  
</pre>


Mostrare i dettagli dell'array '''md0''' (<code>-D</code> = <code>--detail</code>)
* Fermare tutti gli array:
<pre>
<pre>
# mdadm -D /dev/md0
# mdadm -Ss
</pre>
</pre>
 
Monitorare un array:
<pre>
# mdadm --monitor --delay=300 /dev/md0
</pre>  


Ottenere informazioni sugli array in esecuzione:
* Ottenere informazioni sugli array in esecuzione:
<pre>
<pre>
# cat /proc/mdstat
# cat /proc/mdstat
</pre>
</pre>


Risincronizzare un array. Se il comando precedente restituisce:
* Risincronizzare un array. Se il comando precedente restituisce:
<pre>
<pre>
md0 : active (auto-read-only) raid1 sda1[0] sdb1[1]
md0 : active (auto-read-only) raid1 sda1[0] sdb1[1]
3 084

contributi