Porównanie SAN i NAS
Jednym z największych nieporozumień, jakie obserwuję w ostatnich latach, jest pomylenie NAS i SAN. Zrozumienie, czym każde z nich jest, bardzo pomaga w pojęciu, gdzie są przydatne i właściwe.
Nasze pierwsze zadanie to odrzucenie terminologii marketingowej i przejście do technicznej. NAS oznacza Network Attached Storage (sieciowa pamięć masowa), ale nie znaczy dokładnie tego, co sugeruje, a SAN oznacza Storage Area Network (sieć obszarowa pamięci masowej), ale jest powszechnie używany w odniesieniu do urządzenia SAN, a nie sieci jako takiej. W najbardziej właściwym sensie SAN to dowolna sieć dedykowana do ruchu pamięci masowej, ale w rzeczywistości tak się tego nie używa. W tym przypadku mówimy o urządzeniach NAS i SAN oraz o tym, jak się ze sobą porównują, więc nie będziemy używać definicji obejmującej sieć zamiast urządzenia. W rzeczywistości zarówno NAS, jak i SAN są terminami marketingowymi i mają przez to nieco miękkie granice. Są na tyle precyzyjne, by używać ich w normalnej rozmowie technicznej — o ile wszystkie strony wiedzą, co oznaczają — ale omawiając ich znaczenie, powinniśmy odrzucić efektownie brzmiące nazwy i trzymać się najbardziej technicznych opisów. Oba terminy, stosowane w marketingu, sugerują, że opisują określoną technologię, która została "zaplikancjonowana", co sprawia, że ich użycie jest niepotrzebnie skomplikowane, lecz nie bardziej przydatne.
Naszym pierwszym zadaniem jest więc zdefiniowanie, co te dwie nazwy oznaczają w kontekście urządzeń. Oba urządzenia to serwery pamięci masowej — po prostu dwa różne sposoby udostępniania tej pamięci światu zewnętrznemu.
Prostszym z nich jest SAN, który właściwie jest urządzeniem blokowej pamięci masowej. Każde urządzenie udostępniające swoją pamięć zewnętrznie jako urządzenie blokowe należy do tej kategorii i może być używane zamiennie w zależności od sposobu użycia. Blokowe urządzenia pamięci masowej to zewnętrzne dyski twarde, DAS (Direct Attach Storage) i SAN. Wszystkie są w rzeczywistości tym samym. Nazywamy to zewnętrznym dyskiem twardym, gdy podłączamy go do komputera stacjonarnego. Nazywamy to DAS, gdy podłączamy do serwera. Nazywamy to SAN, gdy dodamy jakąś formę sieciową, zazwyczaj przełącznik, między urządzeniem a końcowym urządzeniem korzystającym z pamięci masowej. Nie ma technologicznej różnicy między tymi urządzeniami. Tradycyjny SAN może być bezpośrednio podłączony do komputera stacjonarnego i używany jak zewnętrzny dysk twardy. Zewnętrzny dysk twardy może być podłączony do przełącznika i używany przez wiele urządzeń w sieci. Interfejsem między urządzeniem pamięci masowej a systemem go używającym jest blok. Popularne protokoły blokowej pamięci masowej to iSCSI, Fibre Channel, SAS, eSATA, USB, Thunderbolt, IEEE1394 (znany też jako Firewire), Fibre Channel over Ethernet (FCoE) oraz ATA over Ethernet (AoE). Urządzenie podłączające się do blokowej pamięci masowej zawsze widzi tę pamięć jako dysk twardy — nic więcej.
NAS, znany również jako "filer", jest urządzeniem plikowej pamięci masowej. Oznacza to, że udostępnia swoją pamięć jako sieciowy system plików. Urządzenie podłączające się do tej pamięci nie widzi więc dysku twardego, lecz montowalny system plików. Gdy NAS nie jest opakowany jako urządzenie sieciowe (appliance), po prostu nazywamy go serwerem plików — i niemal wszystkie urządzenia komputerowe, od komputerów stacjonarnych po serwery, mają wbudowany pewien stopień tej funkcjonalności. Popularne protokoły urządzeń plikowej pamięci masowej to NFS, SMB/CIFS i AFP. Istnieje ich jednak wiele więcej, a technicznie rzecz biorąc, istnieją specjalne protokoły przechowywania plików, takie jak FTP i HTTP, które również powinny się kwalifikować. Jako skrajny przykład, tradycyjny serwer WWW jest bardzo wyspecjalizowaną formą urządzenia plikowej pamięci masowej.
To, co oddziela urządzenia blokowej pamięci masowej od plikowej pamięci masowej, to rodzaj interfejsu, który prezentują światu zewnętrznemu — lub innymi słowy, gdzie w stosie pamięci masowej następuje podział między urządzeniem serwera a urządzeniem klienta.
Dziś niezwykle powszechne stało się to, że urządzenia pamięci masowej obejmują zarówno blokową, jak i plikową pamięć masową z tego samego urządzenia. Systemy, które to robią, nazywane są ujednoliconą pamięcią masową (unified storage). W przypadku ujednoliconej pamięci masowej to, czy można powiedzieć, że zachowuje się ona jak urządzenie blokowej czy plikowej pamięci masowej (SAN czy NAS w powszechnym żargonie), czy też obydwa, zależy od zachowania skonfigurowanego dla urządzenia, a nie od tego, co się kupuje. Jest to ważne, gdyż podkreśla fakt, że jest to czysto protokolarne lub interfejsowe rozróżnienie — nie rozróżnienie dotyczące rozmiaru, możliwości, niezawodności, wydajności, funkcji itp.
Oba typy urządzeń mają możliwość, lecz nie obowiązek, zapewniania rozszerzonych funkcji poniżej "punktu demarkacyjnego", w którym przekazują pamięć masową na zewnątrz. Obydwa mogą, ale nie muszą, zapewniać RAID, zarządzanie woluminami logicznymi, monitorowanie itp. Plikowa pamięć masowa (NAS) może również zapewniać funkcje systemu plików, takie jak Windows NTFS ACL.
Kluczową zaletą blokowej pamięci masowej jest to, że systemy do niej podłączone mają możliwość manipulowania systemem pamięci masowej tak, jakby był tradycyjnym dyskiem twardym. Oznacza to, że RAID i zarządzanie woluminami logicznymi, które mogły być już realizowane w "czarnej skrzynce" urządzenia pamięci masowej, mogą być teraz wykonywane ponownie, jeśli jest taka potrzeba, na wyższym poziomie. Urządzenia klienckie nie wiedzą, z jakim urządzeniem mają do czynienia — jedynie, że wygląda ono jak dysk twardy. Można więc zdecydować się na zaufanie mu (zakładając na przykład, że ma RAID odpowiedniego poziomu) lub połączyć wiele urządzeń blokowej pamięci masowej w RAID, tak jakby były zwykłymi, lokalnymi dyskami. Jest to skrajnie rzadkie, ale ciekawa opcja i istnieją produkty zaprojektowane do użycia w ten sposób.
Częściej jednak zarządzanie woluminami logicznymi, takie jak Linux LVM, Solaris ZFS lub Windows Dynamic Disks, jest stosowane na wierzchu udostępnionej blokowej pamięci masowej, a następnie, ponad tym, stosuje się system plików. Należy to zapamiętać: w przypadku urządzeń blokowej pamięci masowej system plików jest tworzony i zarządzany przez urządzenie klienckie, a nie przez urządzenie pamięci masowej. Urządzenie pamięci masowej jest szczęśliwie nieświadome tego, jak używana jest blokowa pamięć masowa, którą prezentuje, i pozwala użytkownikowi końcowemu używać jej wedle uznania, z pełną kontrolą. Rozciąga się to nawet do punktu, w którym można łańcuchowo łączyć urządzenia blokowej pamięci masowej, z jednym dostarczającym pamięć masową do następnego, być może łącząc je w grupy RAID — urządzenia blokowej pamięci masowej mogą być warstwowane, mniej więcej, w nieskończoność.
Alternatywnie, urządzenie plikowej pamięci masowej zawiera całą blokową część pamięci, więc wszelkie możliwości dotyczące RAID, zarządzania woluminami logicznymi i monitorowania muszą być obsługiwane przez urządzenie plikowej pamięci masowej. Następnie, na wierzchu blokowej pamięci masowej, stosuje się system plików. Powszechnie byłby to Linux EXT4, FreeBSD i Solaris ZFS, Windows NTFS, choć inne systemy plików, takie jak WAFL, XFS, JFS, BtrFS, UFS i inne są jak najbardziej możliwe. W tym systemie plików przechowywane są dane. Aby następnie udostępnić te dane światu zewnętrznemu, używany jest sieciowy system plików (znany również jako rozproszony system plików), który zapewnia interfejs systemu plików z obsługą sieciową — NFS, SMB i AFP są najczęstszymi, ale jak w każdej rodzinie protokołów, istnieją liczne specjalne i egzotyczne możliwości.
Zdalne urządzenie chcące korzystać z pamięci masowej na urządzeniu plikowej pamięci masowej widzi je przez sieć tak samo, jak widziałoby lokalny system plików, i jest w stanie zamontować go w identyczny sposób. To sprawia, że plikowa pamięć masowa jest szczególnie łatwa i oczywista dla użytkowników końcowych, ponieważ jest bardzo naturalna pod każdym względem. Codziennie używamy sieciowych systemów plików do normalnych komputerów stacjonarnych. Kiedy na przykład w Windows "mapujemy dysk", używamy sieciowego systemu plików.
Jednym krytycznym rozróżnieniem między blokową a plikową pamięcią masową, które musi być wyraźnie wyodrębnione, jest to, że choć obie potencjalnie mogą znajdować się w sieci i pozwalać na podłączenie wielu urządzeń klienckich, tylko urządzenia plikowej pamięci masowej mają możliwość arbitrażu tego dostępu. Jest to bardzo ważne i nie można tego zbagatelizować.
Blokowa pamięć masowa wygląda jak dysk twardy. Jeśli po prostu podłączysz dysk twardy do dwóch lub więcej komputerów jednocześnie, możesz sobie wyobrazić, co się stanie — każdy nie będzie wiedział o istnieniu innych i nie będzie świadomy nowo tworzonych plików, zmian dokonywanych przez inne systemy, które szybko zaczną nadpisywać się nawzajem. Jeśli system plików jest tylko do odczytu na wszystkich węzłach, to nie jest problem. Ale jeśli którykolwiek system zapisuje lub zmienia dane, pozostałe będą miały problemy. Zazwyczaj skutkuje to bardzo szybko uszkodzeniem danych — w ciągu minut. Aby zobaczyć to w ekstremalnym działaniu, wyobraź sobie, że dwa lub trzy systemy klienckie sądzą, że mają wyłączny dostęp do dysku twardego, i wszystkie jednocześnie defragmentują go. Wszystkie dane na dysku zostaną pomieszane w ciągu sekund.
Urządzenie plikowej pamięci masowej z kolei ma naturalny arbitraż, ponieważ sieciowy system plików obsługuje komunikację dostępu do prawdziwego systemu plików, a systemy plików z natury są wieloużytkownikowe. Jeśli więc jeden system podłączony do urządzenia plikowej pamięci masowej dokona zmiany, wszystkie systemy są natychmiast świadome tej zmiany i nie będą "wchodzić sobie w drogę". Nawet jeśli próbują, system plików urządzenia plikowej pamięci masowej arbitrażuje dostęp i ma ostatnie słowo — nie pozwala na to. To sprawia, że udostępnianie danych jest łatwe i przejrzyste dla użytkowników końcowych. (Używam tu terminu "użytkownicy końcowi" w odniesieniu do administratorów systemu.)
Nie oznacza to, że nie ma możliwości współdzielenia pamięci masowej z urządzenia blokowego, ale arbitrażu tego nie może obsłużyć samo urządzenie blokowej pamięci masowej. Urządzenia blokowej pamięci masowej mogą być uczynione "współdzielonymi" za pomocą tzw. klastrowego systemu plików. Tego rodzaju systemy plików wywodzą się z czasów, gdy klastry serwerów współdzieliły zasoby pamięci masowej, gdy dwa serwery były podłączone kontrolerem SCSI na obu końcach jednego kabla SCSI, a wspólne dyski były podłączone pośrodku kabla. Jedynym środkiem komunikacji między serwerami był sam system plików, dlatego opracowano specjalne klastrowe systemy plików, które pozwalają na komunikację między urządzeniami — informując każde o zmianach dokonanych przez inne — poprzez sam system plików. Działa to zaskakująco dobrze, ale klastrowe systemy plików są stosunkowo rzadkie: GFS Red Hata i OCFS Oracle są jednymi z najbardziej znanych w tradycyjnym świecie serwerów, a VMFS VMware stał się niezwykle znany dzięki zastosowaniu w pamięci masowej do wirtualizacji. Zwykli użytkownicy, w tym administratorzy systemu, mogą nie mieć dostępu do klastrowych systemów plików lub mogą mieć potrzeby uniemożliwiające ich użycie. Warto też odnotować, że arbitraż jest realizowany przez zaufanie, a nie przez egzekwowanie, jak w przypadku urządzeń plikowej pamięci masowej. W urządzeniach plikowej pamięci masowej samo urządzenie obsługuje arbitraż dostępu i nie ma możliwości obejścia tego. W przypadku urządzeń blokowej pamięci masowej używających klastrowego systemu plików, każde urządzenie podłączone do pamięci masowej może zignorować klastrowy system plików i po prostu ominąć pasywny arbitraż — jest to tak proste, że normalnie zdarzałoby się przypadkowo. Może się to zdarzyć przy montowaniu systemu plików i podaniu niewłaściwego jego typu, przez złe zachowanie dysku lub przez jakiekolwiek złośliwe działanie. Dlatego bezpieczeństwo dostępu jest kluczowe na poziomie sieciowym, aby chronić blokową pamięć masową.
Podstawowa koncepcja jest tu taka, że urządzenia blokowej pamięci masowej są urządzeniami "głupimi" (pomyśl o rozbudowanym dysku twardym), a urządzenia plikowej pamięci masowej są urządzeniami "inteligentnymi" (pomyśl o tradycyjnym serwerze). Urządzenia plikowej pamięci masowej muszą zawierać pełnoprawny, działający "komputer" z procesorem, pamięcią, pamięcią masową, systemem plików i siecią. Urządzenia blokowej pamięci masowej mogą, ale nie muszą, zawierać tych elementów. W najprostszej formie urządzenia blokowej pamięci masowej mogą być niczym więcej niż dyskiem twardym z podłączonym adapterem USB lub Ethernet. Nie jest rzadkością, że są niczym więcej niż kontrolerem RAID z adapterami Ethernet lub Fiber Channel.
W obu przypadkach — zarówno dla urządzeń blokowej, jak i plikowej pamięci masowej — możemy skalować w dół do trywialnie prostych urządzeń lub skalować w górę do masywnych systemów ultra-wysokiej dostępności klasy mainframe. Oba mogą być zarówno szybkie, jak i wolne. Jedno nie jest lepsze ani gorsze, jedno nie jest wyższe ani niższe, jedno nie jest bardziej czy mniej korporacyjne — są różne i służą ogólnie różnym celom. Istnieją zaawansowane funkcje, które jedno lub drugie może, ale nie musi, zawierać. Wyzwanie polega na wiedzy, które jest właściwe dla danego zadania.
Lubię myśleć o protokołach blokowej pamięci masowej jako o strumieniu "standardowego wyjścia", podobnym do tego w wierszu poleceń. Tak więc podstawowym poziomem każdego "rurociągu" pamięci masowej jest zawsze urządzenie blokowe, a liczne urządzenia blokowe lub transformacje mogą istnieć, z każdym przekazującym wynik do następnego, tak długo, jak długo dane wyjściowe pozostają protokołem blokowej pamięci masowej. Zakańczamy łańcuch dopiero, gdy stosujemy system plików. W ten sposób sprzętowy RAID, sieciowy RAID, zarządzanie woluminami logicznymi itp. mogą być stosowane w wielu kombinacjach, według potrzeb. Blokowa pamięć masowa to naprawdę nie tylko bloki danych, ale budulec systemów pamięci masowej.
Jedną interesującą kwestią jest to, że ponieważ urządzenia blokowej pamięci masowej mogą być łańcuchowane i ponieważ urządzenia plikowej pamięci masowej muszą akceptować blokową pamięć masową jako swoje "wejście", jest właściwie dość powszechne, że urządzenie blokowej pamięci masowej (SAN) jest używane jako pamięć zapasowa dla urządzenia plikowej pamięci masowej (NAS), szczególnie w systemach wysokiej klasy. Mogą one współistnieć w jednej obudowie lub mogą współpracować w sieci.
