//Pytanie: "Schematy RAID (Redundant Array of Independent Disks)"//


**RAID (ang. //Redundant Array of Independent Disks//)** - polega na współpracy dwóch lub więcej dysków   twardych w taki sposób, aby zapewnić dodatkowe możliwości, nieosiągalne przy użyciu jednego dysku. RAID używa się w następujących celach:
    * zwiększenie niezawodności (odporność na awarie)
    * przyspieszenie transmisji danych
    * powiększenie przestrzeni dostępnej jako jedna całość

Zapewnienie wysokiej dostępności do dysków wymaga dołączenia tych dysków do oddzielnych kanałów SCSI/IDE lub zastosowanie droższych 2-portowych dysków FC i podłączenia do odpowiedniego kontrolera(ów). Najlepsze efekty można osiągnąć dzięki zastosowaniu specjalnych sprzętowych kontrolerów RAID dołączonych do systemów za pomocą redundantnych magistral (SCSI) lub kanałów komunikacyjnych (Fibre Channel((**Fibre Channel** - jest to standard magistrali szeregowej definiujący wielowarstwową architekturę służącą przesyłaniu danych przez sieć. Fibre Channel definuje atrybuty warstwy fizycznej, transportowej a także obsługę protokołów wyższych warstw takich jak TCP/IP, SCSI-3 i innych. Jest stosowany w sieciach SAN. Niezależnie od nazwy, Fibre Channel pracuje zarówno na "skrętce" jak i światłowodach.))).

===== RAID 0 (striping) =====
{{ :so:raid0.png|:so:raid0.png}} Polega na połączeniu ze sobą dwóch lub więcej dysków fizycznych tak, aby były widziane jako jeden dysk logiczny. Powstała w ten sposób przestrzeń ma rozmiar taki jak suma rozmiarów wszystkich dysków. Dane są przeplecione pomiędzy dyskami. 

__Korzyści:__ 
  * znaczne przyśpieszenie operacji zapisu i odczytu ((Warunkiem uzyskania takiego przyśpieszenia jest operowanie na blokach danych lub sekwencjach bloków danych większych niż pojedynczy blok danych macierzy RAID 0 - ang. //stripe unit size//.)) (ze względu na zrównoleglenie tych operacji na wszystkie dyski w macierzy). 

__Wady:__
  * statystyczne zwiększenie możliwości utraty spójności danych (wystarczy awaria jednego z dysków).
 

===== RAID 1 (mirroring) =====
Polega na replikacji pracy dwóch lub więcej dysków fizycznych. Powstała przestrzeń ma rozmiar pojedynczego nośnika. RAID 1 jest zwany również mirroringiem.{{ :so:raid1.png|:so:raid1.png}}

__Korzyści:__
  * odporność na awarię
  * możliwość zwiększenia prędkości odczytu (dla odczytu sekwencyjneo z kolejnych dysków macierzy (ang. //round-robin//))

__Wady:__
  * zmniejszona szybkość zapisu (zwłaszcza, gdy dyski mają różne charakterystyki)
  * "utrata" pojemności

===== RAID 2 (striping z kodami ECC) =====
Dziwna idea, po której pozostał tylko ślad na papierze... 
RAID 2 z założenia miał chronić dane na dyskach nie dysponujących mechanizmami wykrywania i korekcji błędów - wykorzystywał kody ECC. 

[[RAID 2 - Szczegóły]]

===== RAID 3 (striping z kodami parzystości) =====
Dane składowane są na N-1 dyskach. Ostatni dysk służy do przechowywania sum kontrolnych. Działa jak striping (RAID 0), ale w macierzy jest dodatkowy dysk, na którym zapisywane są kody parzystości obliczane przez specjalny, szybki procesor kontrolera RAID.((Z pozoru taka prosta funkcja logiczna jak XOR nie wymaga szczególnej mocy obliczeniowej – jeśli argumentami operacji są dwa zera lub dwie jedynki, wynik wynosi 0, a jeśli argumenty są różne, wynikiem jest 1. Jednak XOR działa tylko na dwóch argumentach, a kontrolery macierzowe potrafią obsłużyć dziesiątki lub nawet setki napędów. Należy wtedy obliczyć XOR z dwóch pierwszych bitów, następnie uwzględnić bit z trzeciego dysku i ponownie obliczyć XOR, następnie wziąć jeden bit z następnego napędu itd...)){{ :so:raid3.png|:so:raid3.png}}

__Korzyści:__
  * odporność na awarię jednego z dysków
  * zwiększona szybkość odczytu

__Wady:__
  * zmniejszona prędkość zapisu poprzez konieczność liczenia sum kontrolnych (wyeliminowano dzięki użyciu kontrolerów sprzętowych)
  * w przypadku awarii dysku dużo wolniejsze działanie (konieczność odtwarzania bitów na podstawie sum konrolnych)

===== RAID 4 (striping z kodami parzystości) =====
Dość specyficznym rozwiązaniem jest także RAID 4 – to coś pomiędzy poziomem 3 i 5. Dane nie są dzielone na pojedyncze bity (jak w RAID 3), __lecz na paski__ (jak w RAID 5), trafiają na kolejne dyski, a na wydzielonym dysku przechowywane są kody parzystości obliczane za pomocą funkcji XOR. Pozwala to osiągnąć nieco inne właściwości niż w przypadku RAID 3 – aby sięgnąć po określony blok danych, nie trzeba pobrać jego poszczególnych fragmentów ze wszystkich dysków macierzy, bo jest on zapisany tylko na jednym dysku. Dzięki temu __w operacjach związanych z obsługą baz danych RAID 4 spisuje się bardzo dobrze__ (przynajmniej tak wynika z teorii), czego nie można powiedzieć o operacjach sekwencyjnego zapisu i odczytu danych. 

===== RAID 5 (striping z kodami parzystości na wszystkich dyskach) =====
{{ :so:raid5.png|:so:raid5.png}}
Poszczególne bloki danych są rozmieszczane na wielu dyskach macierzy (minimum 3 dyski), na ich podstawie kontroler oblicza kody parzystości i również zapisuje je na różnych napędach.

__Korzyści:__
  * odporność na awarie jednego dysku - odzyskanie zawartości macierzy jest możliwe dzięki kodom parzystości
  * zwiększona szybkość odczytu

__Wady:__
  * Stosunkowo wolny zapis (konieczność liczenia sum kontrolnych)
  * Odbudowa macierzy po wymianie dysku jest kosztowna obliczeniowo

===== RAID 6 =====
Rozbudowany o dodatkowe sumy kotrolne RAID5. 
Bardzo kosztowna w implementacji, ale dająca bardzo wysokie bezpieczeństwo.

__Korzyści:__
    * odporność na awarię wielu dysków (minimum 2)
    * szybkość pracy większa niż szybkość pojedynczego dysku
    * ekstremalnie wysokie bezpieczeństwo.

===== RAID 0+1 =====
Macierz realizowana jako RAID 1, którego elementami są macierze RAID 0. Macierz taka posiada zarówno zalety macierzy RAID 0 - szybkość w operacjach zapisu i odczytu - jak i macierzy RAID 1 - zabezpieczenie danych w przypadku awarii pojedynczego dysku. Pojedyncza awaria dysku powoduje, że całość staje się w praktyce RAID 0.

===== RAID 1+0  =====
Nazywana także RAID 10. Macierz realizowana jako RAID 0, którego elementami są macierze RAID 1. W porównaniu do swojego poprzednika (RAID 0+1) realizuje tę samą koncepcję połączenia zalet RAID 0 - szybkość - i RAID 1 - bezpieczeństwo - lecz w odmienny sposób. Tworzony jest duży stripe małych mirrorów, dzięki czemu podczas wymiany uszkodzonego dysku odbudowywany jest tylko fragment całej macierzy.

===== RAID S (Parity RAID) =====
Specyficznym rodzajem macierzy RAID jest rozwiązanie firmy EMC o nazwie RAID S lub też Parity RAID, wykorzystywane w macierzach Symmetrix, __zoptymalizowane do dużych, sieciowych pamięci masowych__. W tym przypadku kolejne bloki danych są zapisywane na tym samym dysku fizycznym, a więc z punktu widzenia jednego użytkownika nie jest to w ogóle macierz. Jednak poszczególne dyski logiczne (wolumeny) są ulokowane na różnych dyskach twardych, przez co dla całej sieci urządzenie zachowuje się jak macierz. Istnieje też duże podobieństwo do RAID 4, ponieważ do przechowywania kodów parzystości służy wydzielony dysk.

===== Linki zewnętrzne =====
  * [[http://pclab.pl/art16652-1.html]] --> RAID w pigułce (Artykuł, 8 stron)