Macierzą dyskową nazywamy zestaw kilku dysków
widzianych przez system operacyjny jako pojedyncze urządzenie
logiczne. W najprostszej konfiguracji -- JBOD (Just Bunch of
Disks), w miarę zapełniania się macierzy, dane zapisywane są na
kolejnych dyskach zestawu. Poza możliwością uzyskania dużej
pojemności pojedynczego urządzenia logicznego, macierz JBOD nie
posiada żadnych przewag nad pojedynczym dyskiem.
Koncepcja macierzy dyskowych RAID (Redundant Array of Inexpensive/Independent
Disks) [1,4,5] została opracowana w latach
osiemdziesiątych jako rozwiązanie problemu słabej wydajności i dużej
zawodności dostępnych wówczas dysków. Dystrybucja i redundancja
zapisywanych danych pomiędzy dyskami oraz stosowanie kodów
korekcyjnych i sum kontrolnych pozwala na zwiększenie niezawodności
i/lub wydajności macierzy. Zdefiniowano pięć podstawowych poziomów
RAID (patrz tab.
). Wyróżnia się także poziomy RAID, będące
kombinacjami lub rozwinięciami podstawowych np. RAID 0+1 (patrz
rys.
), RAID 10, RAID 6, RAID 7, RAID 53.
W macierzach RAID wykorzystywane są następujące metody zapisu danych:
- paskowanie (stripping) -- ciąg danych dzielony jest
na bloki (najczęściej o rozmiarze 4 kB - 128 kB), które rozkładane są
równomiernie pomiędzy zainstalowne dyski (patrz
rys.
).
- kopie lustrzane (mirroring) -- dane zapisywane są
jednocześnie na dwóch/wielu dyskach (patrz rys.
),
- kody korekcyjne Humminga -- metoda korekcji błędów, w której
do każdej porcji danych (zwykle niewielkiej, np. 4 bity, aby zminimalizować
ryzyko wystąpienia więcej niż jednego przekłamania) dodawana jest
informacja pozwalająca skorygować ewentualnie powstały błąd.
- sumy kontrolne XOR -- metoda korekcji polegająca na
wyliczaniu wyniku operacji XOR na ciągu bitów. Jeżeli jeden z
bitów tego ciągu ulegnie przekłamaniu, wykonanie operacji
XOR na pozostałych bitach oraz bicie kontrolnym pozwala
odtworzyć poprawną wartość.
Table:
Podstawowe tryby RAID
RAID 0 |
- dane są paskowane pomiędzy dyski
składowe macierzy (patrz rys.
),
- wysoka wydajność -- równoległy odczyt i zapis na wielu dyskach
- niska niezawodność -- awaria jednego z
dysków oznacza utratę wszystkich danych,
- zastosowania wymagające dużych
przepustowości np. obróbka wideo.
|
|
RAID 1 |
- dane przechowywane są w lustrzanych
kopiach -- mirroring,
- najwyźsza niezawodność,
- wydajność przy odczycie jak pojedynczego
dysku, przy zapisie może być niższa,
- duży koszt budowy macierzy,
- zastosowania wymające wysokiej
niezawodności i bezpieczeństwa np. bankowość.
|
|
RAID 2 |
- dane są paskowane pomiędzy zainstalowane
dyski (patrz rys.
)
- na osobnym dysku zapisywane są kody
korekcyjne Humminga,
- znaczne obciążenie dysku przechowującego kody korekcyjne,
- korekcja błędów w locie,
- relatywnie prosta budowa kontrolera w porównaniu do RAID 3, 4 i 5,
- wysoki koszt budowy -- kody korekcyjne zajmują sporo miejsca,
- nie wykorzystywany w praktyce.
|
|
RAID 3 |
- bloki danych są dzielone na paski i
zapisywane na kolejnych dyskach (patrz
rys.
),
- dla każdego paska generowana jest suma
kontrolna XOR i zapisywana na osobnym dysku,
- minimum trzy dyski potrzebne do implmentacji,
- wysoka przepustowość,
- duże obciążenie dysku przechowującego sumy kontrolne,
- zastosowanie: edycja audio-wideo (duże pliki i znaczne transfery).
|
|
RAID 4 |
- przychodzące bloki danych zapisywane są
na kolejnych dyskach (patrz rys.
),
- suma kontrolna generowana jest dla bloków z
tego samego paska i zapisywana na osobnym dysku,
- duże obciążenie dysku z sumami kontrolnymi -- szybsze zużycie,
- wolna rekonstrukcja macierzy po awarii,
- nie wykorzystywany w praktyce.
|
|
RAID-5 |
- przychodzące bloki danych zapisywane są
na kolejnych dyskach (patrz rys.
),
- suma kontrolna generowana jest dla bloków z
tego samego paska i cyklicznie, rozmieszczana na
kolejnych dyskach,
- najbardziej uniwersalny RAID,
- równomierne obciążenie wszystkich dysków, dobra wydajność,
- skomplikowana budowa kontrolera i wolna rekonstrukcja macierzy po awarii,
- zastosowanie w przetwarzaniu transakcyjnym np. bazy danych.
|
|
|
Figure:
Paskowanie danych w RAID 0.
|
Figure:
Kopie lustrzane danych w RAID 1.
|
Figure:
Konfiguracja macierzy dysków dla RAID 3 i 4.
|
Figure:
Konfiguracja macierzy dysków dla RAID 5.
|
Figure:
Konfiguracja macierzy dysków dla RAID 0+1.
|
O podwyższonej niezawodności macierzy możemy mówić tylko w przypadku
macierzy poziomu RAID 1-5. W macierzy RAID 0, awaria jednego z dysków
oznacza utratę wszystkich danych. Awaria dysku w macierzach
wyższych poziomów powoduje jej przejście w stan zdegenerowany, w
którym sygnalizowana jest konieczność jak najszybszej wymiany
uszkodzonego urządzenia. Po wymianie dysku na nowy następuje
rekonstrukcja macierzy, która może odbywać się w trakcie normalnej
pracy serwera w sposób przezroczysty dla użytkownika.
Macierze RAID mogą być implementowane w systemie komputerowym
przy pomocy specjalnego oprogramowania (tzw. programowa macierz RAID) lub
z zastosowaniem specjalizowanego kontrolera RAID (RAID hardware'owy).
W systemie Linux macierz programowa realizowana jest na poziomie
jądra. Najważniejszą zaletą RAIDu programowego jest jego cena, która
może zamknąć się w koszcie nośników. RAID programowy może być budowany
z wykorzystaniem dowolnego urządzenie blokowego np. NBD (Network Block
Device). Najważniejszą wadą programowej macierzy RAID jest
dodatkowe obciążenie procesora generowane podczas obliczania kodów korekcyjnych
i sum kontrolnych (RAID 2-5), w trakcie zapisu danych, a szczególnie
podczas rekonstrukcji macierzy po awarii.
Powyższej wady nie posiadają macierze RAID zaimplementowane przy
użyciu dedykowango kontrolera sprzętowego. Niezbędne obliczenia wykonywane są
przez specjalizowany procesor. Sprzętowy kontroler RAID może być
wbudowany w płytę główną komputera (np. kontroler HighPoint 370
umieszczany w płytach komputerów klasy PC) lub zrealizowany w postaci karty
rozszerzającej np. PCI. W budowie sprzętowej macierzy RAID brak jest
elastyczności macierzy programowej -- sprzętowa macierz RAID może być
budowana tylko w oparciu o zespoły dysków. Kontrolery RAID mogą być
wyposażone w rozszerzalną pamięć cache np. przy użyciu modułów
DIMM.
Kontrolery RAID wyższej klasy budowane są w oparciu o interfejs
SCSI. Jego najważniejszą zaletą w tym zastosowaniu jest możliwość
podłączenia do 15 urządzeń do jednego kanału, co pozwala realizować
macierze zbudowane z kilku do kilkunastu dysków. Możliwości tej nie
posiadają tańsze kontrolery wykorzystujące interfejs ATA -- w praktyce jeden
kanał obsługuje tylko jeden dysk, a więc złożoność macierzy
ograniczona jest ilością kanałów (zwykle max. 4).
Pawel Topa
2003-12-12