3.730 pregleda

Osnove NAS i SAN sustava (i malo više) – drugi dio

0

U seriji članka autor Hrvoje Horvat upoznat će nas s osnovama i načinom rada NAS, SAN, ZFS i složenih klasterskih poslužitelja, te će podijeliti brojne korisne savjete iz praktičnog iskustva.

 

Kolega Hrvoje Horvat član je udruge Open Source Osijek na čijim je mrežnim stranicama tekst izvorno objavljen. Prethodno smo govorili o osnovama NAS i SAN sustava, te upoznali važne savjete za njihovo postavljanje. U drugom dijelu bavimo se kompleksnijim klasterskim sustavima, kao i ZFS datotečnom sustavu. Na kraju donosimo i praktičan primjer za vježbu.

 

 

Sljedeći korak: Klasterski i/ili redundantni NAS sustavi

Što nam omogućavaju ovakvi sustavi? Osim sigurnosti, jer se sada svi podaci mogu zapisivati na dva ili više uređaja istovremeno, dolazimo i do njihovih ograničavajućih faktora, a to su:

  • Omogućavaju horizontalno skaliranje (nadogradnju) ali uz više troškove – znatno više od cijene samog drugog uređaja.
  • Ograničeni su na proširenje prostora tj. kapaciteta (proširenje dodavanjem diskova ili dodatnih uređaja). Pri proširenju dodavanjem dodatnih uređaja (ako je to uopće moguće jer za svaki model odnosno seriju redundantnih NAS uređaja postoji ograničenje do koliko se mogu proširivati) – cijene lete u nebo.
  • U konačnici daju nam redundanciju (sigurnost od gubitka podataka) uz ekstra cijenu.
  • Uz veću cijenu dobivamo i veću brzinu rada.
  • To su sve uglavnom rješenja koja su zaštićena i zatvorenog dizajna od strane proizvođača (EMC2, IBM, …).

 

Redundantni NAS sustavi

Redundantni sustavi su nešto jednostavnijeg dizajna jer se ispred njih logički nalazi sustav koji osigurava pristup jednoj jedinoj virtualnoj IP adresi kojoj klijenti i pristupaju (postoje i drugačije implementacije, ali ova je najčešća).

U pozadini se redundantni NAS sustav brine da se svi podaci uredno kopiraju s prvog (NAS-1) na drugi (NAS-2) NAS sustav. U slučaju kvara prvog (NAS-1) sustava, drugi (NAS-2) preuzima njegovu funkciju i svi podaci su sačuvani. Ovakvi sustavi su često izvedeni sa samo dva NAS sustava i rade na principu: Active-Standby (jedan je aktivan, a drugi je pričuva).

Kako logički izgledaju ovakvi sustavi? Donosimo shemu:

 

 

 

Klasterizirani NAS Sustavi

NAS sustavi koji se nalaze u klasteru (grozd) su obično znatno kompleksnijeg dizajna koji uključuje i razne dodatne hardverske i softverske komponente. Svi klijenti u pravilu pristupaju vršnoj klasterskoj komponenti, koja je često izvedena samo u softveru, a brine se za raspodjelu podataka unutar klastera na pojedine NAS uređaje.

Sama replikacija tih (odnosno svih) podataka između pojedinih NAS sustava se često izvodi i u softveru i na specijaliziranom hardveru (na slici bi to odgovaralo donjem sloju). Zbog ovakvog, složenog dizajna i potrebe za posebnim hardverom i njihova cijena je poprilično veća od redundantnih NAS sustava. Klasterizirani NAS sustavi logički izgledaju ovako:

 

 

 

Softverska rješenja

Postoje i mnoga open source softverska rješenja koja nam omogućavaju osnovnu redundanciju ili klasterizirane NAS sustave. Neka od njih su:

  • GlusterFS: Omogućava osnovne i nekoliko naprednih razina redundancije:
    • mirror – poput RAID 1 između dva NAS sustava (poslužitelja) – min. 2 poslužitelja,
    • stripe – poput RAID 0 između dva NAS sustava (poslužitelja) – min. 2 poslužitelja,
    • mirror + stripe – poput RAID 10 između dva para NAS sustava (poslužitelja) – min. 4 poslužitelja (1. i 2. u RAID 1, 3. i 4. u RAID 1, oba para poslužitelja (1., 2. + 3., 4.), vršno u RAID 0, što zajedno čini RAID 10),
  • pNFS (Parallel NFS – od verzije NFS 4.1+): paralelni/distribuirani NFS – stabilna (produkcijska verzija) je još u izradi,+
  • OCFS2 (Oracle Open Source): ima slične mogućnosti kao GlusterFS.

Svaki od njih ima svoje prednosti i mane kao i ciljanu upotrebu (za koju je i razvijan ili se pokazao kao vrlo dobar).

 

Dilema: redundantni ili klasterizirani SAN sustavi?

Slično kao i za redundantne ili klasterizirane NAS sustave – osim sigurnosti, jer se sada svi podaci mogu zapisivati na dva ili više uređaja istovremeno – ovdje imamo sljedeće mogućnosti i ograničenja:

  • Omogućavaju veće horizontalno skaliranje (nadogradnju), ali uz znatno više troškove – znatno više od cijene za NAS sustave.
  • Ograničeni su na ekspanziju prostora tj. kapaciteta (proširenje dodavanjem diskova ili dodatnih uređaja). Pri proširenju dodavanjem dodatnih uređaja (ako je to uopće moguće jer za svaki model odnosno seriju redundantnih NAS uređaja postoji ograničenje koliko ih je moguće proširivati) – cijene lete u nebo.
  • U konačnici daju nam redundanciju (sigurnost od gubitka podataka) uz ekstremno visoku cijenu i vrlo kompleksan dizajn.
  • Uz veću cijenu dobivamo i veću brzinu rada.
  • To su sve uglavnom rješenja koja su zaštićena i zatvorenog dizajna od strane proizvođača (EMC2, IBM, …).

Klasterizirani SAN sustavi logički izgledaju slično poput klasteriziranih NAS sustava, ali su znatno kompleksniji (i samim time skuplji):

 

 

Softverska rješenja za SAN i klasterske SAN sustave

I u ovoj kategoriji imamo nekoliko open source rješenja koje možete proučiti, a vrlo su česta u upotrebi – obično u kombinaciji s drugim elementima tj. komponentama (ovisno da li se radi o SAN ili klasterskom SAN rješenju):

  • DRBD8 (Distribuirani – replicirani “Block Device”) – “Distributed Replicated Block Device”: – praktično RAID1 (mirror) preko mreže prema principu: Primari poslužitelj → Sekundarni poslužitelj. Potrebna su dva poslužitelja (nije za sve primjene!),
    • DRBD9 (u aktivnom razvoju): omogućava rad s više poslužitelja, višestruke replikacije i sl.
  • iscsid (open-iscsi iSCSI initiator) servis/daemon za Linux (sam po sebi nije redundantan već pruža osnovnu iSCSI funkcionalnost),
    • device-mapper-multipath – DM-Multipath (“Device Mapper Multipathing”) servis/daemon koji omogućava redundanciju (ili load balancing) prema iSCSI uređajima (SAN storage-ima; ostaje pitanje kako sinkronizirati dva ili više SAN storage-a) – koristi se najčešće kod active/passive SAN sustava,
    • ALUA (“Asymmetric Logical Unit Assignment”) nudi load balancing prema SAN storage-u (ostaje isto pitanje sinkronizacije SAN storage-a) – koristi se za active/active SAN sustave.

 

 

ZFS – negdje između

Za početak ukratko o ZFS-u i tvrtki Sun Microsystems. ZFS je razvila tvrtka SUN Microsystems, danas u vlasništvu tvrtke Oracle. Ideja je bila riješiti dosad navedene probleme, uvesti mnoga poboljšanja i mogućnosti koje su do tada bile dostupne samo kao specijalizirana rješenja ili uopće nisu postojala, te sve integrirati u jednom “proizvodu”. ZFS je prema svojoj funkcionalnosti zapravo kombinacija:

  1. Naprednog RAID kotrolera odnosno “Logical Volume Managera” i
  2. Datotečnog sustava s naprednim sustavom kontrole (ACL) odnosno “Access Listama” za prava pristupa.

 

Izvorno je bio razvijan unutar tvrtke SUN Microsystems kao zatvoreni kod, unutar njihovog UNIX operacijskog sustava Solaris 2005. godine. Već sljedeće godine je prebačen u open source pod CDDL licencom unutar projekta OpenSolaris, te je postao sastavni dio Solaris UNIX-a v.10 sredinom 2006. godine.

Naravno, nakon što ih je kupio Oracle nakon samo nekoliko mjeseci čitav izvorni kod ZFS-a se više nije održavao od strane Oraclea. Dakle, Oracle je prestao s razvojem OpenSolarisa pa je zajednica morala sav kod prebaciti u novi projekt imena Illumos (tu se nalazio i izvorni kod ZFS-a). Zajednica koja je stajala iza projekta Illumos preuzela je zadnju verziju dostupnog koda te ga nastavila razvijati. Nakon nekog vremena je pokrenut i projekt OpenZFS koji je prihvatila još veća zajednica programera i korisnika, kao i sve veći broj tvrtki. Svi zajedno su nastavili s razvojem open source verzije ZFS-a koja se razvija i danas.

Kao i većina programa ili sustava koji su izašli iz tvrtke SUN Microsystems, ZFS je razvijan od strane inženjera za inženjere, na najbolji mogući način, kao nedostižni uzor svim ostalim tvrtkama (ili barem za 99.9999% njih).

 

Borba s open source licencama

Budući da je ZFS razvijan pod CDDL licencom (koja nije kompatibilna s Linux GPL licencom pod kojom se razvija Linux kernel) već od početka javnog razvoja (krajem 2005. i početkom 2006. godine) postalo je jasno da se ZFS ne smije direktno implementirati u Linux kernel. Za Linux je stoga osmišljeno privremeno rješenje: upotreba preko FUSE frameworka unutar kojega su se smjeli pokretati programi s drugim licencama. Problem je bio u tome što se FUSE izvršava na višoj razini iznad kernela te je samim time znatno sporiji. Ipak, ovo je kakav-takav početak.

Istovremeno s ovom borbom krenulo se u ponovni razvoj ZFS-a od nule te je 2013. razvijena prva stabilna verzija (v.0.6.1). Iste je godine pokrenut i projekt OpenZFS. Godine 2016. ZFS je uključen u Linux Ubuntu 16.0.4.

Ostali open source UNIX operacijski sustavi (poput onih koji su razvijani s BSD licencom – FreeBSD, NetBSD, OpenBSD i dr.) nisu imali problema s korištenjem ZFS-a, koji je na njima vrlo brzo zaživio. Nakon godina korištenja, testiranja i popravljanja smatra se jednom od najboljih implementacija u open source operacijskim sustavima. OpenZFS projekt također nudi implementaciju ZFS-a za Mac OS X.

ZFS je nastao u želji da se riješe problemi koje niti najnapredniji RAID kontroleri nisu mogli riješiti. Osim rješenja problema, plan je dodati i neke napredne mogućnosti koje su većini korisnika bile poželjne i dobrodošle. Neki od problema koji su poznati, a ZFS ih rješava:

  • Problemi s RAID5 i RAID6 poljima (pogledajte WIKI),
  • Problem kada želimo zamijeniti neispravni tvrdi disk novim diskom (koji na većini RAID kontrolera mora biti identičan onome koji se mijenja (npr. po broju glava/cilindara/sektora),
  • Problemi odnosno komplikacije kod proširenja RAID polja ovisno o RAID polju,
  • Problem u slučaju da nam se RAID kontroler pokvario te ga moramo zamijeniti s novim (ovo je ponekad nemoguće jer možemo izgubiti sve podatke),
  • Problem kada nam se, primjerice pokvari matična ploča te moramo prebaciti sve diskove i RAID kontroler na novi hardver (ovo ponekad može poći po zlu),
  • Problem koji nastaje s vremenom – podaci na površini tvrdih diskova postaju nekonzistentni a RAID kontroleri nisu toga svjesni sve dok ne naiđu na problematični dio površine diska. Ovaj problem se naziva “Data decay” ili “Data rot”. On je znan i kao degradacija podataka na površini diska, a tek najnapredniji RAID kontroleri imaju mogućnost korekcije (disk-scrubbing) ovakvih grešaka, ali samo do određene granice. Sličan problem nastaje i uslijed grešaka u firmware-u diska ili RAID kontrolera, “fantomskog” zapisivanja (podatak nije stvarno zapisan na površinu diska), grešaka pri zapisivanju ili čitanju, zbog pristupa prema/od krivih bokova sa površine diska i dr.

 

Dodatne funkcionalnosti ZFS-a :

  • Komprimiranje podataka “u letu”, prema konfigurabilnom tipu (algoritmu) i razini kompresije. S obzirom na dostupne algoritme za ovu namjenu i brzine, ali i mogućnosti modernih CPU-a, komprimiranje i dekomprimiranje podataka “u letu” je gotovo neprimjetno. ZFS trenutno podržava sljedeće algoritme za komprimiranje: LZJB, LZ4, ZLE i GZIP.
  • ZFS je i tzv. “Copy On Write” i “transakcijski” datotečni sustav što znači da se operacije snimanja rade transakcijski (poput transakcija u SQL bazama podataka). To znači da se svaka operacija zapisivanja završava tek kada je potvrđeno uredno zapisivanje (kada je transakcija uredno završila). Performanse su i dalje zadržane naprednim modelom transakcija te uvođenjem posebnog ZIL log-a za operacije snimanja. Ovaj “Copy On Write” model uvodi i:
    • mogućnost izrade tzv. “snapshota” odnosno snimke stanja diska/podataka u vremenu te mogućnost povratka na bilo koji trenutak kada je izrađen bilo koji od “snapshot”,
    • mogućnost izrade “klonova” odnosno verzije “snapshota” na kojoj se može i zapisivati,
  • mogućnost naprednih ACL-a (sigurnosnih postavki/prava na datotečni sustav, ali i na NFS share direktno),
  • … te cijeli niz drugih funkcionalnosti

 

 

ZFS u radu

Nakon što smo instalirali ZFS, na njega dodajemo diskove i kreiramo ekvivalente RAID poljima slično kao što ih dodajemo u neki hardverski RAID kontroler (što se konfiguracije tiče). Na taj način moguće je kreirati ekvivalente gotovo svim RAID poljima:

  • RAID 0 ( ovdje se naziva stripe),
  • RAID 1 ( ovdje se naziva mirror),
  • RAID 5 ( ovdje se naziva RAID-Z ili RAID-Z1),
  • RAID 6 ( ovdje se naziva RAID-Z2),
  • Nešto poput RAID 6 ali s tri paritetna diska umjesto dva – naziva se RAID-Z3,
  • RAID 10,
  • … i još mnogo toga.

Jedina iznimka je što sve navedeno radi bez grešaka i problema koje možemo imati na bilo kojem RAID kontroleru, a posebno ako nismo prethodno testirali sve scenarije u slučaju nekog kvara. Uz to, na današnjem hardveru to sve radi ekstremno brzo, a sve je moguće i dodatno drastično ubrzati uvođenjem:

  • L2ARC-a za ubrzavanje operacija ćitanja (read) i /ili
  • ZIL log-a za ubrzavanje operacija pisanja (write)

Za obije navedene metode (L2ARC i ZIL log) mogu se koristiti zasebni SSD diskovi koji dodatno mogu biti i u nekom ekvivalentu RAID polja kako bi se dodatno dobilo na brzini i/ili pouzdanosti.

 

Iz opisanih primjera postaje jasan odabir ZFS-a (povezan s NFS-om, SMB/CIFS ili nekim drugim NAS sustavom za dijeljenje datoteka) kao naprednog NAS sustava.

 

Jedna od naprednih stvari oko ZFS-a je i u tome što se na bilo kojem ZFS polju diskova (ekvivalent RAID polju) može kreirati poseban “Block device” koji se može koristiti kao iSCSI logički uređaj (disk). Taj logički disk je samo potrebno proslijediti nekom od iSCSI “serverskih” servisa/daemona. Ovime dobivamo upotrebu ZFS-a kao SAN sustava.

Potencijalna mana upotrebe ZFS-a leži u tome što nije trivijalan poput korištenja RAID kontrolera ili kreiranje nekog RAID polja. U svakom slučaju potrebna su vam neka naprednija predznanja. ZFS-ove mnogobrojne opcije i funkcionalnosti početnicima mogu izgledati komplicirane, ali su profesionalcima definitivno vrlo važne.

Na kraju, sigurno ne želite da vam NAS ili SAN sustav “složi” netko onako usput, za sat-dva, uz svoj svakodnevni posao koji obično nema veze s ovom temom, jer bi mogli zažaliti kada nešto krene po zlu. Namjerno nisam napisao “ako” već “kada” jer je uvijek pitanje vremena kada će doći do problema i dali ćete ih biti u stanju riješiti te koliko vremena i novaca će vam biti potrebno za tu “igru”. O ZFS-u su napisane knjige i knjige te više nećemo ulaziti dublje u ovaj najbolji “Volume Manager” i datotečni sustav svih vremena. O njemu detaljnije u nekom od slijedećih postova.

 

 

Proces učenja

Ukoliko tek krećete s učenjem, prvo si dajte nekoliko dana da bi dobro savladali:

  1. osnove Storage tehnologija te napredne mogućnosti,
  2. osnove rada RAID kontrolera te njihove mogućnosti, način rada i dodatne opcije (uz njihovo razumjevanje).

Na kraju dodajte još koji dan za proučavanje foruma koji se bave ovom tematikom, kao i foruma od strane proizvođača s pitanjima i odgovorima vezanim za pojedine (konkretne) modele RAID kontrolera koji vam je ušao u użi izbor (ako ste odlučili da čete koristiti RAID kontroler a ne ZFS).

Kada završite prvu fazu učenja i nakon što ste kupili RAID kontroler, slijedi novo učenje:

  • proučite napredne parametre i testirajte ih (istovremeno testirajte i performanse sustava ovisno o promjeni parametara),
  • testirajte razne scenarije havarija za barem nekoliko RAID polja (pogledajte dolje za ZFS) i povrata podataka, mjerite i vrijeme koje potrebno da se sve vrati na “staro stanje” – i vrijeme potrebno za “recovery” je ponakad ključno za konačan odabir vrste RAID polja (RAID 1, RAID 5, RAID 6, RAID 10, …),
  • sve dobro i detaljno dokumentirajte (ovo ćete najviše cijeniti kad vam se dogodi prva veća greška – višestruko će se isplatiti dani i dani testiranja i dokumentiranja).

Ako ste krenuli prema ZFS-u tada krenite s proučavanjem osnova na WIKI ZFS info. Proučite si i pripremite upute iz nekoliko izvora te odvojite još par tjedana za upoznavanje i isprobavanje te smišljajte razne scenarije havarija (i smislite/pronađite najbolje riješenje). U nastavku donosimo primjer za vježbu.

Kreirajte jedno ZFS polje:
a.Mirror (Ekvivalent RAID 1).
0. Kreirajte share (NFS ili SMB/CIFS), dodjelite ovlasti i dobro ih naučite (proučite kako se dodjeljuju, nasljeđuju, ne nasljeđuju i sl.), Zapišite određene podatke i pratite performanse kod zapisivanja i čitanja (s različitim parametrima).
1. Izvadite jedan disk iz ZFS polja, pa ga vratite.
     2. Ponovite 1. korak, ali prije vraćanja diska ga obrišite.
3. Zamijenite mjesta diskovima (prvi na mjesto drugog i sl.).
4. Izvadite sve diskove, reinstalirajte cijelo računalo pa vratite diskove i pokušajte importirati staro ZFS polje
b. Obrišite postojeće ZFS polje i kreirajte novo (Pr. RAID-Z). Ponovite sve točke: 0-4.
c. Obrišite postojeće ZFS polje i kreirajte novo (Pr. RAID-Z2). Ponovite sve točke: 0-4.
d. Obrišite postojeće ZFS polje i kreirajte novo (Pr. RAID-10 : 2 x “mirror” u “stripe”). Ponovite sve točke: 0-4.

Napravite što više scenarija te:

  • sve isprobajte (testirajte i performanse) i dokumentirajte,
  • isprobavajte rad s osnovnim postavkama, pa sve probajte optimizirati (za svaki scenarij) – testirate i stabilnost i izdržljivost ovisno o scenariju i opcijama koje ste mijenjali – uz:
    • restart poslužitelja,
    • restart servisa/daemona,
    • namjerno stopirane servise/daemone (uz ručno pokretanje – naknadno).

U ovim koracima/scenarijima ćete naučiti najviše, te se pribliżiti produkcijskoj primjeni i znanju o ovim sustavima.

 

 

Autor: Hrvoje Horvat

Članak preuzet, uređen i objavljen uz izričito dopuštenje autora.

Izvor: Open Source Osijek

 

Članak je dostupan u kratkoj knjižici koju je objavio sam autor prema GNU GPL v3.0 licenci. Svi imaju pravo koristiti, mijenjati, kopirati i štampati (printati) knjigu. Knjiga je dostupna u HTML (DokuWiki) i PDF formatu.

VN:F [1.9.22_1171]
Rating: 3.7/5 (3 votes cast)
Osnove NAS i SAN sustava (i malo više) - drugi dio, 3.7 out of 5 based on 3 ratings

Povezani članci:

Linux je odigrao ključnu ...
ZFS je spreman za vaš Lin...
Predavanje - Virtualizaci...
Osnove NAS i SAN sustava ...
Osnove NAS i SAN sustava ...

Ostavi komentar

© 2017 Linux Za Sve. | Impressum | Sadržaj je licenciran pod CC-SA-3.0 ako nije drugačije naznačeno.
Proudly designed by Theme Junkie.