Czym jest RAID?
Kilka lat temu zastanawiałem się, w jaki sposób dane potrafią być przetrzymywane w danej lokalizacji przez dłuższy okres czasu bez utraty, chociaż części danych. Awarie dysków nie są bardzo częste, lecz anihilacja ważnych informacji może skutkować wieloma negatywnymi skutkami, na przykład utratą wieloletniej bazy danych. Rozwiązaniem tego problemu jest RAID (skrót od angielskiego Redundant Array of Independent Disks – nadmiarowa macierz niezależnych dysków), czyli przechowywanie danych na minimum dwóch dyskach.
Gdzie wykorzystuje się RAID?
RAID znajduje powszechne zastosowanie wśród serwerów – w przypadku awarii jednego dysku możemy go wymienić na sprawny, który dzięki RAID będzie mógł pracować bez konieczności przywracania kopii zapasowej. Jest to szczególnie wygodne, jeśli sprawujemy pieczę nad wieloma serwerami, ponieważ do poprawnego działania wystarczy wstawić nowy dysk do kieszeni dyskowej.
Przykładowy serwer, w którym można wykorzystać RAID. Obok niego znajdują się dwa dyski ze złączem SAS.
Podział RAID
Macierze RAID dzielą się na dwa rodzaje. W zależności od posiadanego sprzętu można wykorzystać odpowiedni rodzaj RAID – każdy z nich posiada wady i zalety.
- Sprzętowy RAID – dyskami zarządza oddzielny kontroler. Dzięki temu CPU nie jest obciążone wykonywaniem obliczeń związanymi z określaniem sum kontrolnych. Ustawienie RAID jest niezależne od systemu operacyjnego, tj. dokonywane jest przed jego wystartowaniem. Pozwala to na uruchomienie systemu z dysków znajdujących się w macierzy. Minusem sprzętowego RAID jest konieczność posiadania dysków o identycznych złączach, jak i posiadanie fizycznego kontrolera. Same kontrolery różnią się od siebie sposobem zapisu danych, co może powodować problemy z kompatybilnością.
- Programowy RAID – dyskami zarządza komputer. CPU zajmuje się obliczaniem sum kontrolnych, przez co macierze RAID mogą tracić na wydajności. System musi być uruchamiany z woluminu nieznajdującego się w RAID, ponieważ to on zajmuje się obsługą partycji w macierzy. Programowy RAID pozwala jednak na łączenie ze sobą dysków o różnych złączach (np. popularne SATA i USB) i działanie bez konieczności posiadania fizycznego kontrolera.
Spotykane jest również połączenie tych dwóch rodzajów – tak zwane FakeRAID. Polega ono na konfigurowaniu RAID przez BIOS, lecz pozostawieniu procesorowi operacji związanych z obsługą dysków.
Czy RAID to kopia zapasowa?
RAID w pewnym stopniu zabezpiecza dane przed ich utratą, nie może być stosowany jako kopia zapasowa. Dyski w macierzy RAID nadal są narażone na przykład na ataki ransomware lub działanie osób wewnątrz danej organizacji mające na celu usunięcie cennych danych. RAID nie pozwala również na przywrócenie danych, które nie zostały wcześniej nadpisane – nie można ich przywrócić sprzed danej daty. RAID nie zwalnia administratora z konieczności robienia kopii zapasowej. Chroni jednak dane przed awariami fizycznych dysków.
Automatyzacja działania RAID – hot spare
Hot spare w RAID oznacza dodatkowy fizyczny dysk, na którym nie są przechowywane dane. Jest on w trybie czuwania (standby) i zastępuje uszkodzony dysk w momencie, gdy nie działa prawidłowo. Dzięki zastosowaniu tego rozwiązania dana macierz dyskowa może nieustannie pracować, zaś administrator może wymienić uszkodzony dysk bez konieczności wyłączania danego systemu.
Poziomy RAID
Czym jest RAID 0?
RAID 0 to segmentacja danych pomiędzy minimum dwa dyski, które są widoczne w systemie jako pojedynczy wolumin. Dzięki temu dane mogą być szybciej odczytywane i zapisywane.
Niestety taka konfiguracja oznacza, że awaria jednego dysku fizycznego skutkuje utratą danych dla całego dysku logicznego. Ten poziom RAID nie powinien być wykorzystywany dla ważnych danych, ponieważ istnieje duże ryzyko zaprzepaszczenia cennych plików.
Czym jest RAID 1 ?
RAID 1 różni się diametralnie od RAID 0 – zamiast zapisywać dane pomiędzy dwoma fizycznymi dyskami, RAID 1 zapisuje identyczne dane na obydwu dyskach logicznych. Dzięki temu nazywany jest lustrzanym RAID. Skutkuje to jednak znacząco wolniejszym zapisem niż w przypadku RAID 0 – dane zapisywane są równolegle lub sekwencyjnie dla obydwu woluminów.
Przestrzeń zapisu jest równa przestrzeni dyskowej najmniejszego fizycznego dysku. Dzięki temu awaria jednego dysku nie oznacza utraty danych, a po wymianie uszkodzonego dysku na nowy RAID może działać ponownie, bez konieczności wykonywania obliczeń lub innych skomplikowanych operacji.
Czym jest RAID 2 ?
RAID 2 to historyczny rodzaj RAID, wykorzystujący m.in. 10 dysków i zapisywanie danych na paskach, które pozwalają na korygowanie błędnie zapisanych danych. Osiem dysków służyło do przechowywania danych, zaś dwa do kodu służącego do eliminowania ewentualnych błędów. Obecnie ten poziom RAID uznaje się za przestarzały, m.in. spowalnia działanie systemu.
Czym jest RAID 3 ?
RAID 3 wymaga minimum trzech dysków fizycznych. Na jednym z nich przechowywane są sumy kontrolne, zaś na pozostałych trzymane są pliki. Dzięki sumom kontrolnym w przypadku awarii jednego fizycznego dysku jesteśmy w stanie odzyskać jego zawartość.
RAID 3 znacząco spowalnia zapisywanie danych na dyskach, ponieważ na bieżąco muszą być generowane sumy kontrolne.
Czym jest RAID 4 ?
RAID 4 działa podobnie do RAID 0 i RAID 3 – zapisuje dane na dyskach analogicznie do RAID 0, lecz tworzy również bloki parzystości podobnie do RAID 3. RAID 4 jest znacząco wydajniejszy niż RAID 3. Lepiej spisuje się współpracując z dużymi plikami zamiast z wieloma małymi – każda operacja generuje blok parzystości o wielkości będącej potęgą liczby 2 (w kB).
Czym jest RAID 5 ?
RAID 5 działa analogicznie do RAID 4, lecz nie używa oddzielnego dysku do przechowywania informacji o parzystości. W razie awarii dane odzyskiwane są na podstawie informacji zawartych w pozostałych dyskach. Na pojedynczym dysku znajduje się suma kontrolna i liczba bloków danych pomniejszona o jeden.
Szybkość odczytu jest atutem tego poziomu, lecz generowanie bitów parzystości może spowalniać działanie systemu w programowych RAID. Awaria jednego z dysków powoduje chwilowe spowolnienie działania macierzy po wymianie dysku, ponieważ sumy kontrolne dla minimum dwóch dysków muszą zostać wygenerowane od zera.
Czym jest RAID 6?
RAID 6 jest podobny do RAID 5, lecz tworzy dwa bloki zawierające bity parzystości. Dzięki temu RAID 6 jest odporny na awarie dwóch dysków, dzięki czemu może być stosowany do przechowywania cennych danych. Wymaga minimum czterech dysków fizycznych do poprawnego działania — dwóch przechowywujących dane i dwa odpowiedzialne za sumy kontrolne.
Dzięki temu kilka lub kilkanaście dysków działających jako RAID 6 wymaga jedynie dwóch dysków z informacjami o parzystości, dlatego można spotkać RAID 6 w konfiguracji np. 13+2 (13 dysków z danymi i 2 przeznaczone dla bitów parzystości). Takie ustawienie pozwala na bezpieczne przechowywanie danych w macierzy, przy wykorzystaniu ok. 87% przestrzeni dyskowej na przechowywanie danych.
RAID 0+1 i RAID 1+0
RAID 0+1 składa się z minimum czterech dysków. Cztery dyski podzielone są na dwa RAID 0 po dwa dyski, czyli dane zapisywane są równolegle na obu dyskach. Lustrzane kopie RAID 0 są połączone w RAID 1, czyli dane między nimi są replikowane do nowego dysku w razie awarii.
Cechuje się wieloma zaletami, przede wszystkim możliwością łączenia dysków o różnych pojemnościach i szybkością charakterystyczną dla RAID 0. RAID 0+1 wiąże się jednak z tym, że połowa przestrzeni dyskowej jest niewykorzystywana.
RAID 1+0 (RAID 10) to analogiczne rozwiązanie do RAID 0+1. Składa się on z minimum czterech dysków, gdzie każde dwa działają jako RAID 1, zaś cztery jako RAID 0. Oznacza to, że uszkodzony dysk może zostać wymieniony na nowy i skopiować dane z tego, który znajduje się z nim w RAID 1. Wymaga jednak do poprawnego działania dysków o identycznej pojemności.
Matrix RAID
Matrix RAID to połączenie dwóch dysków fizycznych przy wykorzystaniu zarówno RAID 0, jak i RAID 1. Ważne dane przechowywane są jako RAID 1, zaś mniej ważne jako RAID 0. Wymaga to podzielenia fizycznego dysku na dwie partycje. Pozwala to zachować dużą szybkość zapisu dla mniej ważnych danych i bezpieczne przechowywanie cennych informacji.
Podsumowanie
Różne poziomy RAID pozwalają na szybki zapis danych lub bezpieczne przechowywanie informacji. Zastosowanie danego poziomu wiąże się z ograniczeniami dotyczącymi prędkości zapisu lub wykorzystywanej przestrzeni dyskowej, dlatego należy szczegółowo przeanalizować dobranie poziomu RAID w organizacji. Każda macierz dyskowa może wymagać innego podejścia odnośnie zapisywania danych w RAID.
Spotykasz w praktyce macierze wykorzystujące dyski podłączone przez USB? To bardzo dziwne rozwiązanie…:)
Z tą ochroną przed awariami fizycznymi dysków można się czasem przejechać. Każdy z poziomów macierzy ma jasno określoną odporność na awarię, przy czym awaria większej liczby dysków powoduje, że mamy problem. I zdarza się to częściej, niżby się mogło na pierwszy rzut oka wydawać, bo:
– niektóre usterki są powodowane przez czynniki zewnętrzne. Nie tylko pożary, zalania i trzęsienia ziemi, ate też np. przez skoki napięć w sieci zasilającej. Taki przypadek może spowodować uszkodzenie kilku, a nawet wszystkich dysków w macierzy naraz,
– popularnym zwyczajem jest budowanie macierzy na takich samych dyskach, ten sam model, dyski pochodzące z jednej partii produkcyjnej, jakie przyjechały na jednej palecie i są eksploatowane w identycznych warunkach eksploatacyjnych. W ich przypadku ryzyko, że będą ulegały awariom w bardzo krótkich odstępach czasu jest na tyle wysokie, że do awarii drugiego dysku może dojść zanim macierz się odbuduje po awarii pierwszego. To dlatego RAID-6 konsekwentnie wypiera rozwiązania typu RAID -3, RAID-4 i RAID-5.
– ryzyko awarii w krótkim odstępie czasu jest szczególnie istotne w przypadku SSDków, gdzie główną przyczyną awarii jest zużycie powodowane operacjami kasowania i zapisu. A ponieważ macierze zapisują dane na wszystkich nośnikach w bardzo równomierny sposób, użycie identycznych SSDków (wykorzystujących identyczne układy scalone – naklejka na obudowie nie ma tu żadnego znaczenia), jest proszeniem się o problemy. Dlatego w dużych centrach danych istnieją procedury przewidujące prewencyjną wymianę wszystkich nośników po określonym czasie eksploatacji bez względu na ich aktualny stan techniczny.
RAID-2 nie musiał być zbudowany na dokładnie 10 dyskach. Umarł, dlatego, że jako nadmiarowość, ale też mechanizm korekcji błędów używał mało efektywnego kodu Hamminga. Richard Hamming stworzył swój kod do kontroli spójności i korekcji danych zapisywanych jeszcze na kartach perforowanych na początku lat ’50. Używanie tego kodu wymaga dużej nadmiarowej przestrzeni, co jest nieefektywne ekonomicznie.
Wszystkie macierze RAID od 3 do 6 paskują dane podobnie do macierzy RAID-0, tylko mają dodatkową nadmiarowość. Jest to wartość XOR (alternatywa rozłączna), a dla RAID-6, także kod Reeda-Solomona, będący równocześnie kodem korekcyjnym (ECC). Macierze RAID-3 i RAID-4 przechowują nadmiarowość na jednym dysku (różnią się rozmiarem paska, co w praktyce oznacza, że można by je traktować jako jeden poziom macierzy), natomiast RAID-5 i RAID-6 rozpraszają nadmiarowość po wszystkich dyskach. Dlatego w przypadku macierzy RAID-5 i RAID-6 dla złożenia uszkodzonej macierzy nie wystarcza znajomość kolejności dysków i rozmiaru paska – trzeba jeszcze zrozumieć sposób ich synchronizacji. Jeśli chcesz się zapoznać z wybranymi przykładami, zajrzyj tu:
http://kaleron.pl/macierz-RAID.php
Paweł dzięki za ten komentarz na pewno przeczytam w wolnej chwili artykuł, który zalinkowałeś bardzo wiele cennych informacji.