RAID – Rodzaje macierzy

RAID (Redundant Array of Independent Disks – nadmiarowa macierz niezależnych dysków) to system pozwalający na współpracę kilku dysków twardych w celu realizacji zadań niemożliwych do wykonania dla pojedynczego urządzenia. Rozwiązanie tego typu stosuje się w celu zwiększenia wydajności transmisji danych, powiększenia przestrzeni dyskowej jak również wzrostu odporności na awarie i utraty danych.

W niniejszym wpisie zajmiemy się analizą systemu głównie w kontekście ostatniego z zadań. Nie jest to rozwiązanie zabezpieczające dane w 100. procentach – o jednoczesnej awarii kilku dysków macierzy pisaliśmy w jednym z poprzednich wpisów. Niemniej jednak warto poświęcić nieco miejsca tej właśnie metodzie ochrony danych.

Wiele stosowanych rozwiązań (opartych o backup czy obraz dysku) pozwalających odzyskać utracone dane umożliwia ich odtworzenie w wymiarze ostatniej wykonanej kopii zapasowej (bądź obrazu dysku) – niemożliwa jest realizacja takich procedur na bieżąco – część danych wprowadzona od ostatniej operacji zostaje utracona. Rozwiązaniem pozwalającym niejako na tworzenie „kopii zapasowej” w czasie rzeczywistym jest macierz dyskowa RAID. Istotne jest jednak aby nie mylić macierzy RAID z kopią bezpieczeństwa sensu stricto. RAID nie zastępuje backup’u – w przypadku fizycznego uszkodzenia wielu dysków macierzy jedynym ratunkiem jest posiadanie kopii w bezpiecznym, oddzielnym miejscu, najlepiej na zdalnym serwerze. Macierze z nadmiarowością, czyli zaczynające się od poziomu 1, zabezpieczają od utraty danych w wyniku uszkodzenia dysku. Nie chronią jednak od uszkodzeń wywołanych przez wirusa, przypadkowego skasowania plików czy pojawiających się błędów zapisu. W sytuacjach tego typu wykonywanie kopii bezpieczeństwa ciągle okazuje się niezbędne.

Poziomy i implementacje

Dyski w macierzy współpracują tak jakby stanowiły jedno urządzenie – pliki z danymi zapisywane są na wszystkich dyskach równocześnie. Dyski znajdują się w jednym miejscu i mają wspólne zasilanie – są podłączone do jednego komputera (bądź urządzenia macierzy dyskowej) będąc przez niego widziane jako jeden dysk. Istnieje kilka różnych rodzajów macierzy dyskowej – patrząc pod kątem bezpieczeństwa danych istotne są tylko niektóre z nich.

Rodzaje macierzy klasyfikujemy określając mianem poziomów i oznaczamy liczbą całkowitą. Każdy z poziomów stanowi inny rodzaj komplementacji między dwoma podstawowymi zadaniami RAID: bezpieczeństwem danych i wydajnością (prędkością zapisu/odczytu). Najpopularniejsze poziomy macierzy to 0, 1, 5, 10.

Obok klasyfikacji ze względu na poziomy istnieje także podział według implementacji: programowa, sprzętowa i oparta o firmware (sterowniki). RAID programowy wspierany jest przez większość systemów operacyjnych. Najważniejsze cechy tego typu implementacji to: standardowy format zapisu pozwalający na przechodzenie pomiędzy różnymi systemami wspierającymi dany standard, uniezależnienie od zastosowanego sprzętu i możliwość mieszania nośników (np. USB, SATA) w obrębie danej macierzy. Do minusów tego typu rozwiązań zaliczyć można spadek wydajności oraz niemożność umieszczenia partycji systemowej wewnątrz macierzy. Tę ostatnią wadę eliminują implementacje oparte na sprzętowym kontrolerze. Taki RAID wszelkie działania wykonuje w oparciu o dedykowany procesor, co znacznie poprawia jego wydajność. Niekiedy posiada także własną pamięć wyposażoną w baterię chroniącą przed utratą zapisywanych danych w wyniku awarii zasilania. Wadą jest w przypadku takiego rozwiązania brak zunifikowanego formatu zapisu danych – różnią się zarówno w kontekście producentów, jak i poszczególnych modeli – co znacznie utrudnia odzyskiwanie danych w przypadku awarii kontrolera. Trzecia forma implementacji polega na połączeniu wymienionych wyżej rozwiązań. Są to różnego rodzaju kontrolery obecne na płytach głównych i dedykowanych kartach rozszerzeń. Nie posiadają one jednak własnego procesora – wszystkie obliczenia wykonuje procesor główny urządzenia. Układy te wyposażone są w oprogramowanie (firmware) odpowiedzialne za zarządzanie macierzą, zaś system operacyjny musi posiadać odpowiednie sterowniki aby możliwa była współpraca z kontrolerem.

Przegląd różnych poziomów macierzy rozpoczniemy od stopnia 0, który jest przykładem macierzy niebędącej odporną na awarie, jednak stanowi dobre wprowadzenie do omawianej problematyki.

RAID 0 (wolumin rozłożony) jest macierzą składającą się minimalnie z dwóch dysków. Zapis danych odbywa się poprzez podzielenie ich na tzw „paski” (stripes) i lokowanie przemienne na wszystkich wchodzących w skład macierzy dyskach. Zaletą tego typu rozwiązania jest poprawa wydajności zapisu i odczytu – prędkość całego układu równa jest iloczynowi najwolniejszego z dysków i liczby dysków wchodzących w skład macierzy. I jest to jedyna zaleta, którą posiada RAID 0. Ograniczeniem jest konieczność stosowania dysków tej samej pojemności – przy różnych pojemnościach obszar zapisu całej macierzy równy jest iloczynowi najmniejszego z dysków i ilości dysków w macierzy. Jeszcze poważniejszym ograniczeniem jest wzrost ryzyka utraty danych (ryzyko zwiększa się wraz ze wzrostem liczby dysków w macierzy) – awaria jednego z dysków powoduje utratę wszystkich informacji. Z tego więc powodu macierz taka nie brana jest pod uwagę podczas tworzenia systemów zabezpieczających dane. Dodatkowo, zapis informacji w formie pasków znacznie utrudnia odzysk danych w przypadku ewentualnej awarii. Jasne jest zatem, iż RAID 0 znajduje zastosowanie tam gdzie liczy się nie bezpieczeństwo danych a wydajność, zaś kwestie zabezpieczenia informacji realizowane są dzięki możliwości stosowania kopii zapasowych.

RAID 1 (lustrzany) – macierz zbudowana przynajmniej z dwóch dysków. Wszystkie dane zapisywane są równolegle na wszystkich dyskach – każdy z nich posiada niezależna kopię danych. Jeśli zastosowane dyski będą posiadały różną pojemność – dostępna przestrzeń zapisu będzie równa pojemności najmniejszego z dysków. Prędkość zapisu i odczytu informacji zależeć będzie od zastosowanej metody:

  • zapis sekwencyjny na kolejne dyski – czas trwania operacji równy będzie sumie czasów zapisu na kolejne dyski.
  • zapis równoległy – czas trwania operacji równy będzie czasowi zapisu na wolniejszym dysku.
  • odczyt sekwencyjny z kolejnych dysków – możliwe osiągnięcie prędkości odczytu jak w przypadku RAID 0.
  • odczyt ze wskazanych dysków – stosowany jedynie w przypadku znacznych różnic w prędkości odczytu z poszczególnych dysków.

Zaletą tej macierzy jest teoretycznie geometryczny wzrost niezawodności wraz ze wzrostem liczby dysków – ryzyko awarii dwóch dysków jest o połowę mniejsze od ryzyka wystąpienia awarii jednego z dysków. Jest to jednak teoria. W praktyce – m.in. z powodu użycia takich samych dysków, pracujących później w podobnych warunkach – ryzyko uszkodzenia macierzy sprowadza się do ryzyka uszkodzenia ostatniego z działających dysków w czasie, który upłynie od wykrycia awarii przedostatniego sprawnego dysku do zakończenia rekonstrukcji macierzy.

RAID 5 – macierz zbudowana przynajmniej z trzech dysków. Zapis zorganizowany jest tu w sposób odmienny od omawianego wyżej RAID 1. W tym poziomie zastosowano tzw. zapis paskowy – dane dzielone są na paski i dodatkowo obliczane są tzw. sumy parzystości. Dane rejestrowane są na N dyskach w formie N-1 pasków i jednego paska parzystości. Dane parzystości, pozwalające na odtworzenie zawartości dysków, zostają rozproszone po wszystkich dyskach macierzy, przy czym wyliczane są z odpowiedniego fragmentu danych rozlokowanych na pozostałych dyskach. Przy macierzy liczącej N dysków jej pojemność wynosi N-1 dysków. Łącząc dyski różnych pojemności, przestrzeń danych jest równa najmniejszemu z dysków razy N-1. RAID ten posiada mały współczynnik straty pojemności – przy 3. dyskach traci pojemność jednego. Dla porównania 4. dyskowy RAID 1 traci pojemność aż trzech dysków, RAID 5 wciąż tylko jednego. Oczywiście odbywa się to kosztem odporności na awarię – RAID 1 będzie odporny na awarię aż trzech dysków, RAID 5 tylko jednego. Rozwiązanie to jest znacznie bardziej kosztowne od omawianego RAID 1, jednak w macierzach o dużej pojemności ma ono tę zaletę, iż pozwala na zwiększenie prędkości odczytu przy nieznacznym spadku prędkości zapisu, co jest związane z koniecznością obliczania sum kontrolnych (może być wyeliminowane dzięki zastosowaniu sprzętowego kontrolera RAID 5).

Poziom 5 jest bezpieczny dla danych – w przypadku awarii jednego dysku system jest w stanie odbudować informacje tam przechowywane poprzez wykorzystanie sum kontrolnych, choć odbywa się to kosztem zmniejszenia wydajności macierzy. Własność ta często określana jest Trybem Tymczasowej Rekonstrukcji Danych – system powiadamia o awarii ale dane nadal mogą być odczytywane i zapisywane.

W tym miejscu można wspomnieć o tzw. Hot – Spares czyli dodatkowych dyskach wykorzystywanych przez RAID sprzętowy i programowy. Nośniki takie znajdują się w obrębie systemu, jednak nie funkcjonują w charakterze przestrzeni zapisu do momentu awarii jednego z dysków aktywnych, zastępując go. Kontroler może wtedy szybko odbudować uszkodzoną macierz.

RAID 5E i 5EE to macierze poziomu 5. rozbudowane o dodatkowy dysk hot-spare. Teoretycznie są one odporne na awarię aż dwóch dysków. W praktyce jednak występuje pewne ograniczenie. Dyski mogą ulec awarii jeden po drugim jednak z zachowanym odstępem czasu potrzebnym na tak zwaną kompresję macierzy – w przypadku awarii dysku w macierzach 5E i 5EE wbudowany dysk zapasowy wykorzystany jest w celu kompresji macierzy do zwykłej macierzy RAID 5 i dopiero wtedy awarii ulec może drugi dysk, na którą to awarię odporna jest macierz poziomu piątego.

Kolejnym interesującym ze względu na bezpieczeństwo danych poziomem macierzy jest RAID 6. RAID 6 jest rozszerzoną wersją macierzy RAID 5 posiadającą w stosunku do niższego poziomu zdublowane bloki parzystości. Macierz ta wymaga do pracy minimum czterech dysków, z czego dwa wykorzystywane są do zapisu danych parzystości. Z punktu widzenia ochrony danych rozwiązanie to jest interesujące ponieważ system jest odporny na awarię aż dwóch dysków jednocześnie. Dodatkowo macierz jest w stanie wytrzymać awarię drugiego dysku podczas rekonstrukcji systemu po awarii pierwszego. Jest ona zatem znacznie bezpieczniejsza od macierzy RAID 5. Poziom ryzyka (prawdopodobieństwo) związany z możliwością wystąpienia awarii macierzy tego stopnia wyznacza wzór: (N-1)(N-2)R3, gdzie N jest liczbą dysków a R prawdopodobieństwem wystąpienia awarii pojedynczego dysku macierzy.

RAID 10 jest przedstawicielem macierzy wielopoziomowych (hybrydowych) tworzących jeden nieograniczony dysk logiczny. W tym wypadku poziom ten jest połączeniem RAID 0, przyspieszającej pracę układu, z macierzą RAID 1 realizującą postulat bezpieczeństwa, przy czym RAID 0 jest macierzą nadrzędną, grupującą macierze RAID 1. Kombinacja taka zapewnia najmniejszą liczbę dysków do odtworzenia w konsekwencji awarii jednego z dysków w macierzy – awaria dysku wiąże się z wymianą i odtworzeniem tylko tego dysku, który uległ awarii (w przeciwieństwie do macierzy odwrotnej RAID 01 – RAID 1 grupuje macierze RAID 0 – gdzie należy dokonać odbudowy danych w całej macierzy). RAID 10 przewiduje odporność na awarię wszystkich poza jednym dyskiem macierzy z każdej macierzy RAID 1 wchodzącej w skład układu (przy dwóch dyskach w macierzy awarii może ulec połowa dysków). Jeśli do takiej awarii dojdzie, prawdopodobieństwo defektu tak zastanego układu jest równe prawdopodobieństwu awarii pojedynczego dysku.

RAID 1E jest układem dwóch macierzy: RAID 0 i RAID 1. dane rozpisywane są na paski analogicznie do RAID 0 i rozlokowane na wszystkich dyskach macierzy. Na każdy blok pasków przypada ich kopia (jak w RAID 1), która zapisywana jest z przesunięciem. Układ ten wymaga minimum trzech dysków, a przy ilości parzystej rozkład pasków na dyskach jest tożsamy z RAID 10. Niestety odporność na awarię tych układów jest mniejsza niż RAID 1 – RAID 1E zbudowany z trzech dysków jest odporny na awarie jednego z nich, zaś odpowiedni RAID 1 dwóch. Ilość dysków, która może ulec awarii w przypadku konfiguracji nieparzystej wyraża się wzorem (N-1)/2, gdzie N jest liczba dysków w macierzy. Niestety dyski, które ulegną awarii nie mogą ze sobą sąsiadować – warunek ten zmniejsza liczbę możliwych kombinacji wystąpienia awarii dysków nie wyłączających działania całej macierzy. W przypadku zastosowaniu parzystej liczby dysków odporność na awarię dorównuje macierzy RAID 10 (połowa dysków macierzy).

Pavel Kroupka

Galeria