(ang. Redundant Array of Inexpensive Disks – macierz dyskowa niedrogich dysków) – rozwiązanie pozwalające łączyć ze sobą dyski celem stworzenia pamięci masowej o dużej pojemności, szybkości i niezawodności. Twórcami technologii RAID są trzej doktoranci Berkeley: David Patterson, Garth Gibbon i Randy Katz. Połączyli oni kilka małych napędów dyskowych w jeden niezawodny zespół, wyposażony w mechanizm rozpoznawania i korekcji błędów.
Macierze RAID posiadają kilka odmian różniących się funkcjonalnością:
RAID Level 0
Macierz RAID Level 0 nie jest – jak wskazuje 0 w nazwie – rozwiązaniem nadmiarowym. Chodzi wyłącznie o przyspieszenie odwołań do dysków. W tym celu RAID łączy dwa lub więcej dysków w jeden napęd logiczny, a następnie rozdziela dane w następujących kolejno po sobie blokach (stripes) równomiernie na wszystkich dyskach. Dlatego RAID Level 0 bywa określany jako striping. Równoległy zapis, względnie odczyt, na wielu dyskach zwiększa, co prawda, przepustowość, zmniejsza jednak poziom bezpieczeństwa. W razie awarii jednego napędu wszystkie dane są tracone. Zwiększenie szybkości widoczne jest przede wszystkim w wypadku dużych, wzajemnie powiązanych plików. Wówczas striping może operować jednocześnie na wszystkich dyskach i zwielokrotnić szybkość przesyłania danych. Podczas odczytu lub zapisu wielu małych plików czas dostępu do dysków staje się czynnikiem ograniczającym i taki zestaw uzyskuje w najlepszym razie wydajność pojedynczego napędu. Z tych względów rozwiązanie to znajduje zastosowanie przede wszystkim tam, gdzie przetwarzane są duże ilości danych, np. w stacjach roboczych do obróbki wideo lub stacjach roboczych CAD/CAM.
RAID Level 1
Korekcja błędów za pomocą parzystości
RAID Level 1 bywa też nazywany mirroringiem, czyli tworzeniem lustrzanych kopii dysków. Ta nazwa odzwierciedla sposób działania – wszystkie zapisy odbywają się równolegle na dwóch napędach i dlatego każdy dysk stanowi lustrzane odbicie drugiego. Wszystkie dane są dublowane, co zapewnia bardzo wysoki stopień bezpieczeństwa. Nawet w razie całkowitej awarii jednego dysku, pozostają zapisy na drugim. Rozwiązanie ma też wadę: na dane użyteczne przeznaczono tylko połowę ogólnej pojemności dysków, a więc rosną koszty przechowywania danych.
Podłączenie napędów do własnych kanałów zwiększa, co prawda, dwukrotnie wydajność podczas odczytu, jednak zapis odbywa się najwyżej tak szybko, jak z pojedynczego dysku. Z tego względu mirroring nadaje się przede wszystkim do systemów przechowujących ważne dane przeznaczone głównie do odczytu.
RAID Level 0+1
Optymalny tylko dla dużych plików – RAID 3 wykorzystuje bitowy stripping i jeden dedykowany napęd parzystości. Połączenie mirroringu i stripppingu umożliwia zwiększenie szybkości z zachowaniem bezpieczeństwa danych. RAID 0, łącząc równolegle wiele dysków podczas zapisu i odczytu, zapewnia wyraźne przyspieszenie. Dodatkowe odzwierciedlenie stripesets na kolejnych dyskach pozwala lepiej zabezpieczyć dane. W zależności od producenta metoda ta bywa nazywana RAID 0+1, RAID 0/1 lub RAID 10.
Można sobie wyobrazić dwa sposoby sterowania napędami. Załóżmy, że do budowy macierzy RAID-10 masz do dyspozycji sześć twardych dysków. Najpierw możesz połączyć po trzy dyski w macierz RAID 0 (striping). Powstałe w ten sposób dwa napędy logiczne łączysz w macierz RAID 1 (mirroring). Odwrotna konstelacja daje pozornie ten sam efekt – najpierw łączysz po dwa dyski w macierz RAID 1, następnie trzy tak powstałe napędy logiczne w macierz RAID 0. W obu wypadkach masz do dyspozycji łączną pojemność trzech dysków.
Ze względu na bezpieczeństwo danych należy wybierać to drugie rozwiązanie. Wyjaśnimy to, rozpatrując przypadek skrajny. Jeżeli najpierw połączysz napędy w macierz RAID 0, awaria jednego dysku w którymkolwiek z napędów logicznych spowoduje, że cały zestaw stanie się bezużyteczny. Dane znajdują się, co prawda, na dyskach w drugim zestawie, ale awaria któregokolwiek z nich spowoduje utratę danych.
Natomiast w razie awarii jednego z dysków w napędzie logicznym w macierzy RAID 1 traci on swoją nadmiarowość, jednak utrata danych może nastąpić tylko wówczas, gdy nastąpi awaria drugiego dysku w tej samej macierzy. Prawdopodobieństwo całkowitej awarii spada w stosunku do pierwszej metody do jednej trzeciej.
RAID Level 2
RAID Level 2 oferuje dodatkową ochronę danych przed błędami, jednak ze względu na bardzo skomplikowaną realizację prawie nie jest używany. Poza nielicznymi zastosowaniami ogranicza się do segmentu bardzo dużych komputerów. RAID 2 opiera się na podziale danych użytecznych na poziomie bitów, a dodatkowo implementuje korekcję błędów nie tylko na wypadek całkowitej awarii jednego napędu. Wszystkie pozostałe poziomy RAID zawodzą, gdy dojdzie nie do awarii całego dysku, ale na przykład niespójności danych na skutek błędów zapisu. Rozpoznają one wprawdzie błąd, ale ponieważ nie mogą stwierdzić, który napęd dostarcza błędnych danych, nie potrafią ich skorygować.
RAID 2 używa w tym celu oprócz ośmiu bitów na dane dodatkowo dwóch bitów na kod ECC. W ten sposób można nie tylko wykryć błąd, ale również go zlokalizować. RAID 2 przypomina w tym względzie pamięć RAM z kontrolą ECC, która w wypadku pojedynczego bitu nie zatrzymuje procesora na skutek błędu parzystości, lecz ten bit koryguje. Podział bitowy na napędy wymusza zastosowanie nie mniej niż dziesięciu napędów w macierzy. Ze względu na możliwość równoległych odwołań szybkość odczytu wzrasta ośmiokrotnie, ale już podczas zapisu wydajność spada poniżej wydajności pojedynczego napędu – ze względu na duży stały blok ECC.
RAID Level 3
RAID Level 3 stawia na bitowy striping danych. Odmiennie niż RAID 2, do rozpoznawania błędów zapisu i odczytu wykorzystuje zintegrowane funkcje twardych dysków, dlatego wystarcza mu jeden, dedykowany napęd parzystości.
W celu łatwiejszego generowania danych ECC RAID 3 synchronizuje pozycje głowic napędów. Umożliwia to zapis bez stałego bloku administracyjnego (overhead), gdyż dane użyteczne i dane parzystości mogą być zapisywane na dyskach równolegle. Z kolei liczne odwołania odczytu do małych, rozproszonych plików wymagają ponownego, synchronicznego pozycjonowania głowic w całej macierzy, a na to trzeba czasu.
RAID 3 może zwiększyć szybkość w wyniku równoległych odwołań tylko podczas odczytu dużych plików, więc to rozwiązanie stosuje się głównie do przetwarzania dużych, powiązanych ilości danych w pojedynczych komputerach. Typowe zastosowania to CAD/CAM i obróbka wideo.
RAID Level 4
RAID 4 wykorzystuje blokowy stripping danych użytecznych. Rezygnacja z synchronizacji głowic wszystkich napędów pozwala wyeliminować problemy, jakie ma RAID 3 podczas odczytu małych plików. Do zapisu danych parzystości służy, podobnie jak w RAID 2 i 3, dedykowany napęd.
Połączenie blokowego stripingu i niezależnego dostępu do dysków powoduje, że RAID 4 może szybko odczytywać małe pliki. W zależności od wielkości pliku każdy napęd może podjąć samodzielny odczyt. Podczas zapisu RAID 4 okazuje się gorszy od RAID 3 – brak synchronizacji powoduje, że do aktualizacji danych ECC trzeba najpierw znaleźć odpowiednie miejsce na dysku parzystości i skierować tam głowicę. W ten sposób dysk parzystości staje się wąskim gardłem systemu.
Ze względu na sposób działania RAID 4 sprawdza się głównie w środowiskach z przewagą operacji odczytu nad operacjami zapisu. Ponieważ w porównaniu z RAID 3 ma minimalnie więcej zalet, stosuje się go bardzo rzadko.
RAID Level 5
RAID Level 5 pracuje, podobnie jak RAID 4, z blokowym rozdziałem danych użytecznych. Nie ma tu jednak dedykowanego dysku parzystości, a dane ECC rozdzielane są razem z danymi użytecznymi równomiernie na wszystkie dyski. W ten sposób spada prawdopodobieństwo, że dwie operacje zapisu trafią jednocześnie na ten sam napęd. Operacje zapisu są w RAID 5 w dużej mierze równoległe. Ponadto obciążenie mechaniczne rozkłada się równomiernie na wszystkie dyski, gdyż żaden z nich nie ma specjalnego statusu dysku parzystości.
Rozdział danych na wszystkie napędy w macierzy RAID 5 daje też korzyści w postaci dobrej wydajności odczytu. Jest to szczególnie ważne przy odwołaniach do wielu małych bloków danych. Z tego powodu macierz RAID 5 jest stosowana zwłaszcza w systemach bazodanowych i serwerach transakcyjnych.
Podobnie jak RAID 1, RAID 5 można bardzo łatwo połączyć z RAID 0. Powstała w ten sposób macierz RAID 0+5 (RAID 50) oferuje – przy wydajności równie dobrej, jak RAID 10 – większą odporność na awarie niż RAID 5.
RAID 6 i RAID 7
RAID 6 opracowano z myślą o zwiększeniu niezawodności w stosunku do RAID 3, 4 i 5, bo na tych poziomach awaria więcej niż jednego dysku w macierzy uniemożliwia rekonstrukcję danych przy użyciu procedury XOR. RAID 6 usuwa tę niedogodność, uzupełniając jakby RAID 5 o dodatkowy dysk parzystości. W efekcie awaria dwóch napędów nie powoduje jeszcze utraty danych. Zwiększenie bezpieczeństwa ma swoją cenę – zapis trwa dłużej niż w wypadku RAID 3, 4 i 5.
Również nietypowy RAID 7 przypomina budową RAID 5. Jego producent, firma Storage Computer (http://www.storage.com) zaimplementowała w kontrolerze lokalny system operacyjny, pracujący w czasie rzeczywistym. Napędy oddzielone są od magistrali szybkimi szynami danych i wieloma pamięciami buforowymi. Metoda asynchroniczna ma znacznie przyspieszać odczyt i zapis w porównaniu z innymi wariantami RAID. Podobnie jak w RAID 6, dane parzystości można podzielić między wiele dysków.
Awaria jednego dysku prowadzi nieuchronnie do utraty danych. Wniosek – trzeba jak najszybciej wymienić uszkodzony dysk i odtworzyć macierz. Najlepsze rozwiązanie to dodatkowy napęd w macierzy, pozostający w rezerwie na wypadek awarii. Tego rodzaju napęd – nazywany hot-fix, hot-spare lub stand-by – jest w razie awarii automatycznie uruchamiany przez kontroler i włączany do macierzy w miejsce uszkodzonego. Jeżeli w układzie nie przewidziano dysku hot-spare, uszkodzony napęd trzeba wymienić ręcznie. Zwykle wymaga to wyłączenia komputera i oznacza przerwę w pracy. Szczególnie tego rodzaju przestoje serwerów są nie do zaakceptowania. Rozwiązaniem są macierze hot-plug lub inaczej hot-swap. Napędy macierzy RAID są tak umieszczone w szufladach/wnękach (shuttles), że można je wymieniać w trakcie pracy. Po wymianie napędu trzeba go włączyć w strukturę macierzy i zrekonstruować utracone dane. Jeżeli jest to proces automatyczny, nosi nazwę auto-rebuild. Warunkiem koniecznym jest komunikowanie się kontrolera z obudową (stan napędu, nowy napęd w obudowie). W razie braku takiej komunikacji dane trzeba odtworzyć ręcznie.
Występują 2 warianty technologii RAID – programowy i sprzętowy.
W wypadku programowej macierzy RAID sterowaniem zespołu napędów zajmuje się oprogramowanie działające na procesorze hosta. Niektóre systemy operacyjne są wyposażone w potrzebne składniki. Windows NT obsługuje na przykład RAID 0 oraz RAID 1 i 5 – ten ostatni poziom tylko w wersji serwerowej. Linux obsługuje generalnie poziomy 0, 1, 4 i 5.
Programowa macierz RAID jest więc często najtańszym i najprostszym rozwiązaniem. Można je także łatwo dostosować do rosnących wymagań poprzez wymianę procesora na wydajniejszy. Programowa macierz RAID powoduje jednak duże obciążenie procesora i siłą rzeczy jest związana z platformą i systemem operacyjnym. Poza tym w zwykłych warunkach do dyspozycji jest tylko jedno lub dwa przyłącza do sterowania napędów, co w znacznym stopniu ogranicza możliwości równoległych odwołań do napędów, a zatem i wydajność.
Odmienne rozwiązanie to sprzętowa macierz RAID – sterowanie napędów przejmuje wyspecjalizowany kontroler. Korzyść polega na odciążeniu procesora i wzroście wydajności. Dodatkowo kontroler RAID odwołuje się do dysków za pośrednictwem wielu kanałów, co umożliwia odwołania równoległe i zwiększa szerokość pasma. Jak zwykle w takich wypadkach, rozwiązanie to ma wyższą cenę. Sprzętowe macierze RAID pracują w sposób niezależny od platformy, potrzebują jednak również oprogramowania, które musi być dostosowane do systemu operacyjnego.