# RAID

Originalment RAID és l'acrònim en anglès de Redundant Array of Independent Disks (matriu redundant de discs independents) tot i que també s'hi refereix a ell com a Redundant Array of Inexpensive Disks. És un conjunt d'unitats físiques de discs durs que pel sistema operatiu actuen com una sola unitat lògica. S'utilitza per emmagatzemar una gran quantitat de dades, tenir tolerància als errors i millorar el rendiment. Les dades es distribueixen de manera entrellaçada a través de les unitats físiques. Hi ha diferents nivells d'entrellaçaments, aquests nivells s'anomenen RAID. Cada RAID té un nivell específic de redundància, rendiment i fiabilitat.

## Funcionament

Les dades es distribueixen de forma entrellaçada en diverses unitats simultàniament. D'aquesta manera la informació es reparteix en diferents discs utilitzant tècniques de detecció d'error. Els diferents tipus d'entrellaçat son:
* Entrellaçat a nivell de tira (stripe): cada fitxer es divideix en blocs anomenats tires que es distribueixen entre els discos. La mida típica de les tiras pot ser de 2 fins a 512Kbytes.
* Entrellaçat a nivell de byte.
* Entrellaçat a nivell de bit.
D'aquesta manera es permet proporcionar redundància, reduir el temps d'accés i/o obtenir major taxa de bits en lectura i escriptura. També ofereix la possibilitat de recuperar el sistema després de l'avaria d'un dels discs. Tanmateix, tots els sistemes RAID suposen una pèrdua de part de la capacitat d'emmagatzemament dels discs per a aconseguir la redundància o emmagatzemar les dades de paritat. Les tècniques de redundància que s'utilitzen són el mirroring, el bit de paritat, els codis de Hamming i els codis de Reed-Solomon.

## Objectius

* Augmentar la integritat de les dades en els discs incorporant tècniques com la redundància de dades i la informació de paritat per tal d'augmentar-ne la fiabilitat.
* Proporcionar alta disponibilitat i funcionament ininterromput millorant la tolerància a fallades i errors. RAID ofereix reparació dinàmica de sectors (Hot Swap) que repara al moment els sectors defectuosos causats per errors de programari.
* Millorar el rendiment i la productivitat: RAID permet a diferents unitats treballar en paral·lel aconseguint rendiments superiors a un sol disc dur o a un grup de discs durs independents.

## Tipus

* Basada en programari: apropiada quan el factor de decisió és el cost inicial però és una solució més cara a mitjà termini. Té l'inconvenient que alenteix el rendiment del sistema.
* Basada en maquinari:
* Basada en host-> Utilitza controladors RAID que es connecten a una ranura PCI del host. Ofereix avantatges importants en relació a RAID basada en programari.
* RAID extern-> solucions independents del sistema operatiu que s'executen en el servidor. Permeten major flexibilitat i permeten crear sistemes d'emmagatzemament de gran capacitat per servidors de gamma alta.

## Implementació

Hi ha 7 configuracions o nivells de RAID estàndards i combinacions d'elles que permeten diferents equilibris entre tolerància a fallades, rendiment i cost. L'elecció de la configuració dependrà en cada cas dels requeriments de seguretat, velocitat, capacitat i cost necessaris per l'usuari.
* RAID0- segmentació o fraccionament sense tolerància a fallades(Striping): segmenta la informació d'entrada repartint-la amb entrellaçat a nivell de tira sense introduir-ne redundància. Les dades es desglossen en petits fragments i es distribueixen entre els discs. Les unitats de disc connectades en paral·lel permeten una transferència simultània de dades, obtenint una gran amplada de banda. Aquest RAID millora el rendiment però no ofereix tolerància a fallades ni cap protecció a les dades. Si un disc falla, tota la informació que emmagatzemava es perd i s'ha de restaurar mitjançant una còpia de seguretat. Aquest sistema és aconsellable en aplicacions d'accés seqüencial a fitxers de grans dimensions, sempre que les dades no siguin crítiques (Exemple: tractament d'imatges, vídeo i àudio).
* RAID1- Utilitza la tècnica de mirroring, consisteix a utilitzar discs addicionals sobre els quals realitza una còpia exacta de les dades. D'aquesta manera té les dades duplicades i s'assegura la integritat i disponibilitat d'aquestes. Les escriptures són més lentes, ja que se n'ha de fer la còpia i és un sistema costos, ja que duplica el cost dels discs. És una alternativa molt adient per sistemes que necessiten alta disponibilitat en cas de fallada.
* RAID2- Distribueix les dades entrellaçades a nivell de bit. El codi d'error s'intercala a través de diversos discs també a nivell de bit, el codi d'error es calcula amb el codi de Hamming. Tot gir del capçal de disc es sincronitza i les dades es distribueixen en bandes de manera que cada bit seqüencial està en una unitat diferent. La paritat de Hamming es calcula a través dels bits corresponents i s'emmagatzema en almenys un disc de paritat. Aquest nivell és només significant a nivell històric, ja que actualment no s'utilitza.
* RAID3- Accés síncron amb disc dedicat a paritat: proporciona segmentació a nivell de byte amb un disc dedicat exclusivament a informació de paritat. La recuperació de dades s'aconsegueix calculant l'OR exclusiva (XOR) de la informació registrada en els altres discos. L'operació d'entrada i sortida al mateix sector de tots els discs es fa en paral·lel. El rendiment de transacció és pobre, ja que tots els discs han d'actuar en conjunt.
* RAID4- Accés independent amb un disc dedicat a paritat: segmentació a nivell de tira. Pot accedir als discs de forma individual. Basa la tolerància a la fallada en la utilització d'un disc dedicat a guardar informació de paritat calculada a partir de les dades guardades en altres discs. El disc de paritat és el coll d'ampolla del sistema. En cas d'avaria la informació es pot reconstruir en temps real amb una operació lògica XOR a nivell de tira.
* RAID5- Accés independent amb paritat distribuïda: proporciona segmentació a nivell de tira. Els blocs de paritat estan distribuïts entre tots els discs. Aquest esquema evita el coll d'ampolla que hi ha a RAID4. Proporciona una velocitat equivalent a un RAID0, es pot accedir als discs de forma independent en paral·lel.
* RAID6- Accés independent amb doble paritat: proporciona segmentació a nivell de tira amb informació de paritat al llarg de tots els discs. Semblant al RAID5, però ofereix un segon esquema de redundància pels diferents discs. Ofereix una alta tolerància a les fallades però comporta un cost superior d'implementació. El segon nivell de redundància està basat en els codis de Reed-Solomon. Permet recuperar informació encara que fallin com a màxim 2 discs.

## Raid nidificat

Els diferents nivells de RAID es poden combinar fent parelles entre ells per aconseguir els avantatges de tots dos en una única arquitectura. Els esquemes comercials de raids multinivell són:
* RAID 0+1 i RAID 1+0
* RAID 0+5 i RAID 5+0
* RAID 1+5 i RAID 5+1
L'orde de RAID A+B és diferent a RAID B+A. El RAID A+B consisteix a crear grups de discs amb RAID A i després tractar aquests com discs individuals per crear un conjunt amb RAID B. Per exemple:
* RAID 0+1: Crea una tira de miralls, és a dir duplica tots els discs que tenies en el RAID0. Intercala el disc amb el seu mirall i així successivament.
* RAID1+0: Crea una tira de discs que prèviament ja tenien mirroring. Per tant, queda una tira de discs i quan aquest acaba es troba la mateixa tira replicada.

## Enllaços externs

* RAID Controller (alemany)
* Does Fake RAID Offer Any Advantage Over Software RAID? – Discussion on superuser.com
* Differences between Hardware RAID, HBAs, and Software RAID – ServeTheHome.com (details more relative advantages and disadvantages)
* Anatomy of a Hardware RAID Controller – ServeTheHome.com (focused on contemporary SAS products)