wtorek, 3 sierpnia 2010

ISM - RAID




RAID


Dysk twardy zawiera części mechaniczne, które zużywają się lub mogą zostać uszkodzone. W rezultacie cały dysk przestaje pracować, a dane na nim zgromadzone zostają utracone.Są przeprowadzane pewne badania, które pozwalają stwierdzić jaka jest średnia długość życia dysków danego typu - wartość ta jest nazywana MTBF  (Mean Time Between Failure ) i podawana jest w godzinach. Należy jednak pamiętać że większa ilość dysków w serwerowni zwiększa prawdopodobieństwo że któryś z nich zostanie uszkodzony szybciej niż wynika to z MTBF.Przykładowo: Mając 100 dysków każdy z MTBF 750.000 godzin, można się spodziewać awarii dysku po 750.000/100 = 7.500h

RAID - Redundant Arrays of Intepended (inexpensive) disks = Pewna struktura złożona z dysków i sterującej logiką rozkładu danych na nich, która umożliwia zapewnienie bezpieczeństwa lub/i poprawy wydajności.

RAID array - urządzanie składające się z dysków , oraz hardware i software wspierający i implementujący RAIDa, umieszczone w jednej obudowie. Zwykle macierz  RAIDowa składa się z mniejszych "półek" które zawierają dyski, zasilacze i ewentualnie jeszcze jakiś hardware.

Pewien podzbiór, ze zbioru wszyskich dysków w RAID array, może być połączony ( logicznie ) w pewną całość nazywaną macierzą logiczna ( logical array ) lub RAID grupą ( RAID group / RAID set). Logiczne macierze są zawsze podzielone na logiczne volumeny ( logical volumes - LV ).
System operacyjny rozpoznaje wolumenty jako fizyczne dyski. LV są właśnie tymi objektami, które wystawiamy do hosta.


RAID Implementation:


Spotykamy dwa rozwiązania umożliwiające korzystanie ze struktur RAIDowych
  • Hardware ( dedykowana karta  z kontrolerem , umieszczona w hoscie lub w macierzy )
  • Software ( Część systemu operacyjnego , wydajność zależy od obciązenia CPU )

Funkcje kontorlera RAID:
  • Zarządza i definiuje konfiguracjami dysków w RAID grupach
  • Tłumaczy adresację żądań I/O pomiędzy dyskami logicznymi i fizycznymi
  • Przeprowadza odzysk danych w przypadku uszkodzenia
Wady software RAID - wpływ na wydajność hosta , nie wszyskie RAID levele wspierane , musi być zgodny z OSem


RAID Levels:

Podaję po angielsku, bo jest możliwe, że EMC wymaga definicji "słowo-w-słowo"

  • RAID 0  Striped array with no fault tolerance
  • RAID 1  Disk mirroring
  • Nested RAID (i.e 1 + 0 , 0 + 1, etc.)
  • RAID 3 Parallel access array wit dedicated parity disk
  • RAID 4 Striped array with independent disk and a dedicated parity disk
  • RAID 5 Striped array with independent disk and distributed parity
  • RAID 6 Striped array with independent disk and dual distributed parity




Rodzaj RAIDu wybiera się bazując na wymaganiach aplikacji co do wydajności i dostępności danych.
Ogólnie we wszystkie RAIDy tworzone są jako mieszanka 3 technik: stripingu , mirroringu i parity


Data Organization: Striping

RAID grupa lub RAID set do grupa dysków. Dyski są podzielone na strips : ciągłe przestrzenie o predefiniowanej wielkości. Stripe (e na końcu) jest to zbiór strips rozciągający się na wszyskie dski z danego RAID setu.
Strip size - określa liczbę bloków danych w stipie , i maksymalną liczbę danych jakie mogą zostać nagrane(lub odczytane) z jednego dysku , zanim kolejny dysk z RAID setu zostanie użyty.
Wszyskie strips w stipe mają identyczną wielkość.

Stripped RAID nie zapewnia dodatkowej ochrony ( mówiąc szczerze nawet zwiększa ryzyko utraty danych) , bardzo zwiększa jednak wydajność. 




RAID 0 - Stripping



Raid 0 strippuje wszystkie dane na wszystkie dyski z RAID setu. Nie ma utraty pojemności , zwiększona wydajność ( im więcej dysków w RAID secie tym większa ).
Nie zapewnia ochrony przed utratą dysku - w praktyce zwiększa nawet ryzyku utraty danych ponieważ awaria dowolnego dysku w stripe powoduje utratę danych na wszystkich dyskach wchodzących w jego skład.



RAID 1 - Mirroring






Raid 1 to mirroring , dane przechowywane są na dwóch dyskach , na każdym kopia tych samych danych. W przypadku gdy jeden dysk ulegnie uszkodzeniu, dane są nienaruszone na drugim dysku, a kontroler automatycznie kieruje na niego wszystkie I/O reqesty. 


Po zastąpieniu zespsutego dysku nowym , dane są automatycznie na niego kopiowane , ten proces jest transparentny dla hosta. 


Mirroring zapewnia ochronę danych przed fizycznym uszkodzeniem ale nie może zastąpić backupu. Logiczne uszkodzenie lub przypadkowe wykasowanie ważnych plików spowoduje ich utratę na obydwu dyskach.



Pojemność RAID1 jest dwa razy mniejsza niż sumaryczna pojemność dysków wchodzących w jego skład. Z tego powodu mirroring jest bardzo drogim rozwiązaniem i powinien być stosowany tylko przy krytycznych aplikacjach. Wydajność przy odczycie jest lepsza ponieważ następuje on z dwóch dysków naraz. Wydajność przy zapisie jest gorsza gdyż każde dane muszą być zapisane 2 razy ( co prawda dzieje się to równocześnie ale ostatecznie czas zapisu zawsze jest tym wolniejszym z wykonanych dwóch )




 Nested RAID -- 0+1 ( Stripping and Mirroring )




Raid 0+1 i Raid 1+0 są połączeniem strippingu i mirroringu , zapewniają redundancję danych i jednocześnie zwiększają wydajność. Te konfiguracje RAIDowe mogą składać się tylko z parzystej ilości dysków i musi ich być minimum 4

RAID 0+1 jest także zwany mirrored stripe. Podstawową strukturą jest stripe - dane są rozrzucane pomiędzy dwa ( lub większą ilość dysków ) a następnie mirrorowane. Jeżeli jeden z dysków zostanie uszkodzony, cały stripe jest utracony. Operacja odbudowy, po wymianie uszkodzonego dysku na nowy, nie ogranicza się tylko do niego ale do wszyskich dysków w stripie. To powoduje, wytworzenie dużej ilości I/O i naraża RAIDa na uszkodzenie drugiego dysku ( i w rezultacie utratę danych )


Nested RAID -- 1+0 (Mirroring and Striping)







RAID 1+0 jest także zwyany stripped mirroring. Składa się ( w podstawowej wersji ) z 4 dysków tworzących dwa RAIDy1 , te struktury następnie są stripowane. W normalnych warunkach RAID 1+0 ma podobne zalety co RAID 0+1 jego przewaga polega na działaniu podczas uszkodzenia dysku. W RAIDie 1+0 odbudowie podlega tylko jeden dysk ( nie wszystkie dyski ze stripie jak w RAID 0+1). Znacząco przyśpiesza to czas kopiowania i sprawia że RAID 1+0 jest używany zdecydowanie częściej niż 0+1

Największe korzyści z RAID 1+0 odniosą następujące aplikacje:
  • Systemy OLTP
  • Duże aplikacje messaging ( large messaging installation )
  • Bazy danych z dużymi wymaganiami dotyczącymi ilości I/O oraz dostępności

RAID Redundancy: Parity

Parzystość ( Parity ) - to metoda ochrony stripowanych danych przed uszkodzeniem dysku twardego, jednak o koszcie mniejszym niż w przypadku mirroringu. Do stripa zostaje dodany dodatkowy dysk na przechowywania parzystości. Jest to suma kontrolna, która umożliwia wyliczenie i odzyskanie danych po utracie jednego z dysków w stripie.  Rozwiązanie tańsze niż mirroring, gdyż nie potrzeba dublować wszystkich danych a jedynie dodać jeden nadmiarowy dysk.
Parzystość może być przechowywana na dedykowanym dysku lub rozmieszczona na wszystkich w stripie.
Za każdym razem kiedy dane są zmieniane , na nowo wyliczana i zmieniana jest także parzystość. Z matematycznego punktu widzenia, parzystość polega na wyliczeniu operacji logicznej XOR ( eXclusive OR ) Jeżeli pada jeden dysk , dane są uzyskiwane z informacji o parzystości oraz pozostałych dysków.

Zaletą parzystości jest jej koszt. Przy 5 dyskach, 4 są używane na dane , 1 na parzystość - potrzeba więc zapewnić o 25% większą pojemność. Przy 10 dyskach , 9 jest używanych na dane , 1 na parzystość - nadmiar przestrzeni jaką trzeba więc zapewnić spada do 10%. Dla porównania mirroring zawsze wymaga zapewnienia pojemności większej o 100%

Wadą parzystości jest jej wpływ na wydajność. Za każdym razem kiedy dane są zmieniane parzystość musi zostać przekalkulowana i zapisana na nowo. W przypadku uszkodzenia jednego z dysków , każda próba dostępu do danych jakie się na nim znajdowały wymaga przeliczenia ich z parzystości i danych na pozostałych dyskach - ma to duży wpływ na wydajność.


RAID 3 - Stripping with dedicated parity disk



RAID 3 stripuje dane aby zepewnić wysoką wydajność, a dodatkowo liczona jest parzystość, aby zapewnić ochronę przed uszkodzeniem. Parzystość jest przechowywana na dedykowanym do tego dysku.
RAID3 zawsze zapisuje dane pełnym stripe na wszystkich dyskach. Nie ma zapisów częściowych które zmieniają jedynie niektóre ze strips-ów w stripe. 
RAID 3 jest używany w aplikacjach generujących duże sekwencyjne odczyty/zapisy danych jak np: video streaming.


RAID 5 - Stripping with distributed parity




RAID 5 podobnie jak RAID 3 jest połączeniem strippingu i mirroringu , różnica polega na przechowywaniu parzystości. W RAID 3 znajduje się ona na dedykowanym dysku , w RAID 5 jest rozdystrybuowana pomiędzy wszystkie dyski - dzięki temu nie ma wąskiego gardła jakim był dysk z parzystością.

RAID 5 jest dobry rozwiązaniem dla następujących aplikacji: messaging, data mining, medium-performance media serving, and relational database management system (RDBMS) implementations in which database administrators (DBAs) optimize data access.



RAID 6 - Dual Parity RAID




RAID 6 działa podobnie jak RAID 5 ale posiada parzystość liczoną na dwa sposoby ( potrzebuje 2 dodatkowe dyski ). RAID 6 zabezpiecza przed utratą dwóch dysków w strukturze i jego implementacja wymaga użycia conajmniej 4 dysków. Wadą jest wydajność, obniżona w jeszcze większym stopniu niż ma to miejsce w przypadku RAID5 , dłużej także trwa proces odbudowy.


RAID Impacts on Performance

Zarówno mirroring jaki i parity wpływają na wydajność struktury RAIDowej. Każda pojedyńcza operacja zapisu zostaje w RAIDie zwielokrotniona - efekt ten nazywa się write penalty. W RAID 1 każdy zapis musi zostać wykonany na dwóch dyskach w parze dlatego write penalty=2 . Dla RAID 5 jedno polecenie zapisu może być równoznaczne z wykonaniem 4 akcji na fizycznych dyskach.

Jak to się odbywa:

Przyjmijmy, że nasz RAID5 składa się z 5 dysków ( 4* dane + parzystość)
Normalnie parzystość jest liczona w następujący sposób

Ep = E1 + E2 + E3 + E4 (XOR operations)

gdzie Ep - parzystość , E1 , E2 , E3 , E4 - odpowiadające sobie dane ( dane znajdujące się w jednym stripie) z dysków z danymi nr 1 , 2 , 3 , 4. Następnie wynik z tego "dodawania" ( XORowania ) danych czyli Ep jest zapisywany na 5 dysku przechowującym parzystość.

Co się dzieje kiedy do kontrolera przychodzi polecenie zapisu, przyjmijmy że na dysk nr 4? 

Kontroler musi oczywiście zapisać te dane oraz wyliczyć i zapisać nową wartość parzystości.
Kalkulacja nowej parzystości odbywa się w następujący sposób:

Ep nowa = Ep stara - E4 stara + E4 nowa (XOR operations)

gdzie "Ep nowa" - nowa wartość parzystości, "Ep stara" - poprzednia wartość parzystości , "E4 stara" dane które zostaną nadpisane przez "E4 nowa". Jeżeli prześledzimy ten proces to widać, że najpierw kontroler musi wykonać 2 operacje odczytu ( Ep stara i E4 stara ), następnie wyznaczyć wartość Ep nowa  i zapisać ją oraz nowe dane na dysk ( 2 operacje zapisu ). W sumie 4 "akcje" na dyskach fizycznych i stąd taka wartość write penalty dla RAID 5

Dla RAID6 wielkość ta ( i utrata wydajności ) jest jeszcze większa ponieważ trzeba policzyć i zapisać aż 2 parzystości. Write penalty dla RAID6 = 6


Hot Spares

Hot spare to dysk w macierzy na którym nie przechowujemy danych, a którego zadaniem jest, w razie uszkodzenia innego dysku, tymczasowo zająć jego miejsce. W zależności od implementacji możliwe są następujące metody odtworzenia RAIDa po awarii dysku z użyciem hot spare:

  • Jeżeli RAID z parzystością jest używany, dane są odbudowywane na hot spara z wykorzystaniem parzystości i danych z pozostałych dysków
  • W przypadku RAIDa z mirroringiem , dane są kopiowane z dysku który przetrwał na hot spare
Kiedy uszkodzony dysk zostaje wymieniony możliwe są dwa waritanty:
  • Hot spare zastępuje uszkodzony dysk permanentnie i przestaje być hot spare-m. Nowy hot spare musi być skonfigurowany na macierzy ( najprawdopodobniej z dysku który zastąpił dysk uszkodzony )
  • Po zastąpieniu dysku uszkodzonego nowym , dane z hot spare są kopiowane na ten nowy dysk , po czym hot spare znowu przechodzi w stan "oczekiwania" na kolejną awarię.
Hot spare automatycznie zastępuje uszkodzony dysk. Proces zastąpienia może także być zainicjowany przez użytkownika , który każe mu zająć miejsce innego działającego jeszcze dysku ( jeżeli mamy pewne podejrzenia, że coś jest z nim nie tak) .Często także macierz kontroluje pewne parametry dotyczące pracy dysków i jeżeli np. pewien próg błędów zostanie przekroczony automatycznie zastępuje działający jeszcze dysk hot spare-m.




Ok. Następna partia materiału przerobiona.
Mam nadzieję, że dalej będzie nieco bardziej odkrywczo, bo na razie ISM zawiera masę materiału, który każdy storage admin ma w krwi od urodzenia.

Następny temat w kolejce: Intelligent Storage System
Brzmi interesująco, ale coś mi się zdaje, że EMC będzie chciało nam wytłumaczyć z czego się składa macierz dyskowa.


Wszystkie ilustracje z tego postu pochodzą z Wikipedii:
http://en.wikipedia.org/wiki/Nested_RAID_levels
http://en.wikipedia.org/wiki/Standard_RAID_levels
http://pl.wikipedia.org/wiki/RAID



4 komentarze:

  1. "Należy jednak pamiętać że większa ilość dysków w serwerowni zwiększa prawdopodobieństwo że któryś z nich zostanie uszkodzony szybciej niż wynika to z MTBF"

    Z czego to wynika?

    OdpowiedzUsuń
  2. "Podaję po angielsku, bo jest możliwe, że EMC wymaga definicji "słowo-w-słowo""

    I jak było na egzaminie?
    Emc wymagałao def. słowo-w-słowo?

    OdpowiedzUsuń
  3. Ad. Komentarz nr 1.

    MTBF to wartość średnia i statystyczna. Jeżeli np: MTBF dla dysku firmy X = 1mln godzin, to nie znaczy że równo po upływie tego czasu dysk ulegnie uszkodzeniu. Awaria może następić i po 10min używania albo z drugiej strony nośnik może pracować 50lat i mieć się dobrze.
    Jeżeli jednak weźmiemy większą ilość tych samych dysków, to mimo iż niektóre będą się psuły szybciej niż ich MTBF, a część popracuje dłużej, to średnio powinno wyjść ok 1mln godzin na dysk.

    Dlaczego napsialem, że ze wzrostem ilości dysków spada nam MTBF?
    Otóż MTBF pojedyńczego dysku zostaje bez zmian (w naszym przypadku 1mln godzin) ale MTBF całej grupy dysków (rozumiany) jako średni czas że WSZYSKIE dyski w tej grupie są sprawne jest mniejszy.

    NP:
    Mam 2 dyski każdy MTBF=1mln h. MTBF tej pary = 0.5mln h, ponieważ statystycznie jeden zespuje się już po 0,5mln godz pracy, a drugi będzie pracował 1,5
    Mam 10 dysków to MTBF= 0,1mln
    itd...
    Mam milion dysków to w tej masie średnio co godzinę będzie jakaś awaria dysku i trzeba będzie przeprowadzić wymianę.

    Wyjaśniłem czy tylko zamotałem? Na urlopie i w sprartańskich warunkach ciężko jest składnie formułować myśli :)


    Ad Komentarz nr 2.

    Pamięć szwankuje, ale z tego co jestem sobie w stanie przypomnieć to nie trafiłem na takie pytania o "definicje" - a nawet jak były to nie trzeba było pamiętać słowo w słowo. Egzamin jest testem wyboru i nie trzeba wkuwać na pamięć, a potem przepisywać formułek, tylko wybrać tą poprawną spośród błędnych.

    OdpowiedzUsuń
  4. Ponownie dzieki za komentarz. :)
    Udanych wakacji

    OdpowiedzUsuń