wtorek, 31 sierpnia 2010

ISM - NAS - Network Attached Storage

Po dokładnym opisaniu środowiska SAN i protokołu FC, przyszła kolej na następny sposób na dostęp do danych - NAS. Zanim jednak skupimy się na samym NASie trochę teorii i historii na temat plików i dostępu do nich w środowisku sieciowym.

Plik (file) jest to zorganizowana struktura do przechowywania danych, widziana z poziomu systemu operacyjnego jako całość.

Współdzielenie plików (file sharing) to przechowywanie i dostęp do plików poprzez sieć. Przykładem współdzielenia plików jest np protokół FTP , gdzie transfer plików odbywa się poprzez system o architekturze klient/serwer, innym przykładem jest DFS ( Distributed file system ).
Typowym modelem współdzielenia plików jest wykorzystanie do tego specjalnych protokołów działających także w architekturze klient/serwer. Dwoma najbardziej znanymi protokołami do zdalnego dostępu i współdzielenia plików są NFS (dla systemów Unixowych) i CIFS ( dla systemów Windowsowych).


Jak zmieniały się metody współdzielenia plików:

Na początku komputery nie były połączone i wymiana plików odbywała się na dyskietkach lub płytach cd. Kolejny etap to połączenie komputerów w sieć i przesyłanie sobie plików, potem rozwiązania wykorzystujące serwery plików. Obecnie nie ma potrzeby angażowania dodatkowych hostów pełniących rolę dedykowanych serwerów plikowych, pliki można pobierać bezpośrednio z macierzy NASowych.

NAS ( Network Attached Storage ) - jest to urządzenie ( macierz ) podpięte do sieci (LAN) które jest w stanie współdzielić znajdujące się na nim pliki. Użycie NASa umożliwia zrezygnowanie z dodatkowej warstwy dedykowanych serwerów plików. NASy używają protokołu TCP/IP do przesyłania danych przez sieć, oraz protokołów CIFS i NFS dla zdalnego dostępu do plików. Kolejną zaletą używania NASów jest bardzo łatwa skalowalność takiego środowiska.
Urządzenia NAS mają zwykle wbudowane swoje własne systemy operacyjne zoptymalizowane do wymiany i udostępniania plików.


Zalety NASa:
  • dostęp do danych niezależny  od użytego OSa na systemie klienckim
  • większa wydajność
  • większa skalowalność
  • scentralizowane zasoby storage
  • ułatwione zarządzanie
  • wyższa niezawodność i dostępność
  • większa kontrola nad dostępem do danych

Składniki systemu NAS:
  • NAS head ( zawiera CPU i pamięć)
  • Karty sieciowe (NIC)
  • System operacyjny zarządzający NASem
  • Protokoły NFS I CIFS
  • Protokoły do zarządzania dyskami ( np: ATA, SCSI, FC)

Protokoły do współdzielenia plików:

NFS (Network File System):

Jest protokołem działającym w architekturze klient/serwer i pozwala jednemu hostowi przeglądać, przechowywac i zmieniąc pliki znajdujące się w zdalnej lokacji tak jakby były przechowywane na nim. Używa RPC (Remote Procedure Calls ) do komunikacji między hostami.
Wymaga zainstalowanego NFS klienta.

CIFS (Common Internet File System):

Podobniej jak NFS działa w architekturze klient/serwer , stanowi rozbudowaną wersję protokołu SMB ( Server Messaage Block). Wykorzystuje blokady (lock) do zapobiegania nadpisywania plików przy jednoczesnym używaniu go przez wiele osób. Schemat nazwenictwa w CIFS: \\server\share


Przepływ danych w środowisku NAS:

Z punktu widzenia klienta NAS:

Aplikacja ---> OS ---> I/O Redirect --->NFS/CIFS --->TCP/IP Stack ---> NIC
Karta sieciowa wysyła dane poprzez sieć IP

Z punktu widzenia NAS device:

Dane zostają odebrane przez kartę sieciową
NIC ---> TCP/IP Stack ---> NFS/CIFS ---> NAS OS ---> Network Protocol ---> Storage Interface
Następnie Storage Interface wysyła dane blokowo do macierzy.


NAS Implementations:

NAS może być zaimplementowane na dwa sposoby: zintegrowany i gateway

NAS zintegrowany zawiera w sobie zarówno NAS head jak i macierz na której dane są przechowywane , obydwa te komponenty mieszczą się w pojedyńczej obudowie i są zarządzane przez jedno oprogramowanie.

W gateway NASie - macierz i NAS head są niezależne , a między nimi znajduje się sieć FC SAN w której dane są przesyłane blokowo. Zarządzanie tego typu rozwiązaniem jest zwykle bardziej skomplikowane ( osobne systemy dla head i macierzy). Zaletą gateway NASów jest ich większa i łatwiejsza skalowalność w porównaniu do NASów zintegrowanych.

Integrated NAS:
Ten typ NASa może być bezpośrednio podpięty do sieci IP. To jak konkretne urządzenia są popodpinane w samym NASie zależy od jego modelu - NAS head może być podłączona do storage za pomocą wewnętrznych połączeń SCSI lub bezpośrednio do FC HBA.

Gateway NAS:
Front end w gateway NASie wygląda podobnie jak w rozwiązaniach zintegrowanych, backend to sieć SAN. Implementując tego rodzaju NASa należy przestrzegać standardowych praktyk stostowanych przy udostępnianiu danych poprzez SAN takich jak multipathing , niezależne fabrice i równomierne rozłożenie ruchu po wszystkich ścieżkach. Przed wdrożeniem gateway NASa dobrze jest przeanalizować istniejącą konfigurację SANa i rodzaj danych jakie w nim się przesyła. Rekomenduje się rozdzielić dysku używane w SANie od tych które będą używane przez NASa.





NAS mamy już z głowy ale w kolejnym rozdziale wróci nasz dobry znajomy sieć SANowska.
Tym razem jednak dane nie będą przesyłane światłowodami ale poprzez sieć IP ( tak jak NAS )
Mówiąc konkretnie przyjrzymy się takim rozwiązaniom jak iSCSI , FCOE i FCIP



piątek, 27 sierpnia 2010

ISM - Topologia i metody zarządzania siecią SAN



Mówiąc o sieci SAN w firmie, bardzo często ma się na myśli fabrica.
Fabric jest to wydzielona część sieci SAN nie połączona z innymi fabricami. W zdecydowanej większości przypadków mamy do czynienia z dwoma możliwościami. Albo wszystkie FC switche używane w firmie są ze sobą połączone ( nie koniecznie bezpośrednio ) i wtedy cała sieć SAN składa się z jednego fabrica, albo sieć SAN składa się z dwóch niezależnych części bliźniaczo do siebie podobnych - wtedy mamy tzw: dual fabric , który gwarantuje nam ciągłość działania nawet w przypadku jakiejś dużej awarii, która wyłączy nam całą jedną "podsieć" SANowską.

W tej "lekcji" skupimy się na pojedynczym fabricu, jego topologii i zarządzaniu nie zajmując się budową bardziej skomplikowanych sieci SANowskich.


Topologie fabrica: Core-Edge Fabric

Topologia fabrica może być opisana za pomocą ilości warstw (tiers ) jakie się w nim znajdują. Liczba warstw to ilość FC switchy przez jakie przechodzą dane wymieniane pomiędzy dwoma węzłami, biorąc pod uwagę najdalsze dwa w fabricu.
Topologia Core-Edge wyróżnia dwa rodzaje warstw. Edge tier zwykle składa się z małej i średniej wielkości FC switchy do któych przyłącza się hosty, pozwala to na łatwe dodawanie nowych węzłów do fabrica. Core tier to duże directory zapewniające wysoką dostępność. Wszystkie urządzenia storage są w tej topologii podpięte do switchy/directorów z core tiera , to samo tyczy się hostów z aplikacjami typu mission criticall. Jeżeli jest potrzebna jest rozbudowa sieci SAN , to do core tiera podłącza się dodatkowe switche edge tier-owe.
Można rozróżnić dwie pod-kategorie tej topologii:
  • single core - wszystkie hosty są podpięte do edge tier , cały storage do core tier.
  • dual core - stworzona przez dodanie dodatkowego core switcha. Ważne aby każdy core switch był połączony z każym edge switchem.

Topologie fabrica: Mesh

W topologii typu mesh każdy switch jest podłączony z innym switchem poprzez ISLe.  Podobnie jak w topologii core-edge można wyróżnić dwa podtypy:
  • Full mesh - każdy switch jest bezpośrednio podłączony do wszyskich pozostałych switchy w fabricu. Ta topologia jest możliwa do zastosowania tylko przy małych sieciach SAN ( do czterech switchy) . W takiej sieci I/O z dowolnego węzła do dowolnego innego będzie musiało przejść przez maksymalnie jedno łącze ISL ( odległość 1 hopa )
  • Partial mesh - nie wszyskie switche są bezpośrednio połączone, czasem wymagane jest więcej niż 1 hop aby dane osiągnęły cel. Węzły ( host i storage ) mogą być przypięte do dowolnego ze switchy.

Zarządzanie fabricem: Zoning

Zoning jest to funkcja switcha, która pozwala stworzyć grupy węzłów widzących się nawzajem w fabricu i potrafiących się ze sobą komunikować. Kiedy urządzenie loguje się do fabrica zostaje zarejestrowane na name serverze. Kiedy port loguje się do fabrica , wyszukuje (discovery) wszystkie inne urządzenia (porty). Zoning pozwala w takiej sytuacji do ograniczenia liczby wyszukanych portów jedynie do tych, które są w jednej zonie z logujących się portem.

Zone set ( lub zone configuration) jest to zbiór zon, w danej chwili wiele zone setów może być zdefiniowanych w fabricu ale tylko jeden z nich może być aktywny. Węzeł  ( host lub storage ) może być w wielu zonach jednocześnie.


Zarządzanie fabricem: Typy zoningu

Wyróżniamy 3 rodzaje zoningu:

  • Port zoning (hard zoning) - FC adresy fizycznych portów są używane do definiowania zon. Zmiany podłączenia urządzeń w fabricu wymagają przekonfigurowania zon.
  • WWN zoning (soft zoning) - Używa się WWNów do definiowania zon. Główna zaleta - elastyczność, możemy zmienić położenie urządzeń w fabricu bez konieczności zmieniania zoningu. 
  • Mixed mode - połączenie hard i soft zoningu
Zoning razem z LUN maskingiem jest używane do ustalania dostępu hostów do storage. Metody te są używane razem i działają na innych poziomach. Zoning pozwala hostowi zobaczyć dany storage (jako całość) , LUN masking działa na poziomie macierzy i pozwala "wystawić" do hosta wybrane LUNy.



Kolejny wpis będzie dotyczył NASów.
Do przeczytania...

poniedziałek, 23 sierpnia 2010

Przyszły zmiany, na szczęście nieduże

Ten wpis będzie wpisem administracyjnym , zaznaczającym pewne zmiany jakie rozpoczęły się w dniu dzisiejszym i dotyczą tego bloga.

Od pewnego czasu umieszczam tutaj notatki z moich przygotowań do podstawowego certyfikatu  EMC. To co publikuję to moje własne spostrzeżenia i opracowanie tego co znajduję w materiałach EMC przygotowujących do zdanie egzaminu. Używam ( a raczej używałem ) w swoich wpisach nazw "rozdziałów" takich jak w oficjalnym kursie, z którego korzystam, dodatkowo przejrzałem też ostatnio jeszcze raz wszystkie moje wpisy dotyczące tego tematu i spostrzegłem że często moje notatki są bardzo podobne do tego co pisze EMC.
Żeby być w porządku w stosunku do firmy, której materiałów korzystam, zgłosiłem się do nich i poprosiłem o opinię w sprawie mojego bloga. Przede wszystkim chodziło mi o ocenę, czy nie jest on zbyt zbliżony do materiałów z ich kursu i czy nie mają nic przeciwko publikowaniu ich opracowania, w takiej formie jak dotychczas.

Dzisiaj dostałem odpowiedź i na szczęście blog im się spodobał oraz nie mają nic przeciwko jego dalszym publikowaniu. Jedyna wskazówka jaką dostałem to sugestia abym zmienił tytuły poszczególnych wpisów tak aby nie były identyczne jak nazwy modułów i sekcji z samego kursu.

Tak też uczyniłem i tytuły postów dotyczących ISMa zostały zmodyfikowane.

To tyle...

ISM - Co piszczy w FC ?

Lesson: Fibre Channel Architecture

Ten wpis jest bardzo teoretyczny, ponieważ będzie dotyczył samego protokołu Fibre Channel.
Poznamy jaki jest zbudowany , jaką stosuje adresację i w jakie struktury możemy znaleźć w wysyłanych przez niego danych. Lekcja nie jest długa i choć zawiera sporo "pamięciowych" danych nie uważam żeby była bardzo ciężka do przyswojenia.


Przegląd architektury protokołu FC:

FCP - Fibre Channel Protocol - implementacja SCSI na sieci FC ( SCSI over FC ).
FCP ma następujące zalety:
  • może być wykorzystany do transmisji danych na długie dystanse
  • umożliwia podłączenie dużej ilości urządzeń w ramach jednej sieci
  • umożliwia przesył danych z prędkością do 8Gb/sek
FCP ma strukturę warstwową. Rola poszczególnych warstw jest następująca:

FC-4 Upper Layer Protocol:
Warstwa ta opisuje w jaki sposób tzw protokoły wyższych warstw ( ULP - Upper Layer Protocol ) np: SCIS, ESCON, IP są enkapsulowane w ramkach FC.
FC-3 Common Services
Warstwa usług typowych. Na chwilę obecną niewykorzystywana
FC-2 Transport Layer
Opisuje mechanizm routowania pakietów w protokole FCP. Definiuje także struktury w jakich przesyłane są dane  ( ramki , sekwencje, wymiany ). Tutaj obsługiwana jest adresacja urządzeń działających w SANie.
FC-1 Transmission Protocol:
Definicje szczegóły dotyczące transmisji danych z wykorzystaniem protokołu FCP. Opisuje kodowanie jakiemu poddawane są dane przed wysłaniem poprzez kabel. Jest to tzw kodowanie: 8b/10b , w którym  każde 8 bitów koduje i wysyła się jako10bitów.
FC-0 Physical Interface:
Tutaj zdefiniowane są fizyczne części protokołu FCP takie jak kable, łączniki itd...


Adresacja w protokole FC:

Adres FC zostaje automatycznie przyznany urządzeniu podczas jego logowania do fabrica. Zawsze ma 24 bity ale postać i znaczenie poszczególnych jego części zależy od roli węzła któremu go przyznano. Jeden ze switchy w fabricu pełni rolę Name Servera i jednym z jego zadań jest mapowanie adresu WWN ( który dany węzeł ma fizycznie i na trwale przypisany) do adresu FC nadawanego przy logowaniu do fabrica. 

Znaczenie adresu FC:

FC adres przyznany N_Port-owi:
Pierwszy bajt zawiera: domain ID ( 239 możliwości ) , następny bajt to Area ID - używa się go do zidentyfikowania grupy F_Portów do których podpięty jest dany N_Port , ostatni bajt definiuje konkretny F_Port do którego jesteśmy podłączeni.

FC adres przyznany NL_portowi:
Jeżeli pętla w której znajduje się NL port nie jest połączona ze switchem (private loop) to dwa pierwsze bajty adresu FC są równe zero, ostatni bajt oznacza adres na pętli (AL-PA )
Jeżeli pętla jest podłączona do switcha (public loop) do dwa pierwsze bajty oznaczają ID tej pętli w fabricu a ostatni jest adresem NL_portu na pętli (AL-PA)


World Wide Names:

WWN jest to unikalny (na skalę światową) i na stałe przypisany do urządzenia adres.
W środowisku FC możemy wyróżnić 2 rodzaje WWNów:
WWPN - World Wide Port Name
WWNN - World Wide Node Name



Struktura i Organizacja danych FC:

Dane w protokole FC są oragnizowane w 3 struktury:


  • Exchange operations - pozwala dwóm N_Portow ustanowić i wymienić pakiet "jednostek informacji". Jednostkami informacji w protokole FC są "sekwencje" ( sequence )
  • Sequence - jest to ciągły pakiet ramek FC wysłanych z jednego portu to innego.
  • Ramka - elementarna jednostka danych wysyłana w transmisji FC ( definiowana na poziomie FC-2 ), każda ramka zaiera do 2112 bajtów danych. 
Ramka FC składa się z :
SOF (4 bajty) | Nagłówek (24 bajty) | Dane ( 0-2122 bajtów) | CRC (4 bajty) | EOF (4 bajty)



Ten wpis jest w porównaniu do innych dość krótki, ale nie chcę mieszać dwóch lekcji w jednym.
Co prawda już tak wcześniej robiłem, a dodatkowo następny temat też jest w temacie sieci SAN i protokołu FC, ale doszedłem do wniosku, że krótsze wpisy są o wiele bardziej lekkostrawne.


niedziela, 22 sierpnia 2010

ISM - SAN - czyli LAN dla storage

Lesson: Fibre Channel SAN

Jednostki biznesowe, które jakby na to nie patrzeć są sponsorem działów IT, mają bardzo konkretne wymagania dotyczące pamięci masowych:
Po pierwsze chcą mieć dostęp do informacji wtedy, kiedy są one im potrzebne, w dużej mierze przypadków ( przy tzw aplikacjach mission critical) oznacza to dostępność aplikacji 24 * 7
Po drugie, sposób przechowywania i dostępu do informacji musi być zintegrowany z procedurami biznesowymi - oznacza to, że przykładowo okres przechowywania i bezpieczeństwo informacji muszą być zgodne z pewnymi normami ustalanymi przez biznes.
Po trzecie, architektura strorage musi być elastyczna i dostosowywać się do zmieniających potrzeb biznesu. Koszta utrzymania muszą być jak najmniejsze.

Odpowiedzią na te wymagania są sieci SAN:
SAN ( storage area network ) jest to dedykowana sieć do przesyłu danych na poziomie bloku. Przesył odbywa się pomiędzy hostami a urządzeniami storage poprzez FC switche ( zwane także potocznie fabricami ). Protokół używany w sieci SAN nazywamy FC ( Fibre Channel )
Sieć SAN zwykle do połączeń używa kabli światłowodowych ( front end - łączność  host-fabric-macierz ) , a także kabli miedzianych ( back end - łączność kontrolery-dyski ).
Obecnie najnowsze odmiany FC zapewniają prędkości 8 Gb/s ( około 1600MB/s )

Sieć SAN można podzielić na trzy części:
  • serwery
  • infrastrukturę sieciową
  • storage
Idąc dalej można te główne części "porozbijać" na jeszcze bardziej elementarne komponenty:
  • porty
  • kable
  • urządzenia łączące ( np: FC switche lub huby )
  • macierze 
  • oprogramowanie zarządzające SANem
W terminologi SAN, każde urządzenie takie jak host, macierz czy np: biblioteka taśmowa określane jest terminem węzeł  ( node ). Każdy węzeł wysyła lub odbiera informację od innego węzła lub węzłów - odbywa się to poprzez porty. Porty działają w trybie full duplex i mają transmit (Tx) i receive (Rx) linki.


Okablowanie SANa:

W sieciach SAN zwykle ( z małymi wyjątkami ) używa się światłowodów. Wyróżnia się wśród nich dwa typy: multi-mode i single-mode

W kablu wielomodowym ( multi-mode fiber MMF ) światło ma różne długości fali i odbija się od wnętrza kabla pod różnymi kątami. W MMF promienie światła interferują ze sobą i wzajemnie się wygłuszają - te zjawisko nazywamy modal dispersion i powoduje ono skrócenie dystansu na jaki można przesyłać sygnał - zwykle jest to nie więcej niż 500m
Kable MMF są podzielone ze względu na przepustowość na następujące - OM1 (62,5um )  , OM2 ( 50um) , OM3 (50um).

Kabel jednomodowy ( single-mode fiber SMF ) przewodzi jedynie światło o jednej długości fali. Typowa średnica takiego kabla wynosi 9 mikronów ( od 7-11 mikronów ). W kablach SMF zjawisko modal dispersion występuje w bardzo ograniczonym stopniu, co pozwala na przesyłanie danych na odległości do 10km.

Używa ( lub używało się ) trzech typów złączek na kable światłowodowe:
  • SC (Standard Connector ) - prędkości do 1 Gb/s
  • LC ( Lucent Connector ) - powyżek 1 Gb/s
  • ST  ( Straight Tip ) - często używane w FC patch panelach

    SFP ( Small Form-factor Pluggable ) to port w który wkłada się złączki FC. Wspiera przesył danych do 10 Gb/s . Zastąpił popularne kiedyć GBIC-e.


    Interconnecting devices:

    Wyróżnić można następujące typy urządzeń służących do łaczenia węzłów w sieci SAN:
    • hub
    • switch
    • director
    Huby działają podobnie jak huby ethernetowe czyli łączą fizycznie węzły, które dzielą ze sobą jedno pasmo i jedną przepustowość.
    Switch także działa analogicznie jak jego odpowiednik w sieci LAN i jest w stanie przesłać dane które otrzyma do węzła docelowego
    Director jest zaawansowanym switchem, zwykle posiada więcej portów a także zabezpieczenia pozwalające na nieprzerwane działanie nawet po wystąpieniu najróżniejszych usterek i awarii sprzętu.

    Zoning - zestawianie zon to ustalanie które porty w sieci SAN "widzą" się wzajemnie.


    Topologie SAN: Point to Point ( Pt-to-Pt )

    W topologi Pt-to-Pt storage jest bezpośrednio podłączony do hostów. Logicznie taka topologia niczym nie różni sie od połączeń DAS i ma te same wady ( ograniczona skalowalność, tylko jeden host ) i zalety ( tania , łatwa w implementacji ) 


    Topologie SAN: Fibre Channel Arbitrated Loop ( FC-AL )

    W topologi FC-AL wszystkie urządzenia są połączone w pętlę i dzielą jedną magistralę. Nie jest to jednak typowa topologia pierścienia ( ring ), ma także dużo cech z topologii gwiazdy (star ). Poszczegółne węzły nie są połączone ze sobą ale z centralnym Hubem.


    Cechy FC-AL:

    • wszystkie urządzenia dzielą jedną przepustowość. Tylko jedno z nich może wykonywać operacje I/O w danym momencie ( wymusza to istnienie mechanizmu arbitrażu, który wskazuje który węzeł może w danych momencie być aktywny )
    • możliwe jest podłączenie do 127 urządzeń
    • dodawanie/usuwanie urządzeń wymaga re-inicjalizacji pętli co powoduje chwilowe przerwanie całej wymiany danych


    Mechanizm transmisji w FC-AL:
    Kiedy węzeł w FC-AL zamierza wysłaćdane wpierw wysyła ramkę arbitrażową ( arbitration - ARB ) po kolei do wszytkich węzłów w pętli. Jeżeli dwa węzły naraz chcą uzyskać kontrolę, pozwolenie na to dostaje ten z większym priorytetem. Ten priorytet jest wyznaczany na podstawie adresu w pętli ( AL-PA ) i ID pętli.
    Kiedy węzeł starający się przejąć pętlę dostanie swoje własne ARB, wtedy może nadawać.


    Topologie SAN: Fabric Connect ( FC-SW )

    W tej topologii węzły są połączone ze sobą za pomocą switchy i tworzą tzw fabric. Fabric to logiczna struktura do której należą wszystkie węzły mogące komunikować się między sobą. Każdy switch w fabricu posiada unikalny identyfikator domeny.
    Każdy port w fabricu posiada unikalny 24 bitowy adres.

    Mechanizm transmisji w FC-SW:
    Do kierowania ruchem w fabricu służą switche. Potrafią one ( w odróżnieniu od hubów ) skierować dane przychodzące do nich na docelowy port.

    Rodzaje portów:
    Wyróżnia się następujące typy portów:


    • N_port - port znajdujący się w węźle (node) , może to być port na karcie HBA w hoście lub w kontrolerze na macierzy. Port N łaczy się z portem F na switchu
    • NL_port - port na hoście lub macierzy ale działający w topologi FC-AL ( node loop port )
    • E_port - expansion port , port łączący switch z innym switchem w fabricu za pomocą połączenia InterSwitch Link ( ISL )
    • F_port - port na switchu łączący się z portem N na hoscie lub macierzy
    • FL_port - port na switchu łączący się z FC-AL. Ten port komunikuje się z NL_portami. Pętla FC-AL która jest podłączona do switcha staje się częścią fabrica i nazywamy ją public loop. Pętla FC-AL nie podłączona do fabrica, nazywana jest private loop.
    • G_port - port który może być zarówna E_portem jaki i F_portem ( generic port )
    ISL ( Inter Switch Links )
    Połączenia swich-switch mające kilka funkcji, z czego główną jest rozbudowa fabrica o nowe węzły.

    Typy logowań w SANie:

    • Fabric Login (FLOGI) - odbywa się pomiędzy N portem a F portem. Urządzenie wysyła FLOGI ramkę ze swoim WWNN ( World Wide Node Name) i WWPN ( World Wide Port Name ) na adres login- usługi : FFFFFE. Switch odsyła Accept (ACC) ramkę i przydziela FC adres dla urządzenia. Zaraz po FLOGI N port zrejestruje siebie na switchu za pomocą WWNN, WWPN i przydzielonego FC adresu.
    • Port Login (PLOGI) - odbywa się pomiędzy dwoma N_portami i jest zestawieniem sesji, przed wymianą danych. Inicjator port wysyła PLOGI ramkę do portu celu, który to akceptuje i odsyła ACC ramkę.
    • Process Login (PRLI) -odbywa się pomiędzy dwoma N_portami. Jest powiązany z wyższymi warstwami protokołu FC ( ULP - upper layer protocols ), takimi jak na przykład SCSI.


    Kolejna lekcja będzie przebiegała w podobnej tematyce - będzie to dokładne opisanie protokołu FC i jego warstw. Jeszcze dalej również nie uciekniemy od SANów - przyjrzymy się trochę więcej jego topologią oraz mechanizmowi zoningu.
    Jak na razie czas iść spać, na zegarku prawie 1 w nocy, a jutro rano, mimo iż niedziela czeka mnie pobudka.


    poniedziałek, 16 sierpnia 2010

    ISM - DAS i SCSI ( dziwna para )

    Zaczynamy naukę z drugiej części materiałów przygotowujących do egzaminu ISMa.
    Kolejna sekcja ma nazwę: "Storage Networking Technologies and Virtualization". Networking to oczywiście sposoby i topologie podłączenia urządzenia storage do hosta , omówione zostaną najbardziej podstawowe trzy czyli DAS, NAS , SAN , oprócz tego sprawdzimy co to takiego jest CAS a także przyjrzymy się nieco dokładniej protokołom przesyłu danych używanych w storage takich jak SCSI i FC

    Na początku omówimy rodzaje podłączenia macierzy do serwerów

    Lesson: Direct Attached Storage

    DAS jest to sposób ( topologia/architektura ) połączenia macierzy z hostem, gdzie te dwa urządzania są ze sobą bezpośrednio spięte. DAS może być wewnętrzny lub zewnętrzny.
    W DAS wewnętrznym urządzenia storage ( dyski , napędy taśmowe ) zwykle umiejscwione są w jednej obudowie z komponentami serwerowymi ( procesor, pamięć , płyta główna ). Prędkości połączenia są duże, ale odległości bardzo ograniczone.
    DAS zewnętrzny to bezpośrednie połączenie serwera i macierzy. Zwykle jest to połączenie SCSI lub FC.

    Zalety DAS:
    • Tani w implementacji i używaniu
    • Prosty w zarządzaniu
    • Łatwy do implementacji

    Wady DAS:
    • Ograniczona skalowalność ( mała ilość urządzeń podłączanych do jednego hosta)
    • Małe odległości
    • Możliwość przypisania danego urządzenia storage tylko do jednego hosta

     Lesson: Introduction to SCSI

    SCSI to interfejs używany do komunikowania się pomiędzy różnymi rodzajami urządzeń. Jest używany głównie do komunikacji hostów z dyskami twardymi i napędami taśmowymi ale może również być wykorzystany np do podłączenia np: drukarek.
    SCSI zostało zdefiniowane w 1986r ( SCSI-1) i pozwalało wtedy na transfer z prędkością 5 MB/sek na odległość do 6m, z biegiem czasu prędkość z jaką działało SCSI rosła i aktualnie najnowsza wersja SCSI ( SCSI-5) obsługuje 640 MB/sek.
    Podczas prac nad SCSI-2 ustanowiony został standard dotyczący komend jakie wspierać będzie ten interfejs: common command set (CCS)

    Architektura SCSI ( na przykładzie SCSI-3):

    Można wyróżnić w niej 3 główne części/warstwy:

    • SCSI-3 command protocol - definicje komend które są wspólne dla wszyskich urządzeń korzystających z protokołu SCSI, a także unikalnych dostępnych jedynie niektórym rodzajom urządzeń
    • Transport Layer protocols - definiuje sposób w jaki urządzania wymieniają informacje
    • Physical Layer interconnects - opis warstwy fizycznej, zawiera takie aspekty jak typ i siła sygnałów elektrycznych 
    SCSI działa w architekturze klient-serwer,przy czym urządzenia pełniące rolę serwera nazywamy targetem, o kliencie mówi się inicjator. Inicjator wywołuje komendy SCSI i przekazuje je do targetu, który po przetworzeniu zwraca mu rezultat.

    SCSI Target jest dodatkowo podzielone na tzw logiczne urządzenia - LUNy ( Logical Unit Number ) - de facto to LUN nie Target jest celem komend SCSI wydawanych przez inicjator i to on je przetwarza. LUN składa się z dwóch części: device server i task manager.

    Każde polecenie SCSI zawiera CDB ( Command Descriptor Block ). CDB opisuje  rozkaz który ma być wykonany oraz wszystkie parametry jakie są potrzebne do jego zdefiniowania.

    Każde urządzenie SCSI, można przyporządkować do jednej z czterech grup, w zależności od ilości i rodzaju portów (fizycznych) jakie posiada:

    • target model ( urządzenie posiadające tylko porty target )
    • initiator model ( urządzenie posiadające tylko porty inicjatora )
    • combined model (urządzenie posiadające porty mogące być i targetem, i inicjatorem)
    • target model with multiple ports ( urządzenie może naraz obsługiwać polecenia od wielu inicjatorów)

    Adresowanie SCSI:

    Do jednej szyny SCSI może być podłączone do 8 ( narrow SCSI ) lub do 16 ( wide SCSI ) urządzeń.
    Każde z nich dostaje tzw: SCSI ID, które stanowi jego adres na szynie. SCSI ID jest numerem z zakresu 0-7 dla narrow SCSI i 0-15 dla wide SCSI. Wartość adresu ( czyli ID ) oznacza także priorytet jaki ma dane urządzenie. Dla narrow SCSI maksymalny priorytet to ID=7 a następnie 6,5 itd aż do najniższego równego 0 . Przy wide SCSI aby zachować kompatybilność wstecz obowiązuje ta sama kolejność czyli 7,6,5... 0 a następnie 15 , 14 , ...,10. Inicjator zwykle ma ID = 7.
    SCSI ID jest automatycznie przyznawane urządzeniom podłączającym się do szyny SCSI.

    W systemach unixowych często używa się tzw: adresowania ctd -adres "urządzenia" składa się wtedy z 3 części: c - kontoler ( czyli inicjator - np: port na karcie HBA ) , t - target ( konkretny target na szynie SCSI ) , d - LUN w danym targecie.





    Zarówno temat dotyczący DASu jak i SCSI są dość elementarne ( dla kogoś pracującego jako admin storage ). DAS to po prostu serwer podłączony bezpośrednio ( bez użycia sieci ze switchami ) do macierzy ( czy ogólniej urządzenia storage ). Natomiast protokół SCSI jest chyba najpopularniejszym protokołem storage jaki jest używany. Co prawda rzadko się już spotyka takie na przykład macierze "czysto" SCSI ( FC , SAS , iSCSI i inne wyparły ten rodzaj połączenia ), ale sam protokół ma się dobrze i tak naprawdę we wszystkich połączeniach FC  w środku mamy enkapsulowane stare i poczciwe komendy SCSI.

     Kończymy z DAS i SCSI i idziemy dalej...
    A dalej SAN

    niedziela, 8 sierpnia 2010

    ISM - Inteligenty system storage - czyli jak EMC definiuje macierz dyskową

    Intelligent Storage System


    Intelligent Storage System ( ISS ) jest macierzą RAID z wbudowanymi dodatkowymi opcjami i możliwościami , które pozwalają na utrzymanie dużej wydajności oraz optymalizację ruchu I/O z i na dyski.

    Zalety jakie ISS ma w porównaniu do JBODów i "zwykłych" macierzy RAID:
    • Zwiększona pojemność,
    • Zwiększona wydajność,
    • Łatwiejsze zarządzanie,
    • Zwiększona dostępność i ochrona danych,
    • Zwiększone wsparcie dla procesów zachowania ciągłości ( Bussiness Continuity ),
    • Zwiększone bezpieczeństwo i kontrola nad dostępem do danych

    ISS, składa się z 4 kluczowych elementów:
    • frond end
    • cache
    • back end
    • physical disks
    Żądanie I/O wysłane przez hosta najpierw przychodzi na porty front endu , potem idzie do cache-a , a następnie poprzez back-end zostaje wysłane na dyski fizyczne.


    Front End

    Front end jest interfejsem pomiędzy macierzą a hostem. Składa się z dwóch głównych komponentów:
    Portów front-endowych i kontrolerów front-endowych. Front-end port pozwala hostowi podłączyć się do ISSa. Każdy port jest w stanie obsłużyć jeden wybrany protokół transportu ( np: SCSI , FC , iSCSI itd.)
    Front-end kontroler kieruje dane do i z cachu poprzez wewnętrzną magistralę danych. Kiedy dane zostają nagrane w cache kontroler wysyła do hosta potwierdzenie.
    Kontrolery optymalizują ruch I/O używając algorytmów kolejkowania poleceń ( command queuing algorithms)

    Front End Command Queuing

    Kolejkowanie danych (command quequing) jest funkcjonalnością zaimplementowaną w front-end kontrolerach. Pozwala ona na zmianę kolejności żądań I/O jakie są wysyłane na dyski w porównaniu do tej w jakiej przyszły od strony hosta.
    Najbardziej znane algorytmy kolejkowania są następujące:
    • First In First Out (FIFO) - standardowy algorytm ( czy raczej jego brak) , polecenia są wykonywane w takiej kolejności w jakiej przybyły do kontrolera
    • Seek Time Optimization - Kolejność wykonywania poleceń jest zmieniana w taki sposób aby ograniczyć do minimum ruch głowicy R/W.
    • Access Time Optimization - Kolejność wykonywania poleceń jest zmieniana w taki sposób aby zminimalizować czas dostępu do danych. Algorytm bierze pod uwagę ruch głowicy oraz ruch obrotowy talerza aby ustalić optymalną kolejność wykonywania poleceń.


    Cache

    Zadaniem cache jest przyśpieszyć i zoptymalizować wydajność przetwarzania żądań I/O. Jest zbudowany z pamięci półprzewodnikowej, na której dane są tymczasowo zapisywane, aby zmniejszyć czas potrzebny do obsługi żądań I/O ze strony hosta. Użycie pamięci cache pozwala na szybsze obsłużenie I/O.

    Write cache:

    Operacje zapisu umieszczane w cache są obsługiwane ( z punktu widzenia hosta ) dużo szybciej niż gdyby miały zapisywane na dyskach. Dodatkowo "niewielkie" zapisy mogą być łączone w cache w większe, sekwencyjne i zapisywane na dyskach dużymi partiami.
    Operacje zapisu w cache mogą być zaimplementowane w następujący sposób:
    • Write-back cache - dane są umieszczane w cache i od razu potwierdzenie jest wysyłane do hosta. Później zapisane dane są wysyłane na dyski fizyczne (de-staged). Operacje zapisu są dużo szybsze, ale istnieje niebezpieczeństwo, utraty danych, w wypadku awarii cache.
    • Write-through cache - dane są umieszczane w cache i natychmiast zapisywane na dysku, po czym potwierdzenie jest wysyłane do hosta. Operacje te trwają dłużej , ale szansa utraty danych jest znacznie zredukowana.
    Cache może być pominięty, jeżeli żądanie I/O jest bardzo duże.Jeżeli pojedyncze I/O przekroczy pewną ustawioną wielkość zwaną "write aside size", to dane są zapisywane bezpośrednio na dysk.

    Read cache:

    Kiedy host wysyła żądanie odczytu, front-end kontroler sprawdza czy potrzebne dane są w cache. Jeżeli tak, to nazywamy taką sytuację "read cache hit" lub "read hit" i dane są przesyłane bezpośrednio do hosta, bez angażowania dysków. Jeżeli danych nie ma w cache, to mamy do czynienia z "cache miss" i trzeba sięgnąć do dysków. Back end kontroler pobiera wymagane dane, po czym zapisuje je na cache , z cache dane idą do oczekującego na nie hosta. Cache miss zwiększa czas odpowiedzi. Jeżeli żadania odczytu są sekwencyjne, wtedy macierz używa algorytmu nazywanego pre-fetch lub read-ahead.  Polega on na pobraniu większej ilości danych, niż to potrzeba i umieszczeniu ich w cache. Wielkość "nadmiarowych" danych może być stała "fixed pre-fetch" lub zmienna "variable pre-fetch". Wydajność odczytu mierzy się często współczynikiem "read hit ratio"  lub "hit rate" zwykle wyrażonym w %.

    Algorytmy zarządzania cache:

    Cache ma ograniczoną wielkość , dlatego bardzo ważne jest aby dane które się w nim znajdują, były danymi, do których często sięga host. Istnieją dwa główne algorytmy zarządzania i czyszczenia cache:

    • Least Recently Used (LRU):  z cache usuwane są te strony pamięci, które nie były wykorzystywane przez długi czas.Ten algorytm zakłada, że dane, które długo nie były potrzebne hostowi, dalej nie będą używane.
    • Most Recently Used (MRU): Ten algorytm usuwa z pamięci te dane, które ostatnio były używane. Opiera się na założeniu, że skoro host "poprosił" o pewne dane, to nie będzie ich ponownie potrzebował.

    Cache: Watermarking

    Jeżeli cache zaczyna się wypełniać, system musi usunąć (flushing) z niego tzw: dirty pages, czyli te dane które jeszcze nie zostały zapisane na dyski. Na macierzy ustawia się dwa znaczniki, wysoki (high watermark) i niski (low watermark). Wysoki znacznik mówi w którym momencie ( w jakim % zajętości cache ) macierz zaczyna zrzucać dirty pages na dyski , niski znacznik mówi przy jakiej zajętości ten proces się kończy.


    Ogólnie macierz stosuje 3 rodzaje "czyszczenia cache":
    • idle flushing - zachodzi, gdy poziom utylizacji cache jest pomiędzy low a high watermarkiem
    • high watermark flushing - zachodzi, gdy współczynik utylizacji jest większy niż high watermark. Macierz przeznacza wtedy dodatkowe zasoby do przyśpieszenia zrzucanie danych na dyski.
    • Forced flushing - zachodzi, gdy współczynik utylizacji cache zbliża się do 100%. Jest to najintensywniejsze i najbardziej obciążające wydajność czyszczenie.
    Burst smoothing - absorbowanie przez cache dużych nagłych i chwilowych wzrostów I/O (bursting)

    Cache Data Protection

    Utrata danych znajdujących się w cache przed ich nagraniem na dysk powoduje, że dane te są tracone niedwracalnie. Aby się przed tym zabezpieczyć stosuje się 2 metody ochrony:
    • Cache mirroring : Każdy zapis do cache jest przechowywany w dwóch odrębnych miejscach, na dwóch niezależnych kartach/układach. Mirrorowany jest jedynie write cache,  read cache zawsze jest nagrany na dyskach, więc nie ma potrzeby aby go dublować. Przy mirrorowaniu cache, należy uważac na cache coherency, czyli zapewnienie, że jest on w obydwu miejscach identyczny.
    • Cache vaulting :  W razie awarii zasilania ISS mają baterie, które podtrzymują działanie cache. Jednak w przypadku przedłużającego się braku zasilania, mogą one się rozładować, co w efekcie doprowadziło by do utraty danych. Aby temu zapobiec, macierz ma specjalny zestaw dysków, zwanych vault drives, na który przegrywana jest zawartość cache, w przypadku utraty zasilania.


    Back End

    Back end jest interfejsem pomiędzy cache, a fizycznymi dyskami. Składa się z dwóch komponentów: back end portów i back end kontrolerów. Kontrolery są używane do przesyłania danych z cache na dyski, odługują także wykrywanie i korekcję błędów, oraz zapewniają funkcjonalność tworzenia struktur RAIDowych. Dla zapewnienia większej wydajności, oraz dostępności ISS zwykle posiada parę kontrolerów i wiele portów.


    RAID Sets and LUNs

    Dyski fizyczne lub grupy dysków w RAIDzie mogą być podzielone (logicznie) na kawałki zwane logicznymi wolumenami lub LUNami (Logical Unit Number). LUN jest tym co zostaje wystawione do hosta i prezentuje mu się jako fizyczny dysk. W rzeczywistości LUN zajmuje po kawałku każdego dysku jaki wchodzi w skład Grupy RAIDowej na której się znajduje. Rozmiar LUNa może być zwiększony poprzez połączenie go z innym LUNem. Taka nowa struktura nosi nazwę meta-LUN.



    LUN Masking

    Maskowanie to przydzielanie dostępu hostom do poszczególnych LUNów.





    Dotarliśmy na koniec pierwszej partii (sekcji) materiału przeznaczonego dla ISMa. Przed nami jeszcze trzy...
    Skomplikowanie i ilość materiału w nich myślę, że będzie podobna - czyli sprawy raczej elementarne czasem ze wchodzeniem dość głęboko w szczegóły i definicje.
    Moduł, który zaczniemy przerabiać w następnym wpisie ma tytuł: Storage Networking Technologies and Virtualization


    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