Na stránkách cloudsvet.cz máme rubriku Scale-out datových modelů – objektová storage je rozhodně zajímavým zástupcem. Jak funguje a jaké má použití? Proč ji nasadit a proč ne?
Bloková storage aneb disk na kšandě
Pevný disk začal jako jednotka připojená drátem k počítači a po mainframe začátcích dlouho představoval placatý SCSI drát mezi základní deskou a diskem. To co nabízí je velmi nízkoúrovňový systém, bloková storage, která je schopná zapsat bity a nijak se nesnaží je interpretovat. Teprve nad tím stavíte něco užitečného, tedy vytváříte nad blokovou storage nějakou vyšší abstrakci, něco, co dokáže dát bitům nějaký význam. Třeba to bude souborový systém, který dokáže vnést do vašeho života shluky bitů se začátkem a koncem (tj. soubory) a třídit je v hierarchii. Možná to bude databázový systém, který vám nabídne interpretaci světa jako tabulky s pevným počtem sloupcům. Třeba půjde o NoSQL volněji uložených méně strukturovaných dat nebo objektová storage.
Jak šel čas, zjistilo se, že lokální disky mají v době po mainframech své nepříjemné vlastnosti – využitá kapacita byla nízká a rozšiřitelnost problematická (dlouho rovnající se nutnosti server vypnout, ale i dnes není proces přidání jen otázkou fyzického zacvaknutí). Navíc točící se disk není z nejspolehlivějších, v dřívějších dobách nebyly moc rozšířené techniky pro držení dat scale-out způsobem a redundance znamenala obrovské zdražení. Logickým krokem tedy byla centralizace a vznik klasického storage pole. Hromadu disků nahrneme do velké bedny, některé z nich použijeme pro redundanci (kontrolní součty apod.) a připojíme do velkého chytrého řadiče. Ten následně nad nimi vytvoří představu menších disků a tu simuluje serverům. Ty si dodnes myslí, že mluví do své “kšandy” SCSI protokolem, ten je ale protlačen zabalen třeba ve Fibre Channel nebo iSCSI přes síť do pole.
Co kdybychom místo toho nabídli aplikacím nějaký vyšší typ přístupu? Kolik aplikací dnes vyžaduje samostatný formát disku? Mnoho úkonů zajistí souborový systém, databáze, NoSQL systém nebo právě objektová storage. Ba co víc – některé z nich, zejména objektová storage a NoSQL, umí pracovat jako scale-out, takže se staví z komoditních serverů, do kterých dáte lokální disky (v Object Store typicky bez RAID). To propojíte mezi sebou a máte skutečně masivní systém s obrovskou škálou a celou řadou výhod.
Objektová storage
Vyťukejte v prohlížeči www.cloudsvet.cz. Co se stane? Browser kontaktuje tuto URL (a zajistí si informace o všem pod tím, tedy z DNS sežene IP, z ARP zjistí cílovou MAC nebo MAC výchozí brány) a co dostane? Přistane mu proud bitů, kterým bude HTML soubor a ten browser interpretuje. Pokud si na našem webu dáte stáhnout PDF ze sekce Dokumenty, pošle web server do prohlížeče jiný proud reprezentující PDF soubor. Nebo to bude obrázek a ten se vám začne vykreslovat tak, jak k vám bity přichází. Možná to bude podcast nebo video, které začnete poslouchat a neřešíte, že ještě nedorazil poslední bit ze závěrečných titulků. Možná to nebudou data přímo pro browser, ale půjde o RESTful API (webové programovací rozhraní) využívané mobilní aplikací na vašem telefonu nebo se takto propojí vaše ERP s ERP dodavatelů. Takhle funguje web a HTTP.
Objektová storage je vlastně web – jak nahrávání tak čtení je stejné, jako pohyb po webu. Každý nahraný objekt zahrnuje metadata (popis o co jde apod.) a URL, kde ho najdete. K jeho získání nepotřebujete žádný nízkoúrovňový protokol – neřešíte iSCSI, nastavení FC adaptéru, stačí IP konektivita, která funguje vždy stejně – z Ethernetu, WiFi, 3G nebo LTE. Nemusíte znát žádný protokol – FTP, NFS, SMB, SCSI – stačí HTTP, které umí nejen vaše servery a počítače, ale i telefon, televize, lednička a vaše auto. To je obrovská síla objektové storage.
Tento typ ukládání dat za sebou nemá dlouhou historii, existující trhy, které by bylo třeba bránit, patenty, zákazníci a jejich proinvestované prostředky. To je jeho velká výhoda, může na to svobodně a jak se říká on lesa – přímo ve svých pricipech má decentralizované distribuované řešení, je tedy nativně scale-out.
Scale-out vlastnosti
Objektová storage obvykle funguje tak, že vezmete jednoduché nody (server s lokálními disky) a nahrajete tam chytrý software (ano, objektová storage pokud vím je výhradně typu software-defined storage). Řešení obsahuje směrovací mechanismus, který udržuje přehled o tom, kde se který objekt fyzicky nachází – tedy má mapování URL (což je jednoznačný identifikátor objektu) na fyzické servery, kde objekt je (objekt se uloží celý na server a většinou i na několik dalších pro redundanci). Směrovač je schopen identifikovat odumřelé nody a požadavky uživatelů směrovat na ty, co fungují a jsou blízko. Další komponentou je out-of-band kontroler a také nějaký proces, který udržuje přehled integrity. Tak například vytvoříte pravidlo, že jistý typ dat bude uložen minimálně na třech nodech, které jsou rozprostřené přes minimálně dvě zóny dostupnosti (o komplexnějších politikách později). Pokud dojde k roztržení clusteru, havárii nodu nebo odpadnutí celé zóny, zajistí mechanismus potřebnou “doreplikaci” tak, aby bylo všem politikám učiněno zadost. Všechny uvedené části, které by se daly označit za řídící, fungují na principu scale-out clusteru. S každým nodem tak zvyšujete jak celkovou kapacitu, tak celkový výkon a to plynule a za provozu (už žádné situace, kdy vám dojdou pozice pro disky v poli nebo kdy musíte vyhodit stávající kontroler a nahradit silnějším).
Některé objektové storage replikují objekty na nastavený počet kopií průběžně, tedy s eventuální konzistencí (AP systém dle CAP teorému) – například OpenStack Swift. Jiné ve výchozím stavu s odpovědí o úspěšném zápisu čekají, dokud nebude dosaženo určitého počtu úspěšných zápisů (třeba nastavíte, že OK se vrátí po dvou úspěšných zápisech a další jednu kopii už doreplikujete později) tak, jak to dělá třeba CEPH (to odpovídá CP systému dle CAP teorému). Někdy je možné použít erasure coding místo plných replik.
Umí toho ale daleko víc. Například časově omezené uložení, dočasně přístupnou URL, možnost vytvářet velmi zajímavé politiky zahrnující typ dat i geografii, verzované zápisy (modifikace objektu nesmaže předchozí verzi) a tak podobně.