Co to jest RAID? Różnice między RAID'em sprzętowym i programowym

Przemysław Świderski 2014-07-01

Przeglądając oferty serwerów dedykowanych często pojawia się opcja RAID jeśli chodzi o dyski twarde. Wiele osób kojarzy RAID z bezpieczeństwem, dla niektórych jest on również jednoznaczny z kopią zapasową. Czym jest RAID? Jakie są jego odmiany oraz w jaki sposób bywa realizowany? Na te i inne pytania postaram się odpowiedzieć w poniższym artykule. Zapraszam!

 

RAID

RAID (ang. Redundand Array of Independent Disks) to sposób połączenia dwóch lub większej ilości dysków twardych w jedną macierz, która zapewnia dodatkową funkcjonalność w porównaniu z oddzielnie podłączonymi pojedynczymi dyskami twardymi. Macierze RAID są powszechnie stosowane w rozwiązaniach serwerowych, dzięki nim uzyskujemy:

  • odporność na awarie,
  • zwiększenie prędkości transmisji w porównaniu z pojedynczym dyskiem,
  • zależnie od rodzaju pamięć widoczna jako jedno urządzenie.

Realizacja macierzy RAID

Macierz RAID może być zrealizowana na dwa sposoby:

  • sprzętowy,
  • programowy.

RAID sprzętowy - w celu utworzenia tego rodzaju macierzy potrzebny jest specjalny dedykowany kontroler, do którego podłącza się dyski. Zaletą takiego rozwiązania jest oczywiście wydajność i brak dodatkowego wykorzystania zasobów procesora. Ten rodzaj macierzy jest polecany w przypadku, gdy potrzebna jest duża wydajność i niezawodność pamięci masowej. Wadą takiego rozwiązania jest oczywiście cena samego kontrolera RAID programowy - ogromną zaletą tego rozwiązania jest brak potrzeby zakupu dodatkowych elementów oprócz samych dysków twardych. Dyski są podłączane bezpośrednio do istniejących na płycie głównej kontrolerów. Wady to oczywiście mniejsza wydajność - RAID programowy wykorzystuje procesor główny CPU do wykonywania obliczeń dyskowych. Obecnie większość systemów operacyjnych (Linux, Windows, FreeBSD) oferuje wbudowane gotowe rozwiązania programowe do tworzenia tego typu macierzy. Są one oczywiście niekompatybilne ze sobą. Istnieją również rozwiązania pośrednie, tzw. FakeRAID - wiele płyt głównych umożliwia włączenie w BIOS'ie opcji RAID. Wydawać by się mogło, że jest to RAID sprzętowy. Niestety większość teraz typu rozwiązań zintegrowanych z płytami głównymi wykorzystuje procesor do przetwarzania operacji dyskowych i sum kontrolnych. Często również bywają problemy ze znalezieniem odpowiednich sterowników, które obsłużyłyby tego typu macierz w używanym systemie operacyjnym.

Czy RAID to kopia zapasowa?

Jest to częste pytanie w momencie, gdy mamy do czynienia z macierzami typu nadmiarowego RAID1, RAID5, RAID1+0. Nadmiarowa macierz RAID ma za zadanie chronić przed awariami dysków twardych. NIE JEST TO KOPIA ZAPASOWA!!! Dlaczego? Kopia zapasowa - to pełny zrzut danych z pewnego punktu w czasie, który nie ulega już dalszym zmianom. Dzięki temu jest możliwość przywrócenia danych w przypadku ich uszkodzenia w późniejszym okresie. Rozważmy teraz macierz RAID1, która jest wyposażona w dwa dyski. Każdy w nich posiada dokładnie te same dane, mamy tutaj do czynienia z replikacją - w przypadku uszkodzenia jednego z nich można go wymienić i przywrócić macierz do działania z jednego z nadmiarowych dysków. Tego typu replikacja nie zapewnia jednak możliwości przywrócenia danych z pewnego punktu w czasie. Jeżeli uszkodzeniu ulegnie projekt nad którym pracowaliśmy to nie ma możliwości przywrócenia jego wcześniejszej wersji. Taką możliwość daje jedynie kopia zapasowa. Zatem posiadając nadmiarową macierz RAID mamy zapewnioną ochronę przez awarią dysku - nie przed uszkodzeniem danych. Dlatego też nigdy nie można z rezygnować z tworzenia kopii zapasowych.

Rodzaje macierzy RAID

Istnieje wiele rodzajów macierzy RAID - 0, 1, 2, 3, 4, 5, 6, 1+0, 0+1 - każdy rodzaj (zwany poziomem) charakteryzuje się odmiennym sposobem zapisu danych na dyskach. Postaram się opisać w jaki sposób zachowują się poszczególne poziomy oraz do czego służą.

RAID 0

Do utworzenia tego typu macierzy RAID potrzebne są minimum 2 dyski twarde. Należy pamiętać, aby były to dyski o tej samej pojemności i prędkości. W tym rodzaju macierzy bloki z danymi są zapisywane naprzemiennie na poszczególnych dyskach. Łączna pojemność tego rodzaju macierzy jest wielokrotnością pojemności dysków składowych. RAID 0 zwiększa niemalże podwójnie szybkość operacji zapisu/odczytu macierzy kosztem bezpieczeństwa danych - utrata jednego napędu wiąże się z utratą całości danych. Zalety:

  • zwiększona prędkość zapisu/odczytu (prawie podwójnie)
  • wykorzystanie całej pojemności dysku doi zapisu

Wady:

  • brak odporności na awarie dysku
  • łatwość utraty danych

Zastosowania:

  • zwiększenie szybkości operacji dyskowych na stacjach roboczych
  • obróbka dużych plików multimedialnych
  • dysk do przechowywania instalacji gier komputerowych

RAID_0

RAID 1

Do utworzenia tego typu macierzy potrzebne są 2 dyski twarde. W macierzy tego typu każdy blok danych jest zapisywany jednocześnie na obydwa dyski twarde (replikacja). RAID1 posiada pojemność najmniejszego dysku z macierzy oraz prędkość zapisu/odczytu najwolniejszego. Ten rodzaj macierzy jest zabezpieczeniem przed fizyczną awarią jednego z dysków macierzy. Zalety:

  • odporność na awarię pojedynczego dysku

Wady:

  • macierz ma pojemnośc najmniejszego dysku
  • prędkość operacji zapisu/odczytu jest na poziomie najwolniejszego dysku

Zastosowania:

  • miejsce pod instalację systemu operacyjnego serwera
  • kopie zapasowe
  • ważne dane

RAID_1

RAID 2

Do utworzenia tego typu macierzy potrzebne są minimum 3 dyski twarde. Dane na dyskach są dzielone na poziomie bitów i zapisywane jednoczenie na dwóch dyskach. Trzeci dysk przechowuje informacje o dotyczące korekcji błędów generowane za pomocą kodu Hamminga. Macierz jest odporna na awarię jednego z dysków. Ten rodzaj macierzy jest przestarzały i obecnie nieużywany. Został wyparty przez rozwiązania typu RAID 5 i 6. Zastosowania:

  • obecnie brak
  • wyparte przez lepsze rozwiązania w postaci RAID 5 i 6

RAID 3

Zasada działania podobna, jak w przypadku RAID2 z tą róznicą, że dane są zapisywane na poziomie pojedynczych bajtów, w macierzy znajduje się dodatkowy dysk, na którym zapisywane są informacje o parzystości. Tak samo jak w przypadku RAID2 ten poziom został szybko wyparty przez RAID 5 i 6. Zastosowania:

  • obecnie brak
  • wyparte przez lepsze rozwiązania w postaci RAID 5 i 6

RAID 4

Macierz tego typu wymaga minimum 3 dysków. Dane są dzielone na porcje o rozmiarze pojedynczego bloku (sektora) i zapisywane jednocześnie na 2 dyskach. Na trzecim dysku zapisywane są informacje o tzw. parzystości. W przypadku awarii jednego dysku w macierzy istnieje możliwość odbudowania w przypadku awarii dowolnego z dysków. Obecnie w praktycznych zastosowaniach wyparty przez RAID 5 i 6. Zastosowania:

  • obecnie brak
  • wyparte przez lepsze rozwiązania w postaci RAID 5 i 6

RAID_4

RAID 5

Macierz RAID 5 swoim działaniem zbliżona jest do macierzy RAID 4. Do jej utworzenia potrzebne sa minimum 3 dyski twarde (2 + 1). Różnica polega na sposobie zapisywania informacji o parzystości. Każda porcja danych posiada informację tego typu zapisaną na innyn z dysków w macierzy. Macierz RAID 5 jest odporna na awarię dowolnego jednego dysku. Jest to zalecany rodzaj macierzy w przypadku, gdy potrzebujemy rozwiązania z pojedynczą parzystością i prędkością bliską RAID 0 dzięki stripingowi danych. Zalety:

  • odporność na awarię jednego z dysków
  • wyższa prędkość zapisu/dczytu w porównianiu z RAID 1
  • tracona jest pojemność jednego dysku w macierzy

Wady:

  • niższa wydajność od RAID 0 spowodowana koniecznością wyliczania parzystości dla każdego bloku danych

Zastosowania:

  • storage dla baz danych
  • archiwizacja
  • magazyn danych dla aplikacji

RAID_5

RAID 6

Zasada działania zbliżona do RAID 5 - różnica polega na tym, że informacje o parzystości dla każdje porcji danych zapisywane są w podwójnie na dwóch różnych dyskach. Do utworzenie macierzy tego typu potrzebne są minimum 4 dyski twarde (2 + 2). Dostępna jest pojemność dwóch z nich w tym układzie. Zalety:

  • odporność na awarię dwóch dysków
  • wyższa prędkość zapisu/dczytu w porównianiu z RAID 1
  • tracona jest pojemność dwóch dysków w macierzy

Wady:

  • niższa wydajność od RAID 0 spowodowana koniecznością wyliczania parzystości dla każdego bloku danych

Zastosowania:

  • storage dla baz danych
  • archiwizacja
  • magazyn danych dla aplikacji
  • rozwiązania wysokiej dostępności

RAID_6

RAID 0+1

To macierz, będąca kombinacją dwóch macierzy RAID 0, które są połączone w macierz RAID 1. Łącznie do utworzenia macierzy tego rodzaju potrzebne są 4 dyski twarde. Dzięki takiemu połączeniu dostajemy zalety macierzy RAID 0 - szybsze operacje zapisu/odczytu, a także macierzy RAID 1 - odporność na awarię pojedynczego dysku. W przypadku awarii jednego dysku macierz staje się praktyczne macierzą RAID 0. Zalety:

  • szybkość RAID 0
  • prostsza w działaniu i implementacji od rozwiązań z parzystością (RAID 5, 6)

Wady:

  • większy koszt przechowywania danych w porównaniu do poprzednich rodzajów macierzy
  • lepszym wyoborem jest RAID 1+0

Zastosowania:

  • szybkie magazyny danych
  • serwery aplikacji

RAID_01

RAID 1+0

Idea macierzy RAID 1+0 jest podobna do RAID 0+1 - w tym przypadku dwie macierze RAID 1 są składnikami macierzy RAID 0. W takim układzie stripingowi poddawane są niewielkie ilości danych, które znajdują się na dwóch dyskach. W przypadku awarii jednego z dysków odbudowaniu ulega jedna "strona" macierzy. Zalety:

  • szybkość RAID 0
  • prostsza w działaniu i implementacji od rozwiązań z parzystością (RAID 5, 6)

Wady:

  • większy koszt przechowywania danych w porównaniu do poprzednich rodzajów macierzy

Zastosowania:

  • szybkie magazyny danych
  • serwery aplikacji
  • magazyny danych maszyn wirtualnych

RAID_10

 Inne poziomy RAID?

Opisane wcześniej rodzaje macierzy RAID są najczęściej spotykanymi rozwiązaniami w tym zakresie. Zdarzają się również wdrożenia bardziej złożonych konstrukcji, szczególnie jeśli chodzi o macierze zagnieżdżone. Przykłady innych rozwiązań to:

  • RAID 50
  • RAID 60
  • RAID 10+0

Czy macierz RAID wymaga całego dysku twardego?

W powyższych opisach jest mowa o ilości dysków twardych potrzebnych do utworzenia różnych macierzy RAID. Tymczasem warto mieć na uwadze, że macierze RAID mogą być również tworzone na poziomie logicznych partycji dyskowych. Na przykład majać 2 dyski tworzymy na nich po dwie partycje. Pierwsze dwie partycje z każdego dysku mogą być połączone w RAID 0, kolejne dwie w RAID 1. Taką możliwość oferują zarówno dedykowane sprzętowe kontrolery, jak i rozwiązania programowe dostępne w większości współczesnych systemów operacyjnych.

MDADM - RAID w Linuksie

Systemy operacyjne z rodziny Linux posiadają dedykowane oprogramowanie do tworzenia programowych macierzy RAID zwane mdadm. Oprogramowanie to dostarczane jest z niemalże każdą współczesną dystrybucją Linuksa i pozwala na tworzenie macierzy następujących typów:

  • RAID 0
  • RAID 1
  • RAID 4
  • RAID 5
  • RAID 6
  • RAID 10

Instalacja systemu CentOS 6.5 na macierzy RAID1

Instalacja na potrzeby artykułu została wykonana wewnątrz maszyny wirtualnej z dwoma dyskami twardymi /dev/vda i /dev/vdb. Utworzone zostały  następujące partycje:

  • /dev/vda1 i /dev/vdb1 - RAID1 jako /boot
  • /dev/vda2 i /dev/vdb2 - RAID1 jako /
  • /dev/vda3 i /dev/vdb3 - swap

Na poniższych rysunkach znajdują się zrzuty ekranu pokazujące procedurę instalacji systemu CentOS 6.5 na w ramach macierzy RAID1. 

Weryfikacja działania macierzy RAID

Weryfikacji działania macierzy programowej można dokonać poleceniem:

# cat /proc/mdstat

# watch cat /proc/mdstat # (polecenie watch wykonuje daną komendę co pewien okres czasu - domyślnie 2s)

Na rysunku poniżej znajduje się wynik dla poprawnie działającej macierzy.

Weryfikacja stanu macierzy Software RAID
Weryfikacja stanu macierzy Software RAID

             

Przywracanie macierzy RAID1 do działania

Teraz zastąpimy jeden z dysków macierzy pustym dyskiem w celu przedstawienia sposobu na regenerację programowej macierzy RAID zarządzanej poprzez program mdadm. Po wykonaniu tej operacji system uruchomi się poprawnie - stan macierzy pokazuje, że w każdej z dwóch macierzy pozostały tylko po jednej partycji - /dev/vda1 (md0) i /dev/vda2 (md1) (rysunek poniżej).

Symulacja uszkodzenia macierzy - usunięcie jednego z dysków
Symulacja uszkodzenia macierzy - usunięcie jednego z dysków

                Procedura odzyskania macierzy: 1. Na początek należy zweryfikować czy nowy dysk został wykryty. Na zrzucie ekranu poniżej widoczne są dwa dyski - /dev/vda oryginalny z partycjami utworzonymi podczas instalacji systemu oraz /dev/vdb nowy dysk, który należy podłączyć do macierzy.

Weryfikacja podłączonych dysków
Weryfikacja podłączonych dysków

  2. Zakładając, że nowy dysk jest identyczny możemy skopiować tablicę partycji ze starego dysku na pomocą polecenia:

# sfdisk -d /dev/vda | sfdisk --force /dev/vdb

3. Następnie należy dodać partycje z dysku /dev/vdb do istniejących macierzy, które uruchomiły się z jednym dyskiem:

# mdadm /dev/md0 --add /dev/vdb1

# mdadm /dev/md1 --add /dev/vdb2

4. Po wykonaniu powyższych poleceń obserwujemy stan odbudowywania macierzy md0 i md1 - może to trochę potrwać w zależności od rozmiarów partycji wchodzących w skład macierzy.

# watch cat /proc/mdstat
Odbudowa macierzy RAID
Odbudowa macierzy RAID

Alternatywne metody tworzenia RAID w Linuksie

W systemach operacyjnych z rodziny Linux istnieją również inne mechanizmy, które pozwalają na tworzenie konstrukcji zbliżonych w działaniu do macierzy RAID. Jednym z nich jest menadżer woluminów logicznych LVM. LVM oferuje zapewnia znacznie większą elastyczność w partycjonowaniu dysku w porównianiu do zwykłych partycji. LVM składa się z następujących elementów:

  • woluminów fizycznych PV, które są partycjami na fizycznych dyskach
  • grup woluminów VG, które są tworzone w obrębie woluminów fizycznych
  • woluminów logicznych LV, które są docelowymi partycjami z możliwością formatowania dowolnym systemem plików (woluminy logiczne tworzone są w obrębie grub woluminów VG)

Woluminy logiczne LV mogą być utworzone w formie struktury przypominającej macierz RAID - wspierane są poziomy 0, 1, 4, 5, 6, 10. Przykład utworzenia mirroru na bazie LVM (RAID1): 1. Zakładamy posiadanie 2 dysków z partycjami po jednej partycji na każdym /dev/sda1 i /dev/sdb1 2. Tworzymy wolumin fizyczny na partycjach

# pvcreate /dev/sda1 dev/sdb1

3. Tworzymy grupę woluminów datavg

# vgcreate datavg /dev/sda1 /dev/sdb1

4. Tworzymy wolumin logiczny datalv z obrębie grupy woluminów datavg z jedna kopią (mirrorem)

# lvcreate --type raid1 -m 1 -L 40G -n datalv datavg
lvcreate -L 50M -m1 -n mirrorlv datavg

Wolumin z mirrorem (RAID1) został utworzony - zainteresowanych tym rodzajem woluminów odsyłam do dokumentacji systemu RedHat Enterprise Linux 6. Konstrukcje podobne do programowego RAID dostępne są również na poziomie systemu plików. Linuksowy system plików Btrfs, który obecnie jest ciągle w fazie rozwoju oferuje możliwość tworzenia woluminów podobnych w działaniu do RAID0 i RAID1.

Programowy RAID w Windows

Systemy z rodziny Windows również posiadają wbudowane narzędzie do tworzenia macierzy programowych. W celu jego uruchomienia należy przejść do Panelu sterowania --> Narzędzia administracyjne --> Zarządzanie komputerem. W otworzonej aplikacji rozwijamy menu Magazyn - pojawia się Zarządzanie dyskami (rysunek) windows_raid1

Tworzenie macierzy RAID1 w Windows

Przedstawiony przypadek zakłada utworzenie macierzy RAID1 w systemie Windows na dwóch dodatkowych dyskach 10 GB każdy. 1. Należy zainicjować dyski klikając na każdym z nich prawym przyciskiem myszy i wybierając Zainicju 2. Pojawi się zapytanie o utworzenie tablicy partycji - wybieramy GPT jeżeli nasze dyski mają więcej niż 2 TB 3. Zainicjowane zostaną dwa dyski Dysk 1 i Dysk 2. Należy kliknąć na jednym z nich prawym przyciskiem myszy i wybrać Konwertuj na dysk dynamiczny - tylko dla dysków dynamicznych istnieje możliwość tworzenia woluminów zdublowanych i wykorzystania innych zaawansowanych funkcji. 4. Po konwersji na dysk dynamiczny klikamy prawym przyciskiem na dowolny z nowych dysków i wybieramy Nowy wolumin zdublowany 5. Uruchomi się kreator tworzenia nowego woluminu zdublowanego, który jest odpowiednikiem macierzy RAID1. [gallery type="slideshow" ids="2490,2491,2492,2493,2494,2495,2496,2497"]  

Podsumowanie

Macierze RAID są świetnym rozwiązaniem wykorzystywanym głównie tam, gdzie niezbędna jest odporność na awarie sprzętu. Tradycyjne dyski talerzowe często ulegają awariom w najmniej spodziewanym momencie dlatego wybór nadmiarowej macierzy RAID w przypadku serwerów jest konieczny. Typy macierzy zapewniające bezpieczeństwo w przypadku awarii sprzętowej to:

  • RAID 1 - awaria pojedynczego dysku z dwóch
  • RAID 5 - awaria dowolnego dysku z układu minimum trzech dysków w macierzy
  • RAID 6 - awaria dwóch dowolnych dysków
  • RAID 10 - awaria po jednym dysku z każdej "podmacierzy"

W przypadku stacji roboczych, gdzie potrzebna jest duża wydajność do pracy aplikacji oraz obróbki danych (szczególnie multimedialnych) warto zastanowić się nad macierzą typu RAID 0 jeżeli nie mamy możliwości zakupu wydajnych dysków SSD.

Administracja serwerami

Czy wiesz,że Kylos oferuje też usługę administracji serwerami? Skonfigurujemy Twój serwer i zadbamy o jego bezpieczeństwo. Chcesz wiedzieć więcej? Zapytaj nas.

Masz problem z serwerem?

Pozwól nam go rozwiązać.

Sprawdź jak skorzystasz nam współpracy z Kylos.

Dowiedz się więcej

Mogą Cię również zainteresować

comments powered by Disqus