Softverski definirana pohrana iz Redmonda - Spremljeno na Microsoftov način

Prije otprilike godinu dana najavili smo neke od najvažnijih tehnologija za pohranu koje će nam donijeti Windows Server 2016. U međuvremenu, Microsoft je izdao četiri radne inačice novog poslužiteljskog operacijskog sustava, a s njima su javno postale dostupne i te tehnologije. Ako se pitate koje su to, govorimo o tehnologijama Storage Spaces Direct i Storage Replica. Budućnost je tu pa pogledajmo što nam je donijela...

Ljubo Brodarić nedjelja, 1. travnja 2018. u 00:00
Storage Spaces Direct moguće je realizirati kao Disaggregated (1) ili Hyper-converged (2) konfiguraciju
Storage Spaces Direct moguće je realizirati kao Disaggregated (1) ili Hyper-converged (2) konfiguraciju

Količina informacija koju stvaramo i pohranjujemo povećava se za red veličine svakih nekoliko godina. Prostor za pohranu, manipulacija, visoka dostupnost i dostupnost u slučaju većih katastrofa, iziskuju veoma komplicirane i nadasve skupe sustave za pohranu. Specifične primjene – u prvom redu virtualizacija i hosting – zahtijevaju promjenu u načinu upravljanja sustavima za pohranu i traže njihovu veliku fleksibilnost. Microsoft rješenje ovih problema vidi u softverski definiranoj pohrani, čiji smo dio već dobili u Windows Serveru 2012 kroz tehnologiju Storage Spaces. S najnovijim poslužiteljskim operacijskim sustavom Microsoft je odlučio otići do kraja i zaokružiti pohranu uvođenjem dvije nove tehnologije: Storage Spaces Direct i Storage Replica. Ideja je da se korištenjem lako dostupnih komponenti i jednostavnim mrežnim povezivanjem poslužitelja omogući visoka dostupnost i mogućnost oporavka u slučaju katastrofe.

Virtualni disk sastoji se od zrcalnog i paritetnog sloja, zadržavajući performanse i kapacitet
Virtualni disk sastoji se od zrcalnog i paritetnog sloja, zadržavajući performanse i kapacitet

Svatko za sebe, mreža za sve

Storage Spaces Direct (S2D) tehnologija je prije svega namijenjena smještaju virtualnih poslužitelja u privatnom oblaku, bilo vlastitom, bilo oblaku za pružatelje usluga. Omogućuje nam izgradnju visoko dostupnih sustava za pohranu korištenjem samo lokalnih diskova. Pod lokalnim diskovima podrazumijevamo da su diskovi smješteni u samom poslužitelju ili u dodatnoj ladici, spojenoj na samo jedan poslužitelj. Dodatnu, Just a Bunch of Disks (JBOD) ladicu možemo i želimo koristiti kada broj diskova koje možemo smjestiti u poslužitelj nije dovoljan. Na ovaj način nije potrebno komplicirano kabliranje, povećava se broj poslužitelja koje možemo koristiti u klasteru, sustav za pohranu može se znatno proširivati, a poslužitelje “samo” moramo povezati mrežom. Potrebna su najmanje četiri poslužitelja, a sustav je otporan na kvar pojedinačnog diska ili cijelog poslužitelja. Zbog korištenja lokalnih diskova nije više nužno koristiti SAS diskove, već je moguće, i preporučljivo, koristiti SATA HDD ili SSD diskove, čime cijena ukupne pohrane znatno pada. Također, moguće je koristiti i NVMe diskove, čime znatno povećavamo performanse cijelog sustava. Nakon što smo kreirali grupu (storage pool) dodavanjem željenih diskova kreiramo virtualni disk (storage space) – da ne bude zabune, ne radi se o VHDX datoteci – koji operacijski sustav vidi kao i svaki drugi disk. Virtualni diskovi kreirani na ovakvom sustavu bit će raspršeni na diskovima koji se nalaze u različitim poslužiteljima, a kopije naših podataka nalazit će se na barem dva različita poslužitelja. Sustav se može proširivati dodavanjem jednog po jednog poslužitelja, kako se već pojavi potreba za kapacitetom i performansama. Sve što je potrebno jest spajanje poslužitelja na mrežu i dodavanje u klaster. Postojeći podaci na diskovima postupno će se preraspodijeliti na sve raspoložive diskove kako bismo dobili što bolje performanse. Ukupan raspoloživi prostor ovisi o konfiguriranoj redundanciji i kapacitetu diskova u poslužiteljima. Nakon formiranja virtualnih diskova, pretvaramo ih u Clustered Shared Volumes (CSV), na koje onda smještamo virtualne poslužitelje.

Dva su načina na koje možemo implementirati Storage Spaces Direct: prvi način je takozvani Hyper-converged, a drugi Disaggregated. U prvom slučaju poslužitelji u klasteru istovremeno su i Hyper-V poslužitelji. Nakon što smo kreirali virtualne diskove i pretvorili ih u Clustered Shared Volumes, na njih izravno smještamo virtualne poslužitelje. Proces konfiguracije identičan je konfiguraciji klasičnog klastera s dijeljenom pohranom i CSV diskovima. Pri proširenju istovremeno povećavamo prostor za pohranu i procesnu snagu za izvođenje virtualnih poslužitelja. Ovime pojednostavljujemo cijeli proces i izbjegavamo dodatnu konfiguraciju dijeljenih mapa. Kod Disaggregated načina Hyper-V poslužitelji su odvojeni od Storage Spaces Direct poslužitelja koji su konfigurirani kao Scale-Out File Server. Ako nam treba više procesne snage, a posjedujemo dovoljno prostora za pohranu, dodavat ćemo samo Hyper-V poslužitelje. Naravno, vrijedi i obrnuto, ako nam zatreba više prostora za pohranu, a posjedujemo dovoljno procesne snage, dodavat ćemo samo Storage Spaces Direct poslužitelje. Ovakva konfiguracija namijenjena je ponajviše većim tvrtkama i pružateljima raznih usluga u oblaku.

Storage Spaces Direct je evolucija tehnologije Storage Spaces i za mrežnu komunikaciju koristi dobro nam znani protokol Server Message Block (SMB) inačice 3. Ovakva vrsta mrežne komunikacije uključuje SMB Direct i SMB Multichannel, za svu međuposlužiteljsku i klijentsku komunikaciju. Klijentska komunikacija u ovom slučaju predstavlja Hyper-V poslužitelje u konfiguraciji Disaggregated. SMB Multichannel omogućuje visoku dostupnost mreže i povećanje ukupne mrežne propusnosti korištenjem više mrežnih kartica. Nadalje, mrežne kartice Remote Direct Memory Access (RDMA) dodatno smanjuju opterećenje procesora poslužitelja, čime ostavljamo više procesne snage aplikacijama, a poželjno je da mrežne kartice u poslužiteljima budu što brže.

Prilikom izgradnje ovakvog sustava za pohranu potrebno je koristiti datotečni sustav Resilient File System (ReFS). On je sastavni dio datotečnog sustava CSV (CSVFS) koji se koristi unutar klastera i donosi nam čitav niz poboljšanja, a u svojoj je posljednjoj inačici posebno prilagođen funkcionalnostima Hyper-V. Prilikom stapanja diskova nastalih izradom checkpointa virtualnog poslužitelja potrebno je samo mapirati podatke između checkpointa. Na ovaj način uklonili smo potrebu za kopiranjem ogromne količine podataka, a operacija se odvija gotovo trenutačno jer se manipulira isključivo metapodacima. Kreiranje izvorno velikih VHDX datoteka ili njihovo širenje, također je trenutačno jer se blokovi na disku koji čine VHDX datoteku više ne popunjavaju nulama. Od ostalih ReFS poboljšanja spomenimo i samo ispravljanje grešaka u blokovima podataka koje se zasniva na checksumu tih istih podataka.

ReFS Real-time Tiering zapisuje uvijek u zrcalni sloj, a premješta podatke u paritetni u realnom vremenu
ReFS Real-time Tiering zapisuje uvijek u zrcalni sloj, a premješta podatke u paritetni u realnom vremenu

Sloj po sloj

Tehnologija Storage Spaces u Windows Serveru 2012 R2 donijela nam je višeslojnu arhitekturu kroz takozvani storage tiering, čija je osnovna prednost “bogata” priručna memorija, tj. cache. Radi se o mogućnosti kombiniranja SSD-ova i klasičnih mehaničkih diskova unutar grupe diskova tako da Storage Spaces na SSD-ove smješta podatke kojima se češće pristupa, a na mehaničke diskove rjeđe korištene podatke. Također, jedan dio prostora na SSD-ovima automatski će se odvojiti samo za priručnu memoriju za zapisivanje, kojom se značajno ubrzava posluživanje aplikacija. Ovakav način rada donio je značajna ubrzanja, ali i dalje ima određenih nedostataka. Najveći problem je sakupljanje precizne statistike koje blokove podataka treba premještati, i to što se premještanje odvija kao zadatak koji se izvršava u točno preddefinirano vrijeme. Također, zrcalna redundancija jedina je dovoljno dobra za produkcijske uvjete, ali je ona i veliki potrošač diskova. U najboljem slučaju, ukupni raspoloživi kapacitet jednak je polovici ukupnog kapaciteta svih diskova. Storage Spaces Direct nastoji riješiti ove probleme pomoću virtualnih diskova Multi-Resilient i tehnikom ReFS Real-Time Tiering.

Virtualni disk Multi-Resilient je disk čiji se jedan dio zasniva na zrcalnoj redundanciji, a drugi dio na paritetnoj ili, pravilnije kazano, erasure coded redundanciji. Kao i kod Storage Spacesa, potrebno je definirati slojeve, ali oni su sada određeni vrstom redundancije umjesto vrstom diska. U slučaju da posjedujemo samo jedan tip diskova – SATA SSD-ove, primjerice – i dalje ćemo definirati slojeve gdje će zrcalni sloj preuzimati sve izravne zahtjeve za pisanjem, a paritetni sloj služit će za skladištenje podataka. Na ovaj način prostor na diskovima je mnogo bolje iskorišten, ali bez gubitka performansi. To je moguće kombiniranjem upravo opisane tehnike konfiguriranja diskova i ReFS Real-Time Tieringom. Manipulacija i smještaj podataka na određeni sloj odvija se u realnom vremenu. Zapisivanje uvijek ide u zrcalni sloj, a ako su podaci koje treba ažurirati zaista smješteni u paritetnom sloju, oni se tamo proglašavaju nevažećima. U sljedećem koraku se podaci iz zrcalnog sloja premještaju u paritetni, uz napomenu da se premještaju čitave skupine blokova i slijedno zapisuju u paritetni, tj. kapacitetni sloj, čime se osiguravaju dobre performanse zapisivanja. Priručna memorija i zrcalni sloj bit će upotrijebljeni za pisanje i/ili čitanje u zavisnosti od vrste diskova u poslužiteljima, i to tako da se osigura najbrži odziv sustava.

Replikacija je moguća između dva poslužitelja, unutar protegnutog klastera ili između dva klastera
Replikacija je moguća između dva poslužitelja, unutar protegnutog klastera ili između dva klastera
Smještaj replikacijskog upravljačkog programa omogućuje replikaciju i zaključanih datoteka
Smještaj replikacijskog upravljačkog programa omogućuje replikaciju i zaključanih datoteka

Klonovi spašavaju

Naši podaci u pravilu gotovo su uvijek smješteni na nekakvo središnje mjesto za pohranu, i u slučaju bilo kakve havarije ovakvog sustava, ugroženi su. Rješenje je korištenje više sustava za pohranu koji određenim mehanizmima repliciraju podatke između sebe i brinu se o tome da uvijek imamo dostupne dvije kopije naših podataka. Ovdje ne govorimo o redundanciji unutar jednog sustava, primjerice, o korištenju RAID funkcionalnosti i sličnim tehnologijama. Radi se o dva međusobno neovisna sustava koji mogu, ali i ne moraju, biti na različitim zemljopisnim lokacijama. Do sada smo isključivo bili oslonjeni na različita rješenja raznih proizvođača, koja najčešće međusobno nisu bila kompatibilna. Softverski definiranoj pohrani nedostajala je karika koja bi zaokružila cjelinu i omogućila nam vrlo jednostavnu replikacijsku infrastrukturu, potpuno neovisnu o upotrijebljenom hardveru.

Storage Replica je karika koja nedostaje, a radi se o tehnologiji koja replicira diskove na blok razini (ispravno kazano volumene – radi s bilo kakvim sustavom za pohranu – lokalni diskovi, FC ili iSCSI SAN, Storage Spaces), može replicirati podatke sinkrono ili asinkrono, a moguće ju je koristiti i unutar virtualnih poslužitelja. Replikacija nam omogućuje visoku dostupnost i oporavak u slučaju neke havarije, a moguće ju je uspostaviti između dva poslužitelja, unutar protegnutog klastera ili između dva klastera. Nije ju moguće koristiti slijedno – s poslužitelja jedan na dva, potom s dva na tri, i tako dalje. Nije moguća ni kombinacija s jednog poslužitelja na više njih istovremeno. Za razliku od postojećih replikacijskih tehnologija Storage Area Network (SAN), nije potrebna nikakva posebna infrastruktura; sve je već ugrađeno u poslužiteljski operacijski sustav Windows.

Kako bi replikacija radila, potrebno je zadovoljiti samo dva uvjeta: postojanje mrežne veze između poslužitelja najmanje gigabitne brzine, i da su volumeni koji sudjeluju u replikaciji inicijalizirani kao GUID Partition Table (GPT). Sva mrežna komunikacija se, kao i kod ostatka softverski definirane pohrane, odvija korištenjem protokola Server Message Block (SMB). Kao i kod tehnologije Storage Spaces Direct, što brža mreža – čitaj 10 gigabita i više – to bolje performanse. U slučaju sinkrone replikacije neće doći do gubitaka podataka, a u slučaju asinkrone replikacije, mrežna veza može biti i nešto sporija, ali treba imati na umu da će u slučaju problema s izvornim poslužiteljem vjerojatno doći do gubitaka određene količine podataka – one koja se nije stigla replicirati. Replikacijski mehanizam uvijek nam jamči čitljiv disk, ali aplikacija je ta koja se u slučaju asinkrone replikacije mora pobrinuti za dostupnost svojih podataka. Osim diskova koje želimo replicirati, potrebno je dedicirati i po jedan disk na svakom poslužitelju za replikacijski log. Naime, podaci se uvijek prvo zapisuju na log disk, a onda na podatkovni disk, i preporuka je da se za ovo koriste SSD-ovi jer se time osigurava najbrži mogući odziv sustava. Nije nužno da se cijeli disk potroši za log; replikacijski mehanizam kreirat će log datoteku koliku mi odredimo. Ostatak diska možemo koristiti za druge primjene, ali ako previše opteretimo disk, smanjit ćemo brzinu replikacije. Što je veći log disk, veće je i vrijeme unutar kojeg nam odredišni poslužitelj može biti nedostupan. Kad odredišni poslužitelj ponovno postane dostupan, podaci iz loga na prvom će se poslužitelju prenijeti na njega i tako sinkronizirati volumene koje repliciramo. Ako je odredišni poslužitelj predugo bio nedostupan i došlo je do prepisivanja loga na prvom serveru, sinkronizirat će se podaci izravno s izvornog diska, ali samo blokovi koji su se promijenili. Postupak sinkronizacije je optimiziran i nastojat će sinkronizaciju završiti što je prije moguće.

Pri sinkronoj replikaciji svi podaci zapisani na izvorišnom disku sigurno su zapisani i na odredišnom te ne postoji mogućnost gubitaka podataka. Unutar protegnutog klastera moguća je jedino sinkrona replikacija zbog automatskog mehanizma prebacivanja uloga klastera s jedne na drugu lokaciju. Ovo je vrlo važno za konzistentnost podataka, ali predstavlja pravi izazov za odziv diska prema aplikacijama. Aplikacija – primjerice, SQL Server – mora čekati da se podaci zapišu na oba poslužitelja prije nego što dobije potvrdu. Ako koristimo drugu lokaciju za smještaj odredišnog diska, mrežna latencija između lokacija ne smije biti veća od 5 ms kako bi odziv bio zadovoljavajući i da bi uopće mogli uspostaviti sinkronu replikaciju. Kod aplikacija koje intenzivno rade s diskom od iznimne je važnosti što veća propusnost i što manja latencija između dva poslužitelja. S druge strane, kod asinkrone replikacije, dok podaci ne stignu na odredišni disk, postoji mogućnost gubitaka podataka, ali to nam omogućuje da druga lokacija bude prilično udaljena. Ako podatke moramo prenijeti na veliku udaljenost i prihvatljivo je da u slučaju havarije ostanemo bez dijela podataka, koristit ćemo asinkronu replikaciju.

Ne postoji specifična namjena replikacije jer se podaci repliciraju na blok-razini, što je omogućeno smještajem samog replikacijskog upravljačkog programa. On se smjestio između Partition Managera i Volume Managera, i ne vodi računa o datotečnom sustavu, tipu datoteke i o tome je li datoteka zaključana od neke aplikacije. Svaku promjenu na blok-razini mehanizam će replicirati čak i kada se radi, primjerice, o disku nekog virtualnog poslužitelja koji je zaključao Hyper-V, ili nekoj SQL bazi koju je zaključao SQL Server. Storage je Replica, osim što je zaokružila softverski definiranu pohranu, dodatno apstrahirala sustav za replikaciju koji je potpuno neovisan o upotrijebljenom hardveru. Hoćemo li replikaciju koristiti za protegnute Hyper-V klastere, pričuvnu kopiju podataka na “običnom” datotečnom poslužitelju ili nešto treće, stvar je isključivo naših potreba i želja. Također, važno je da imamo na umu kako replikacija nije pričuvna kopija – i dalje ih treba izrađivati – jer će se slučajno obrisani podaci “replicirati”, tj. bit će obrisani i na odredišnom disku.

Arhitektura Software Storage Bus i kreiranje pričuvne memorije u zavisnosti su o upotrijebljenoj vrsti diskova
Arhitektura Software Storage Bus i kreiranje pričuvne memorije u zavisnosti su o upotrijebljenoj vrsti diskova

Brže, više, jeftinije

Microsoft je ozbiljno zakoračio u arenu pohrane podataka, dosad isključivo rezerviranu za “ozbiljne” proizvođače raznih sustava za pohranu. Odlučan je iskoristiti standardno dostupne komponente kojima je moguće izgraditi brz, pouzdan, dovoljno velik, ali i nadasve fleksibilan sustav. Prvi put imamo priliku, čak i kod malih korisnika, implementirati visoku dostupnost i mogućnost oporavka od katastrofe korištenjem samo Windows Servera. Nema gnjavaže sa skupim i točno određenim komponentama koje moramo i smijemo koristiti, famozni vendor lock, već možemo koristiti sve što može raditi s Windows Serverom. Predstavljene tehnologije omogućuju nam izgradnju sustava za pohranu i njegovu primjenu u tvrtkama svih veličina, počevši od najmanjih pa sve do onih velikih, na našu radost, ali i na radost naših korisnika. Ipak, imajte na umu da nas široko dostupne komponente koje je moguće koristiti, ne oslobađaju pažljivog pristupa projektiranju sustava za pohranu. Sve predstavljene tehnologije dostupne su, i pozivamo vas da ih isprobate i upoznate se s njima, bez obzira na to je li pohrana podataka ono čime se svakodnevno bavite. Iako su u visokom stupnju završenosti, imajte na umu da se još uvijek radi o inačici Technical Preview Windows Servera 2016 i da su mogući manji problemi.

IO operacije u ovisnosti o korištenim diskovima
Vrste diskova Priručna memorija (Cache) Virtualni diskovi (Capacity) IO operacije u priručnoj memoriji (Cache IO)
SATA SSD + SATA HDD All SATA SSD All SATA HDD čitanje i pisanje
NVMe SSD + SATA HDD All NVMe SSD All SATA HDD čitanje i pisanje
NVMe SSD + SATA SSD All NVMe SSD All SATA SSD pisanje

NAPOMENA: Ovaj tekst je izvorno objavljen u časopisu Mreža.