Sprzętowy i programowy RAID
Systemy RAID (Redundant Array of Inexpensive Disks) są implementowane na jeden z dwóch podstawowych sposobów: programowo lub za pomocą dedykowanego sprzętu. Obie metody są jak najbardziej wykonalne i mają swoje zalety.
W segmencie małych firm, gdzie dominują systemy oparte na architekturze Intel i AMD oraz systemy operacyjne Windows, sprzętowy RAID jest tak powszechny, że wokół programowego RAID narosło wiele nieporozumień. Wynika to w niemałej mierze, jak zobaczymy, z bogactwa oszukańczych produktów programowego RAID sprzedawanych jako dedykowany sprzęt, potocznie zwanych “Fake RAID.”
Gdy RAID był po raz pierwszy opracowany, był używany w formie programowej na wysokiej klasy serwerach korporacyjnych pracujących pod kontrolą systemów, takich jak zastrzeżony UNIX, gdzie systemy były niezwykle stabilne, a sprzęt bardzo wydajny i niezawodny, co sprawiało, że programowy RAID działał bardzo dobrze. Wczesny RAID koncentrował się głównie na lustrzanym RAID lub bardzo uproszczonym parzystościowym RAID (jak RAID 2), który miał niewielki narzut.
W miarę jak zapotrzebowanie na RAID zaczęło przenikać do mniejszego segmentu serwerów i gdy parzystościowy RAID stawał się coraz popularniejszy, wymagając większej mocy obliczeniowej, okazało się, że słabsze procesory w przestrzeni x86 były znacząco obciążone przez przetwarzanie RAID, szczególnie RAID 5. To, w połączeniu z prawie żadnym systemem operacyjnym szeroko stosowanym na tych platformach nie posiadającym implementacji programowego RAID, doprowadziło do naturalnego rozwoju sprzętowego RAID – płyty z procesorem odciążającym (podobnej do GPU dla grafiki), posiadającej własny kompletny komputer z procesorem, pamięcią i własnym oprogramowaniem układowym.
Sprzętowy RAID bardzo dobrze rozwiązał problem narzutu RAID w przestrzeni serwerów x86. W miarę jak procesory stawały się coraz wydajniejsze, a pamięć mniej deficytowa, popularne systemy operacyjne x86, takie jak Windows Server, zaczęły oferować opcje programowego RAID. Konkretnie, programowy RAID Windows był znany jako słaba implementacja RAID i był dostępny tylko w serwerowych wersjach systemu operacyjnego, co spowodowało brak docenienia programowego RAID w środowisku administratorów systemów pracujących głównie z Windows.
Ze względu na historyczne implementacje w przestrzeni serwerów korporacyjnych i komercyjnej przestrzeni x86, wytworzyło się naturalne rozróżnienie między dwoma rynkami, wspierane początkowo przez technologię, a później czysto przez ideologię. Jeśli porozmawiasz z administratorem systemu w przestrzeni komercyjnej, prawie zawsze usłyszysz, że sprzętowy RAID to jedyna opcja. I odwrotnie, jeśli porozmawiasz z administratorem systemu w przestrzeni serwerów mainframe, RISC (Sparc, Power, ARM) lub EPIC (Itanium) (czasem nazywanych serwerami UNIX), często spotkasz się ze zdziwieniem, gdyż sprzętowy RAID nie jest dostępny dla tych klas systemów – programowy RAID jest tam po prostu oczywistością. Żadna ze stron wydaje się nie mieć rzeczywistej wiedzy o sytuacji tej drugiej, a skrzyżowanie zestawów umiejętności między tymi dwiema grupami było stosunkowo rzadkie, aż do niedawna, gdy korporacyjne platformy UNIX, takie jak Linux, Solaris i FreeBSD, stały się bardzo popularne i dobrze rozumiane na komercyjnych platformach sprzętowych.
Aby jeszcze bardziej skomplikować sprawę w przestrzeni serwerów komercyjnych, w celu wypełnienia próżni pozostawionej przez brak programowego RAID od dominującego dostawcy systemu operacyjnego dla rynku systemów nieserwerowych, przy jednoczesnej próbie dotarcia do mniej technicznie zaawansowanych odbiorców, duża liczba dostawców zaczęła sprzedawać karty kontrolera bez funkcji RAID wraz ze “sterownikiem”, który w rzeczywistości był programowym RAID, udając, że wynikowy produkt jest prawdziwym sprzętowym RAID. Stworzyło to ogromne zamieszanie w najlepszym przypadku, a w gorszym niesamowitą pogardę dla programowego RAID, gdyż niemal zawsze każdy system, którego podstawową funkcją jest ochrona danych, a którego rynek jest zbudowany na oszustwie i dezinformacji, skończy się katastrofą. Systemy Fake RAID rutynowo mają problemy z wydajnością i niezawodnością. Chociaż teoretycznie pakiet programowego RAID od firmy zewnętrznej jest rozsądną opcją, w praktyce rynku programowego RAID niemal wszystkie wysokiej jakości implementacje programowego RAID są natywnymi komponentami samego systemu operacyjnego (Linux, Mac OSX, Solaris, Windows) lub systemu plików (ZFS, VxFS, BtrFS) i są dostarczane oraz utrzymywane przez głównych dostawców, co pozostawia mało miejsca lub potrzeby dla produktów firm trzecich poza przestrzenią desktopów Windows, gdzie istnieje kilku małych, legalnych graczy programowego RAID, ale są oni często przyćmiewani przez graczy Fake RAID.
Dziś potrzeba stosowania sprzętowego RAID jest niemal żadna, gdyż platformy komercyjne są niesamowicie wydajne i prawie zawsze istnieje dramatyczny nadmiar zarówno zasobów obliczeniowych, jak i pamięci. Sprzętowy RAID konkuruje zamiast tego głównie na podstawie funkcji, a nie redukcji obciążenia zasobów. Wybór między sprzętowym a programowym RAID w przestrzeni serwerów komercyjnych jest niemal całkowicie kwestią preferencji i inercji rynkowej, a nie konkretnej wydajności czy funkcji – obie platformy są zasadniczo równorzędne, a poszczególne implementacje są znacznie ważniejsze przy rozważaniu opcji produktowych niż same podejścia sprzętowe i programowe.
Dzisiejsze oferty sprzętowego RAID mają tendencję do bycia bardziej “generycznymi” z dość standardowymi implementacjami standardowych poziomów RAID. Sprzętowy RAID zazwyczaj zyskuje swoją wartość poprzez redukcję wykorzystania zasobów (odciążenie CPU i pamięci), możliwość “blind swap” uszkodzonych dysków, uproszczone zarządzanie pamięcią masową, blokowy dostęp do pamięci masowej niezależny od systemu operacyjnego, szybką pamięć podręczną blisko dysków oraz pamięć podręczną zabezpieczoną baterią lub pamięcią flash. Programowy RAID zazwyczaj zyskuje swoją wartość poprzez niższe zużycie energii, niższy koszt nabycia, zintegrowane zarządzanie z systemem operacyjnym, unikalne lub zaawansowane funkcje RAID (takie jak RAIDZ ZFS, który nie cierpi na standardową lukę zapisu RAID 5) i ogólnie lepszą wydajność ogólną. To naprawdę nie jest dyskusja o lepszym lub gorszym, ale o lepszym lub gorszym dla bardzo konkretnej sytuacji, a najważniejszym czynnikiem jest często znajomość i komfort i/lub domyślna oferta dostawcy.
Jednym z najbardziej pomijanych, ale ważnych czynników różnicujących między sprzętowym a programowym RAID jest zmiana roli zawodowej związanej z zarządzaniem macierzą RAID. Sprzętowy RAID przenosi obsługę macierzy na administratora serwera (rola wsparcia pracująca na fizycznym serwerze i stacjonująca w centrum danych), podczas gdy programowy RAID przenosi obsługę macierzy na administratora systemu (rola wsparcia pracująca na poziomie systemu operacyjnego i powyżej, rzadko przebywająca w centrum danych). Na rynku SMB ten czynnik może być całkowicie pomijany, ale w firmie z listy Fortune 500 różnica w roli zawodowej może być bardzo znacząca. W wielu przypadkach ze sprzętowym RAID wymiana dysków i konfiguracja systemu mogą być wykonywane bez potrzeby angażowania administratora systemu. Administratorzy serwerów w centrum danych mogą wykrywać uszkodzone dyski poprzez alerty lub szukając “bursztynowych lampek” podczas obchodów i wykonywać wymiany na bieżąco, bez potrzeby kontaktowania się z kimkolwiek lub wiedzy, co serwer w ogóle uruchamia. Programowy RAID prawie zawsze wymagałby zaangażowania administratora systemu w zarządzanie przełączaniem uszkodzonego dysku w tryb offline, koordynowanie procesu wymiany z centrum danych i przełączanie nowego dysku w tryb online po zakończeniu procesu wymiany.
Ze względu na sposób działania odciążania procesora i wydajności oraz ze względu na pewne zalety w sposobie, w jaki niestandardowe implementacje RAID często obsługują odbudowę parzystościowego RAID, istnieje tendencja do faworyzowania sprzętowego RAID przez lustrzane poziomy RAID, a parzystościowego RAID przez programowy RAID. Parzystościowy RAID jest drastycznie bardziej obciążający CPU, więc dostęp do wysokiej mocy centralnych zasobów CPU może być głównym czynnikiem przyspieszającym obliczenia RAID. Jednak w przypadku lustrzanego RAID, gdzie odbudowa RAID jest znacznie bezpieczniejsza niż w przypadku parzystościowego RAID i gdzie automatyczne odbudowy są ważniejsze, sprzętowy RAID przynosi korzyść w postaci łatwego umożliwienia blind swap dysków.
Jednym z aspektów dyskusji o sprzętowym i programowym RAID, który jest wyjątkowo paradoksalny, jest to, że ten sam rynek, który często z góry odrzuca programowy RAID jako gorszy od sprzętowego, niemal całkowicie pokrywa się (można to sobie wyobrazić jako diagram Venna) z rynkiem, który uważa, że serwery plików są gorsze od komercyjnych urządzeń NAS, a jednak te urządzenia NAS w segmencie SMB są niemal powszechnie oparte na tych samych implementacjach programowego RAID, które są lekceważone. Dlatego jest on często uważany zarówno za gorszy, jak i lepszy jednocześnie. Niektóre urządzenia NAS w segmencie SMB oraz oprogramowanie urządzeń NAS oparte na programowym RAID to: Netgear ReadyNAS, Netgear ReadyData, Buffalo Terastation, QNAP, Synology, OpenFiler FreeNAS, Nexenta i NAS4Free.
Naprawdę nie ma “zawsze używaj jednego lub drugiego sposobu” w przypadku sprzętowego i programowego RAID. Nawet ogromne, sześciocyfrowe korporacyjne urządzenia NAS i SAN są niezdecydowane co do tego, którego używać, a część branży idzie w każdym kierunku. Prawdziwa odpowiedź to zależy od Twojej konkretnej sytuacji – separacji ról zawodowych, potrzeb technicznych, doświadczenia, budżetu itp. Obie opcje są całkowicie wykonalne w każdej organizacji.
