Wprowadzenie

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:


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.
\includegraphics[width=0.6\textwidth]{raid0i.eps}
Figure: Kopie lustrzane danych w RAID 1.
\includegraphics[width=0.4\textwidth]{raid1i.eps}
Figure: Macierz RAID 2.
\includegraphics[width=0.9\textwidth]{raid2i.eps}
Figure: Konfiguracja macierzy dysków dla RAID 3 i 4.
\includegraphics[width=0.9\textwidth]{raid3i.eps}
Figure: Konfiguracja macierzy dysków dla RAID 5.
\includegraphics[width=0.85\textwidth]{raid5i.eps}
Figure: Konfiguracja macierzy dysków dla RAID 0+1.
\includegraphics[width=0.85\textwidth]{raid01i.eps}
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