RAID (Redundant Array of Independent Disks), pierwotnie znany jako Redundant Array of Inexpensive Disks, został po raz pierwszy zaproponowany przez profesora D. A. Pattersona z University of California, Berkeley w artykule „A Case of Redundant Array of Inexpensive Disks” w 1988 roku. W tamtym czasie dyski o dużej pojemności były drogie, więc podstawową ideą RAID było organiczne połączenie wielu dysków o małej pojemności i stosunkowo tanich, aby uzyskać pojemność, wydajność i niezawodność porównywalną z drogimi dyskami o dużej pojemności przy niższych kosztach. W miarę spadku kosztów i cen dysków termin „tani” stał się bez znaczenia, a RAID Advisory Board (RAB) postanowił zastąpić „tani” (inexpensive) słowem „niezależny” (independent).
Ta koncepcja projektowa RAID została szybko przyjęta przez przemysł. Technologia RAID, jako wysokowydajna i wysoce niezawodna technologia przechowywania danych, znalazła szerokie zastosowanie. RAID głównie wykorzystuje techniki podziału danych (data striping), tworzenia kopii lustrzanych (mirroring) i danych parzystości (data parity) w celu osiągnięcia wysokiej wydajności, niezawodności, odporności na awarie i skalowalności. W zależności od strategii i architektur wykorzystania lub łączenia tych trzech technologii, RAID można podzielić na różne poziomy, aby sprostać potrzebom różnych aplikacji danych. Oryginalne poziomy RAID RAID1-RAID5 zostały zdefiniowane w artykule D. A. Pattersona i współpracowników, a RAID0 i RAID6 zostały rozszerzone od 1988 roku. W ostatnich latach dostawcy rozwiązań pamięci masowej stale wprowadzają poziomy RAID, takie jak RAID7, RAID10/01, RAID50, RAID53 i RAID100, ale nie ma jednolitego standardu. Obecnie uznawane przez branżę standardy to RAID0-RAID5, a cztery poziomy z wyjątkiem RAID2 zostały ustanowione jako standardy przemysłowe. Najczęściej używane poziomy RAID w praktyce to RAID0, RAID1, RAID3, RAID5, RAID6 i RAID10.
Z punktu widzenia implementacji, RAID dzieli się głównie na trzy typy: RAID programowy, RAID sprzętowy i RAID hybrydowy. W przypadku RAID programowego wszystkie funkcje są realizowane przez system operacyjny i procesor, a nie ma niezależnego układu sterującego/przetwarzającego RAID ani układu przetwarzania I/O, więc wydajność jest najniższa. RAID sprzętowy jest wyposażony w specjalny układ sterujący/przetwarzający RAID oraz układ przetwarzania I/O, a także bufor macierzy, i nie zajmuje zasobów procesora, ale koszt jest bardzo wysoki. RAID hybrydowy posiada układ sterujący/przetwarzający RAID, ale brakuje mu układu przetwarzania I/O i wymaga do działania procesora oraz programów sterujących, a jego wydajność i koszt plasują się pomiędzy RAID programowym a RAID sprzętowym.
Każdy poziom RAID reprezentuje metodę implementacji i technologię, i nie ma rozróżnienia między poziomami wysokimi i niskimi. W praktycznych zastosowaniach należy wybrać odpowiedni poziom RAID i konkretną metodę implementacji zgodnie z charakterystyką aplikacji danych użytkownika, a także kompleksowo rozważyć dostępność, wydajność i koszt.
RAID, czyli Redundant Array of Independent Disks, jest zazwyczaj skracany jako macierz dyskowa. Krótko mówiąc, RAID to podsystem dyskowy składający się z wielu niezależnych, wysokowydajnych dysków twardych, który zapewnia wyższą wydajność przechowywania danych i technologię redundancji danych niż pojedynczy dysk. RAID to technologia zarządzania wieloma dyskami, która zapewnia opłacalne, wysokie bezpieczeństwo danych i wysokowydajne przechowywanie danych w środowisku hosta. Definicja RAID przez SNIA brzmi: macierz dyskowa, w której część fizycznej przestrzeni dyskowej jest wykorzystywana do zapisywania informacji redundantnych danych użytkownika przechowywanych w pozostałej przestrzeni. W przypadku awarii dysku lub ścieżki dostępu, informacje redundantne mogą być wykorzystane do odtworzenia danych użytkownika. Chociaż podział danych (disk striping) nie jest zgodny z definicją RAID, jest on zazwyczaj również nazywany RAID (tj. RAID0).
Pierwotnym zamysłem RAID było zapewnienie funkcji przechowywania danych klasy enterprise i redundantnego bezpieczeństwa danych dla dużych serwerów. W całym systemie RAID jest traktowany jako przestrzeń dyskowa składająca się z dwóch lub więcej dysków, a wydajność I/O systemu pamięci masowej jest poprawiana poprzez jednoczesne odczytywanie i zapisywanie danych na wielu dyskach. Większość poziomów RAID posiada kompletne środki weryfikacji i korekcji danych, a nawet metody tworzenia kopii lustrzanych, co znacznie zwiększa niezawodność systemu, i stąd pochodzi termin „redundantny” (Redundant).
Tutaj należy wspomnieć o JBOD (Just a Bunch of Disks). Początkowo JBOD służył do reprezentowania kolekcji dysków bez oprogramowania sterującego zapewniającego skoordynowane sterowanie, co jest głównym czynnikiem odróżniającym RAID od JBOD. Obecnie JBOD często odnosi się do obudowy dysków, niezależnie od tego, czy zapewnia ona funkcjonalność RAID, czy nie.
Dwa kluczowe cele RAID to poprawa niezawodności danych i wydajności I/O. W macierzy dyskowej dane są rozproszone między wieloma dyskami, ale dla systemu komputerowego wygląda to jak pojedynczy dysk. Redundancja jest osiągana poprzez zapisywanie tych samych danych na wielu dyskach (zazwyczaj przez tworzenie kopii lustrzanych) lub zapisywanie obliczonych danych parzystości w macierzy, tak aby awaria pojedynczego dysku nie spowodowała utraty danych. Niektóre poziomy RAID pozwalają na jednoczesną awarię większej liczby dysków, na przykład RAID6, gdzie dwa dyski mogą ulec uszkodzeniu jednocześnie. W ramach takiego mechanizmu redundancji, uszkodzony dysk może zostać zastąpiony nowym dyskiem, a RAID automatycznie odtworzy utracone dane na podstawie danych i danych parzystości na pozostałych dyskach, aby zapewnić spójność i integralność danych. Dane są rozproszone i przechowywane na wielu różnych dyskach w RAID, a jednoczesne odczytywanie i zapisywanie danych jest znacznie lepsze niż w przypadku pojedynczego dysku, dzięki czemu można uzyskać wyższą zagregowaną przepustowość I/O. Oczywiście, macierz dyskowa zmniejszy całkowitą dostępną przestrzeń dyskową wszystkich dysków, poświęcając przestrzeń w zamian za wyższą niezawodność i wydajność. Na przykład, wykorzystanie przestrzeni dyskowej w RAID1 wynosi tylko 50%, a RAID5 traci pojemność jednego dysku, a wykorzystanie przestrzeni wynosi (n-1)/n.
Macierz dyskowa może zapewnić ciągłe działanie systemu bez przerw, gdy niektóre dyski (pojedyncze lub wielokrotne, w zależności od implementacji) ulegną uszkodzeniu. Podczas procesu odtwarzania danych z uszkodzonego dysku na nowy dysk, system może nadal działać normalnie, ale wydajność zostanie w pewnym stopniu zmniejszona. Niektóre macierze dyskowe muszą zostać wyłączone podczas dodawania lub usuwania dysków, podczas gdy niektóre obsługują hot swapping, pozwalając na wymianę dysków bez wyłączania systemu. Te macierze dyskowe klasy enterprise są głównie wykorzystywane w systemach aplikacyjnych o wysokich wymaganiach dotyczących niezawodności, gdzie system nie może zostać wyłączony lub czas wyłączenia powinien być jak najkrótszy. Ogólnie rzecz biorąc, RAID nie może zastąpić kopii zapasowych danych. Jest bezsilny w przypadku utraty danych spowodowanej awariami niezwiązanymi z dyskami, takimi jak wirusy, zniszczenie przez człowieka, przypadkowe usunięcie itp. W takim przypadku utrata danych jest względna w stosunku do systemu operacyjnego, systemu plików, menedżera woluminów lub systemu aplikacyjnego. Dla samego systemu RAID dane są nienaruszone i nie nastąpiła żadna utrata. Dlatego kopie zapasowe danych, odzyskiwanie po awarii i inne środki ochrony danych są bardzo potrzebne, uzupełniając RAID i chroniąc bezpieczeństwo danych na różnych poziomach, aby zapobiec utracie danych.
Istnieją trzy kluczowe koncepcje i technologie w RAID: tworzenie kopii lustrzanych (mirroring), podział danych (data striping) i dane parzystości (data parity). Tworzenie kopii lustrzanych kopiuje dane na wiele dysków. Z jednej strony może poprawić niezawodność, a z drugiej strony może odczytywać dane z wielu kopii jednocześnie, aby poprawić wydajność odczytu. Oczywiście wydajność zapisu w przypadku tworzenia kopii lustrzanych jest nieco niższa i wymaga więcej czasu, aby zapewnić prawidłowe zapisanie danych na wielu dyskach. Podział danych przechowuje fragmenty danych na wielu różnych dyskach, a wiele fragmentów danych razem tworzy kompletną kopię danych, co różni się od wielu kopii w przypadku tworzenia kopii lustrzanych i jest zazwyczaj stosowane ze względu na wydajność. Podział danych ma wyższą ziarnistość współbieżności. Podczas dostępu do danych możliwe jest jednoczesne odczytywanie i zapisywanie danych na różnych dyskach, uzyskując w ten sposób bardzo znaczącą poprawę wydajności I/O. Dane parzystości wykorzystują dane redundantne do wykrywania i naprawy błędów danych. Dane redundantne są zazwyczaj obliczane za pomocą algorytmów, takich jak kod Hamminga i operacja XOR. Wykorzystanie funkcji parzystości może znacznie poprawić niezawodność, odporność i tolerancję błędów macierzy dyskowej. Jednak dane parzystości wymagają odczytu danych z wielu miejsc oraz wykonania obliczeń i porównań, co wpłynie na wydajność systemu. Różne poziomy RAID wykorzystują jedną lub więcej z powyższych trzech technologii, aby uzyskać różną niezawodność danych, dostępność i wydajność I/O. Jeśli chodzi o to, jaki rodzaj RAID (nawet nowe poziomy lub typy) zaprojektować lub jaki tryb RAID przyjąć, konieczne jest dokonanie rozsądnego wyboru przy założeniu głębokiego zrozumienia wymagań systemu i kompleksowej oceny niezawodności, wydajności i kosztów, aby dokonać kompromisowego wyboru.
-
Duża Pojemność: Jest to oczywista zaleta RAID. Rozszerza pojemność dysku, a system RAID składający się z wielu dysków ma ogromną przestrzeń dyskową. Obecnie pojemność pojedynczego dysku może osiągnąć ponad 1 TB, więc pojemność przechowywania danych w RAID może osiągnąć poziom PB, a większość wymagań dotyczących przechowywania danych może zostać spełniona. Ogólnie rzecz biorąc, dostępna pojemność RAID jest mniejsza niż całkowita pojemność wszystkich dysków członkowskich. Różne poziomy algorytmów RAID wymagają pewnego narzutu na redundancję, a specyficzny narzut pojemności jest związany z przyjętym algorytmem. Jeśli znany jest algorytm RAID i pojemność, można obliczyć dostępną pojemność RAID. Zazwyczaj wykorzystanie przestrzeni dyskowej w RAID wynosi od 50% do 90%.
-
Wysoka Wydajność: Wysoka wydajność RAID wynika z technologii podziału danych (data striping). Wydajność I/O pojedynczego dysku jest ograniczona przez technologie komputerowe, takie jak interfejs i przepustowość, i często stanowi wąskie gardło wydajności systemu. Poprzez podział danych, RAID rozkłada I/O danych na każdy dysk członkowski, uzyskując w ten sposób zagregowaną wydajność I/O wielokrotnie wyższą niż w przypadku pojedynczego dysku.
-
Niezawodność: Dostępność i niezawodność to kolejne ważne cechy RAID. Teoretycznie niezawodność systemu RAID składającego się z wielu dysków powinna być gorsza niż niezawodność pojedynczego dysku. Istnieje tu niejawne założenie: awaria pojedynczego dysku spowoduje niedostępność całego RAID. RAID wykorzystuje technologie redundancji danych, takie jak tworzenie kopii lustrzanych i dane parzystości, aby przełamać to założenie. Tworzenie kopii lustrzanych jest najbardziej prymitywną technologią redundancji, która całkowicie kopiuje dane z pewnej grupy dysków na inną grupę dysków, aby zapewnić, że zawsze dostępna jest kopia danych. W porównaniu z 50% narzutem na redundancję w przypadku tworzenia kopii lustrzanych, dane parzystości są znacznie mniejsze i wykorzystują redundantne informacje parzystości do weryfikacji i korekcji danych. Technologia redundancji RAID znacznie poprawia dostępność i niezawodność danych, zapewniając, że w przypadku awarii kilku dysków dane nie zostaną utracone, a ciągłe działanie systemu nie zostanie zakłócone.
-
Zarządzalność: W rzeczywistości RAID jest technologią wirtualizacji, która wirtualizuje wiele fizycznych dysków twardych w logiczny dysk o dużej pojemności. Dla zewnętrznego systemu hosta, RAID jest pojedynczym, szybkim i niezawodnym dyskiem logicznym o dużej pojemności. W ten sposób użytkownicy mogą organizować i przechowywać dane systemu aplikacyjnego na tym wirtualnym dysku. Z perspektywy aplikacji użytkownika, może to sprawić, że system pamięci masowej będzie prosty i łatwy w użyciu i zarządzaniu. Ponieważ RAID wykonał dużą część pracy związanej z zarządzaniem pamięcią masową wewnętrznie, administrator musi jedynie zarządzać pojedynczym wirtualnym dyskiem, co może zaoszczędzić dużo pracy związanej z zarządzaniem. RAID może dynamicznie dodawać lub usuwać dyski twarde oraz automatycznie przeprowadzać weryfikację danych i odtwarzanie danych, co może znacznie uprościć pracę związaną z zarządzaniem.