[gl-como] Server e RAID (?)

Pirla the.pirla@flashnet.it
Mer 8 Mar 2006 21:41:09 CET


Il giorno mer, 08/03/2006 alle 13.50 +0100, Claudio Marforio ha scritto:
> Dato che sei stato molto chiaro e ho capito parecchie cose con questo riassunto, 
> potresti fare lo stesso per il raid5? Ovvero come viene riconosciuto e quali 
> sono i possibili scenari alla perdita di un disco?
> 
> Grazie mille, dovresti fare l'insegnante ;)
L'ho fatto... per poco tempo, ma mi divertiva.

Sarò molto breve a causa del poco tempo a disposizione.

Il raid 5 fondamentalmente è molto molto simile al raid 0 per quanto
riguarda il posizionamento dei dati sui dischi.

Esiste uno stripe size (che è formato dalla somma degli stripe element
size).
Gli stripe element size sono praticamente la quantità di dati che non
deve essere scritta su dischi diversi (o meglio la dimensione del blocco
di dati per ogni disco che compone il raid).

Quindi ogni scrittura avviene sul primo disco fino a che non viene
raggiunta la dimensione dello stripe element size, e successivamente si
passa al disco successivo.

Per questo motivo il raid 5 è abbastanza performante per scritture e
letture molto randomiche e non troppo grandi. Perch la maggior parte dei
controller che lo implementano è in grado di accedere contemporaneamente
a più meccaniche.

Per quanto riguarda la protezione, la cosa si complica un po'.

Il principio di calcolo della parità segue la formula XOR del contenuto
dei vari blocchi di ogni disco che compone il raid meno uno.
Quindi il blocco di parità viene calcolato e poi scritto.

Dove viene scritto è ancora più complicato.

La parità viene spalmata su tutti i dischi che compongono il raid. In
pratica non esiste un disco che contiene solo dati o un disco che
contiene solo parità.

Questo per trarre ulteriore vantaggio dalla parallelizzazione degli
accessi.
Tecnicamente infatti non sarebbe necessario leggere la parità se fai
solo accessi in lettura.

Naturalmente il calcolo della parità è dispendioso perché anche se tu
vai a scrivere un blocco più piccolo dell'element size il controller
deve leggere tutti i blocchi non modificati e calcolare la parità col
blocco modificato. Dopo di che scrivere il blocco modificato e il blocco
di parità.

Quindi in teoria per scrivere un blocco in realtà servirebbero 4 letture
e 2 scritture.

Tuttavia, per la semplicità del calcolo della parità e per via dei
controller molto intelligenti che hanno una notevole quantità di cache a
bordo, questo fenomeno viene alleviato da una serie di algoritmi
ottimizzati.

E' questo il motivo per cui alcuni storage implementano per esempio il
raid 5 3+1 mentre altri dicono che il radi 5 ottimo è quello formato da
5 dischi.

Nessuno ha ragione in assoluto, ma dipende dai meccanismi di accesso
parallelo ai dischi e dal modo di implementazione dell'algoritmo.

-- 
Ciao
        Pirla

Per rispondere in E-mail the (punto) pirla (chiocciola) flashnet.it
*** un bacio ai pupi ***

---> Linux user since yesterday <---
--->     Linux User #389536     <---



Maggiori informazioni sulla lista gl-como