Posledné 2 mesiace som sa s kolegami intenzívne venoval výberu storage riešenia. Výber storage platformy pre akýkoľvek účel je komplikovaná úloha a vo finále sa koniec koncov môže ukázať, že neexistuje ani vhodné riešenie pre daný typ problému.
Pri vyberaní riešenia je potrebné si určiť, čo vlastne idete riešiť a aké parametre má spĺňať dané riešenie. Pri výbere storage riešenia by sa malo jednať hlavne o kvantitatívne parametre (IOPS – počet vstupno – výstupných operácií za sekundu, kapacita), ale aj o funkcie a možnosti technickej podpory. Mojim osobným high-level cieľom bolo vybrať také riešenie, ktoré za 3 (a ani 5 rokov) nebude spôsobovať nikomu vrásky na čele.
Pre výber správneho riešenia je kľúčové si zodpovedať niekoľko otázok, ktoré vám pomôžu rozhodnúť sa. S prvými piatimi otázkami sa dnes detailnejšie zoznámite:
- Na aký účel bude slúžiť storage?
- Aký výkon od riešenia chceme teraz a aký za 5 rokov? Počet IOPS a prenosové kapacity.
- Distribuované riešenie alebo centrálne úložisko?
- Opensource alebo blackbox? Alebo niečo medzi tým?
- Ako fungujú zálohy? A ich obnova?
- Koľko volumov/datasetov môžeme vytvoriť? A koľko z nich môžeme zálohovať?
- Potrebujeme synchrónnu replikáciu? Aký je RTO pri zlyhaní diskového pola? Koľko dát môžme stratiť? (časové okno)
- Vidíme do systému? Tj. vieme identifikovať možné príčiny alebo sa jedná o blackbox?
- Aký typ diskov chceme použiť? Hybrid alebo SSD?
- Ak hybridné riešenie, ako na danom riešení funguje cache alebo tiering? Je to tiering alebo cache?
- Čo ak nám nebude stačiť výkon kontrolerov? Aké sú možnosti?
- Aké sú možnosti rozšírenia kapacity?
- Aké protokoly potrebujeme od riešenia? Stačí nám iSCSI alebo potrebujeme aj NAS?
- Ak NAS, …ako funguje? Má separátne riešenie alebo je integrované? Aké protokoly presne podporuje?
- Ako funguje HA? V prípade distribuovaného riešenia, koľko nodov môže umrieť? A čo prípady split-brain? Ak sa jedná o centrálne riešenie, koľko trvá failover medzi controllermi prípade celými diskovými poliami?
- V prípade komerčného riešenia, aký je support, resp. SLA (Service Level Agreement)?
- No a nakoniec, ako je na tom podpora OpenStack Cinder driverov?
Na aký účel bude slúžiť storage?
V mojom prípade bola odpoveď ľahká, keďže už dnes takýto typ dát máme v produkcii. Na novom diskovom poli budú umiestnené disky, resp. obrazy virtuálnych serverov. Obrazy su v rádoch stoviek MB až po stovky GB. Z toho hneď vyplýva, že budem požadovať možnosť snapshotov veľkého množstva volumov, thin-provisioning (lacné klonovanie volumov), možnosť limitovať IO per volume alebo súbor a prístup cez NFS.
Aký výkon od riešenia chceme teraz a aký za 5 rokov?
Počet IOPS, kapacitu a prenosové kapacity. Ak dnes vieme, že máme napr. 100 virtuálnych serverov a každý z nich potrebuje v peaku mať 600 IOPS read-write po dobu 5 minút a mimo peaku 300 IOPS, tak nám výchadza, že diskové riešenie by mali zvládať nárazovo až 60 000 IOPS a kontinuálnych 30 000 IOPS. Obdobne môžene spočítať, že ak za 5 rokov budeme mať 200 virtuálnych strojov a v peaku 800 IOPS atď… Jednoduchá matematika.
Realita je však o niečo zložitejšia. Pri výpočtoch treba brať do úvahy aj procesy ako tvorbu záloh, ich presun na iné diskové pole alebo pásky, možnú degradáciu výkonu pri strate jedného alebo viacerých diskov, rezervu pre prípad preposielania dát, degradáciu výkonu s postupom času – fragmentácia dát, faktor tieringu resp. cache. V neposlednej rade, výkon 6 diskov v RAID 10 je iný ako výkon 6 diskov RAID 6.
Pri diskovej kapacite je riešenie zdanlivo jednoduché. Každý moderný FS, či už založený na Copy-On-Write (napr. ZFS, BTRFS) alebo Write-Anywhere (napr. WAFL) s pribúdajúcim množstvom dát začne výkonnostne degradovať. Odporúčané zaplnenie je max. 75% až 80%. Tento faktor treba zohľadniť už pri návrhu. Okrem iného, ak budeme používať kombináciu SSD a HDD je nutné sa zamyslieť, koľko dát bude v ktorej skupine diskov a ako daná technológia pri konkrétnom riešení funguje. Napríklad pri diskových poliach založených na ZFS je cache (L2ARC a ZIL) rátaná ako cache priestor, teda dáta sú vždy následne uložené na primárne diskové úložisko. Kdežto pri (napr.) Dell Compellent poliach sú dáta uložené iba na jednom z tier skupiny diskov, v našom prípade SSD alebo HDD.
Distribuované riešenie alebo centrálne úložisko?
Dnešným snom firiem je využívať distribuované diskové úložiská postavné napríklad na opensource technológiach ako GlusterFS alebo CephFS, prípade komerčných riešeniach ako SolidFire. Ich veľkou výhodou je možnost takmer neobmedzeného škálovania pridávaním ďaľších jednotiek, prípadne kombinácia storage a výpočtových nodov v cluster-cloud systémoch. Na druhú stranu ich prevádzka je náročná na udržateľnosť – výkon pridávaním nodov nestúpa lineárne, niekedy sa dokonca zastaví resp. degraduje s pridávaním kapacity. Je nutné hneď od začiatku skvelo zvládnuť návrh siete a jej stabilitu, mať vymyslenú disaster recovery stratégiu atď. Z môjho pohľadu, do 200TB by som sa vôbec nad distribuovaným riešením ani nezaoberal. Jeho problémy neprevyšujú prínosy.
Centrálne úložisko je na druhej strane relatívne nezávislé od siete (v zmysle možných splitbrain) za cenu fixnej kapacity a výkonu, resp ich horného ohraničenia. Dnes už existujú aj rôzne cluster technológie, kedy si viacero centrálnych diskových polí vie efektívne distribuovať dáta medzi sebou.
Opensource alebo blackbox? Alebo niečo medzi tým?
Pre oba typy diskových úložísk (distribuované a centrálne) existuje delenie ešte na open-source riešenia s podporou (alebo bez) a čisto komerčnými riešeniami. Výhodou a zároveň najväčšou nevýhodou komerčných riešení je ich uzatvorenosť. Ak raz dostaneme diskové pole ako blackbox, tak na jeho funkčnosť alebo nefunkčnosť máme relatívne malý vplyv. Tak isto možnosti zistenia, prečo sa systém správa ako sa správa, sú značne obmedzené.
Na druhej strane, open-source riešenia umožňujú nazrieť pod pokrievku, zistiť, čo konkrétne diskové pole robí a prečo sa správa tak, ako sa správa. Daňou za otvorené riešenia je ich relatívne rýchly vývojový cyklus a ešte nie vždy 100% vyzrelosť. V prípade opensource riešení je spravidla možné si vyskladať hardvér podľa seba resp. z certifikovaných komponentov, teda na rozdiel od blackbox riešení môžeme kedykoľvek vymeniť CPU, alebo pridať viac RAM.
Ako fungujú zálohy? A ich obnova?
Často chybou pri návrhu storage riešení je nesprávne riešenie záloh a hlavne ich obnovy. Azda každé riešenie dnes umožnuje asynchrónnu replikáciu dát na iné diskové pole s tým istým SW. Jedná sa o najbezpečnejšiu formu záloh z pohľadu samotného diskového pola a v neposlednom rade najjednoduchší spôsob ako obnoviť dáta v prípade kritického zlyhania HW alebo SW. Príkladom môže byť ZFS send-receive, NetApp snapmirror, GlusterFS async replikácia atď. Pri tvorbe záloh si treba dávať pozor na to, koľko dát stratíme pri výpadku tzn. RPO a ako dlho potrvá obnoviť dáta, tzn. RTO.
Prípadne ešte aj dnes sa môžeme stretnúť s riešením záloh na pásky, ktoré je relatívne pomalé avšak trvácne. Existujú aj “lacné” formy riešenia záloh ako rsync na iné lacné diskové úložisko, no ich konzistencia a samotná dĺžka záloh, prípadne obnovy sa môže natiahnuť pri desiatkach TB aj na týždne…