Typy počítačových datových úložišť (Storage Types)
Hlavní rozdělení úložišť je podle způsobu uložení dat (či přístupu k datům). Nejnovější jsou objektová úložiště, na které se zaměřuje tento článek. Bloková úložiště jsou popsána ve starším článku Storage technologie a SAN sítě aneb připojení serverů k diskovému poli.
Pozn.: Zde se věnujeme síťovým úložištím, takže varianta přímo připojených disků/zařízení (DAS) je uvedena pouze pro úplnost a dále ji neuvažujeme.
Souborové úložiště (File Storage)
Data se nachází v souborech, které jsou uloženy (organizovány) v hierarchické adresářové struktuře. Podporuje sdílení, řízení přístupu a zamykání souborů na úrovni uživatelů. Vhodné pro spolupráci a sdílení. K úložišti mohou přistupovat přímo uživatelé.
- Network Attached Storage (NAS)
- síťová technologie Ethernet
- komunikační protokol TCP/IP
- protokol pro práci s daty NFS, SMB/CIFS
Blokové úložiště (Block Storage)
Data se rozdělí na bloky pevné velikosti, které nemají žádný kontext nebo strukturu a jsou uloženy nezávisle na sobě. Každý blok má unikátní adresu, pomocí které se k němu přímo přistupuje. Na blokovém úložišti je většinou nasazen souborový systém. Nízká latence, vysoký výkon, můžeme připojit více serverů. Úložiště využívají typicky servery místo lokálních disků.
- Storage Area Network (SAN) nebo Directly Attached Storage (DAS)
- síťová technologie Ethernet nebo Fibre Channel
- transportní protokol TCP/IP s iSCSI, Fibre Channel over Ethernet (FCoE) nebo Fibre Channel Protocol (FCP)
- protokol pro práci s daty SCSI
Objektové úložiště (Object Storage)
Data jsou ukládána jako objekty, kde každý objekt obsahuje samotná data, metadata a unikátní identifikátor. Vysoká a jednoduchá škálovatelnost, ideální pro ukládání obrovského množství nestrukturovaných dat. Přístup přes API, které mohou využít uživatelé či aplikace.
- síťová technologie Ethernet
- komunikační protokol TCP/IP
- protokol pro práci s daty HTTP, REST API
Oddělená síť pro úložné systémy
Blokové uložiště využívá SAN síť. Server pracuje s úložištěm stejně, jako by šlo o přímo připojené disky. Pokud používáme technologii Fibre Channel, tak máme specializovanou síťovou infrastrukturu, která je oddělená od běžné LAN sítě (ta využívá Ethernet). I v případě iSCSI se doporučuje používat oddělenou síť (vyhrazené síťové prvky) z důvodu výkonu a bezpečnosti.
Jinak je to v případě souborového úložiště. Uživatelé přistupují přímo k úložišti, takže musí být dostupné po LAN síti. Podobně objektové úložiště se využívá po LAN síti nebo dokonce WAN síti (často jde o cloudové služby). Použité technologie řeší zabezpečení dat a řízení přístupu.
Efektivita a výkon
Různé typy úložišť jsou vhodné pro různé účely a poskytují rozdílný výkon. Nejnižší latenci a nejvyšší přenosovou rychlost nabízí bloková úložiště. Záleží na transportním protokolu, režii komunikace, množství zapouzdření apod. Nejvíce efektivní je Fibre Channel, který byl speciálně navržen pro připojení k úložným systémům. V rámci Ethernetu dnes máme velmi vysoké rychlosti a pro iSCSI optimalizovaný hardware, takže může jít o stejně dobrou volbu.
Objektová úložiště využívají standardní protokoly, uvnitř kterých přenáší data. Mají proto vyšší latenci a nižší výkon. Ale podporují moderní protokoly a algoritmy. Jsou vhodné pro velké objemy dat, jako jsou zálohy a multimédia. Díky přístupu k datům přes API umožňují snadnou integraci do moderních (cloudových) aplikací.
Objektová úložiště (Object Storage)
Objektové úložiště je systém pro ukládání a správu dat, který zachází s informacemi jako s objekty namísto tradičních souborů či bloků. Každý objekt obsahuje, mimo vlastních dat (souborů), unikátní identifikátor (klíč) a metadata popisující jeho obsah a vlastnosti. Objekty jsou organizovány do kbelíků (buckets).
Není určen formát pro obsah uložených data. Můžeme ukládat různé typy dat (jako dokumenty, videa, zálohy) efektivně a bezpečně. Je vhodné pro velké objemy nestrukturovaných dat. Hlavní atributy objektových úložišť jsou vysoká škálovatelnost a bezpečnost, dále maximální trvanlivost a dostupnost s možností geografické replikace.
Pro přístup k objektovému úložišti se využívá API, standardně přístupné přes HTTP protokol. Různí výrobci mohou mít různou implementaci rozhraní (API), která nemusí být kompatibilní s jinými systémy. Velké množství poskytovatelů podporuje de facto standard Amazon S3 REST API. Mluvíme pak o S3 kompatibilním objektovém úložišti.
Metadata objektu
Metadata slouží k popisu objektu a jeho vlastností a můžeme je přizpůsobit našim potřebám. Pro metadata s pevným klíčem můžeme upravovat hodnotu. Navíc můžeme přidávat vlastní metadata zadáním klíče a hodnoty. Pomocí metadat můžeme vyhledávat a organizovat data.
Metadata index uchovává záznam o každém objektu, jeho ID a další metadata, jako řízení přístupu, datum vytvoření a velikost. Tyto informace jsou uloženy odděleně od reálných dat. Index umožňuje rychle a efektivně vyhledávat a načítat objekty na základě jejich atributů. Což je velký rozdíl oproti souborovým úložištím, kde hledáme pouze podle názvu.
Fyzická podoba objektového úložiště a ukládání dat
Objektový úložný systém je často tvořen více propojenými fyzickými uzly (node / server). Můžeme jednoduše přidávat další uzly a stále rozšiřovat kapacitu. V praxi výrobci podporují určitý maximální počet uzlů. Výhoda je možnost seskupení zařízení do velkých úložných poolů, které lze rozdělit i na více lokalit. Toto řešení umožňuje škálování, zvyšuje odolnost, výkon a dostupnost dat.
Datové objekty mohou být rozloženy přes více (všechny) uzlů. Můžeme také využít replikaci a stejná data se mohou nacházet na více místech (na více úložištích nebo v různých geografických lokalitách). V praxi poskytovatelé umožňují nastavit automatickou replikaci mezi regiony.
Objektové úložiště může využívat různé techniky pro vlastní uložení dat, které jsou transparentní pro uživatele. Může jít o blokové úložiště a můžeme využívat RAID (Redundant Array of Independent Disks, třeba RAID 6). Ale často se využívá moderní technika nazvaná Erasure Coding. Ta je podobná jako RAID, ale pro určitá použití je vhodnější.
Erasure Coding (EC)
Erasure Coding je pokročilá metoda ochrany dat a zvýšení odolnosti proti ztrátě. Umožňuje obnovit ztracená nebo poškozená data prostřednictvím matematických algoritmů. Používají se datové (k) a paritní (m) bloky a mluvíme o schématu EC (k+m).
Funguje následně:
- data se rozdělí na menší části (datové bloky), třeba 8
- vypočítá se několik dodatečných (redundantních) paritních bloků z původních, třeba 2
- paritní bloky umožňují obnovit (rekonstruovat) ztracené bloky
- datové i paritní bloky se uloží na různé disky, uzly či úložiště
Erasure Coding může fungovat mezi více uzly nebo úložišti. Můžeme tedy chránit před selháním celého uzlu. Je výpočetně náročnější, ale má lepší škálovatelnost a efektivitu. Rebuild při výpadku disku může být rychlejší. Naproti tomu RAID funguje v rámci přímo připojených disků v jedné fyzické jednotce. Nabízí nižší latenci a rychlý přístup.
V praxi funguje Erasure Coding odlišně pokud máme systém s jedním uzlem nebo více uzly. Pro malé objekty se nevyplatí používat Erasure Coding a můžeme používat replikaci. V případě lokální ochrany (jeden uzel) se datové a paritní bloky uloží na různé disky, použije se třeba EC (8 + 2). V případě síťové ochrany (více uzlů) se datové a paritní bloky uloží na různé uzly, použije se třeba EC (2 + 1), podle počtu uzlů. Případně můžeme kombinovat oboje, takže máme lokální ochranu před výpadkem disku v rámci uzlu a síťovou ochranu před výpadkem celého uzlu.
Bezpečnost a objektová úložiště
Díky použití standardních protokolů se využívají jejich bezpečnostní vlastnosti. Šifrování komunikace pomocí TLS (komunikace přes HTTPS), mechanismy autentizace apod.
V objektovém úložišti přistupujeme k jednotlivým objektům a můžeme řídit jejich oprávnění. Využívají se moderní autentizační protokoly a algoritmy, jako OAuth 2.0 tokeny a RSA přístupové klíče. Naproti blokovému úložišti, kde přistupujeme k celému svazku a pro autentizaci se používají zastaralé protokoly a algoritmy (třeba u iSCSI je to CHAP).
Běžně můžeme data chránit šifrováním při přenosu (Encrypt Data In-Flight / In-Transit) pomocí TLS (Transport Layer Security) a certifikátu. A je podporováno šifrování uložených dat (Encrypt Data At-Rest) pomocí šifrovacího klíče.
Zdroje objektového úložiště (Object Storage Resources)
Pro organizaci dat uložených v objektovém úložišti se využívají následující komponenty.
Jmenný prostor (Object Storage Namespace)
Jmenný prostor (Namespace) zajišťuje unikátnost názvů kbelíků v rámci systému. Je to kontejner nejvyšší úrovně pro všechny kbelíky a objekty. Je zařazen do určitého regionu.
Použití se liší podle poskytovatele. Některé sužby (třeba Oracle Cloud Object Storage) vytváří Namespace pro každého zákazníka, pak musí být jméno kbelíků unikátní v rámci zákazníka a regionu. Jiné služby (třeba Amazon S3) Namespace v podstatě nepoužívají a jméno kbelíků musí být jedinečné pro všechny účty ve všech regionech v rámci oddílu (partition je seskupení regionů).
Kbelík (Object Storage Bucket)
Kbelík (Bucket) je základní logický kontejner (organizační jednotka) pro ukládání objektů. Každý kbelík má unikátní jméno a je zařazen do určitého regionu. Přístup k objektům v kbelíku můžeme řídit různými mechanismy, jako Bucket Policies (pravidla přístupu na úrovni kbelíku), Access Control Lists (ACL, oprávnění objektu) apod. Řada poskytovatelů (Amazon, Google) automaticky šifruje veškerá uložená data.
Příklad adresy (URL) kbelíku v Oracle Cloud Object Storage
https://object-storage-namespace.compat.objectstorage.region.oraclecloud.com/bucket
Objekty (Objects)
Objekty mohou mít různou velikost nebo formát. Můžeme ukládat videa, logy, zálohy, aplikační data nebo jakýkoli jiný typ strukturovaných či nestrukturovaných dat. Objekty jsou uloženy v plochém datovém prostředí (bez hierarchie) a lze k nim přistupovat více cestami.
Adresování objektů je pomocí jejich identifikátoru - klíče (či názvu klíče). Můžeme využít předpony názvů a oddělovač a tím emulovat koncept složek (třeba použití klíče objektu photos/sample.jpg
). Pro přístup k objektu (zdroji) vyžíváme URI (Uniform Resource Identifier), které může vypadat následně:
https://bucket-name.s3.amazonaws.com/object-key
Jednotlivé objekty mohou mít určitou maximální velikost, která závisí na poskytovateli, ale často jde o limit 5 TB. Navíc bývá omezena velikost jednoho uploadu (třeba 5 GB), takže větší objekty musíme rozdělit na části a využít multipart upload. Velmi velká data můžeme rozdělit na více objektů.
Funkce objektových úložišť
Objektová úložiště nabízejí různé rozšiřující vlastnosti, které lze konfigurovat. Může jít třeba o
- Logging – monitoruje (loguje) operace v úložišti
- Lifecycle Management - automatizuje mazání nebo přesun objektů (či verzí objektů) do levnějších úložišť (storage class)
- S3 Versioning - uchovává více verzí objektu
- S3 Object Lock – brání trvalému odstranění objektů
S3 Versioning
Funkce verzování uchovává více verzí objektu ve stejném kbelíku. Umožňuje obnovit omylem smazané nebo přepsané objekty. Kbelík se zapnutým verzováním udržuje jednu aktuální verzi objektu a nula nebo více neaktuálních verzí objektu. Tato funkce spotřebovává více prostoru a zvyšuje náklady.
S3 Object Lock
Zámek objektu blokuje trvalé odstranění objektu během definované doby retence. S3 Object Lock využívá S3 Versioning a společně brání trvalému odstranění nebo přepsání uzamčených verzí objektu (princip WORM). Slouží k zajištění Immutability (neměnnosti) jako ochrany před Ransomware. Můžeme nastavit na kbelík nebo jednotlivé objekty.
Režimy uzamčení
- Governance Mode – uživatel se speciálním oprávněním má právo úpravy či mazání
- Compliance Mode – nikdo (ani root) nemůže upravovat či mazat
Doba zamčení
- Retention Period – nastavujeme pevnou dobu, po kterou je objekt uzamčen
- Legal Hold – verze objektu jsou chráněny neomezeně dokud není Legal Hold odstraněn
Přístup k objektovému úložišti (API)
S objektovým úložištěm se komunikuje primárně pomocí API (Application Programming Interface), což umožňuje snadný přístup k datům bez ohledu na jejich fyzickém umístění. Uživatelé a aplikace mohou pomocí API ukládat, načítat a spravovat datové objekty.
Většina systémů objektových úložišť podporuje některé standardizované API. Například rozhraní Amazon S3 API, OpenStack Swift API nebo CDMI (Cloud Data Management Interface). Díky API mohou vývojáři jednoduše integrovat objektové úložiště do aplikací bez ohledu na technologii nebo dodavatele.
Amazon S3 (Amazon Simple Storage Service)
Patrně nejrozšířenější objektové úložiště je cloudová služba Amazon Simple Storage Service (Amazon S3) od Amazon Web Services (AWS). Amazon k němu vytvořil rozhraní S3 API postavené na REST API. To definuje konkrétní metody pro práci s objekty, strukturu požadavků, hlavičky a odpovědi. Navíc podporuje správu verzování objektů, nastavení politik přístupu, podporu více regionů a replikaci dat.
Pro využití API k načítání objektů můžeme použít i jen webový prohlížeč, pokud jsou objekty anonymně čitelné. API volání můžeme provádět z nějakého kódu nebo můžeme použít AWS SDK či AWS CLI. Požadavky na Amazon S3 mohou být ověřené nebo anonymní. Pro ověřený přístup potřebujeme platné přihlašovací údaje (pověření) a oprávnění přístupu k určitým zdrojům.
S3 kompatibilní úložiště (S3 Compatible Storage)
Díky rozšíření Amazon S3 se jeho API stalo de facto standardem pro Object Storage API. Proto řada výrobců úložišť a softwaru implementuje API kompatibilní s Amazon S3. Označují se jako S3 kompatibilní úložiště (S3 Compatible Storage) nebo S3 Object Storage. Tím se řeší jednotné rozhraní pro operace s úložištěm a kompatibilita mezi různými systémy. Mohou se využívat existující nástroje a knihovny pro S3, což je celý rozsáhlý ekosystém.
REST API či RESTful API
REST API (REpresentational State Transfer Application Programming Interface) je styl návrhu (architektura) webových služeb, který umožňuje komunikaci mezi klientem a serverem (nejčastěji) přes protokol HTTP. Umožňuje aplikaci nebo službě (klient) přistupovat k prostředku v rámci jiné aplikace nebo služby (server). REST je jednoduchý, flexibilní a široce používaný.
Komunikace je pomocí HTTP požadavků a využívá běžné HTTP metody GET, POST, PUT, DELETE. Pro přenos informací klientovi se může využít libovolný formát, ale často je využíván JSON. Pro REST API volání jsou také důležité záhlaví a parametry požadavku, které mohou obsahovat metadata, autorizaci, URI apod. Každý objekt nebo data jsou reprezentována jako zdroj (Resource) a identifikována pomocí URI (Uniform Resource Identifier, např. https://example.com/resource/123
).
REST poskytuje jednotné rozhraní (Uniform Interface), je bezstavový (Statelessness), podporuje vrstvenou architekturu a možnost ukládání do mezipaměti.
Příklady objektových úložišť
Cloudové služby
- Amazon S3 (S3)
- Google Cloud Storage (S3 kompatibilní)
- Microsoft Azure Blob Storage
- IBM Cloud Object Storage (S3 kompatibilní)
- Wasabi Cloud Storage (S3 kompatibilní)
- Cloudflare R2 (S3 kompatibilní)
- MinIO AIStor (S3 kompatibilní)
Lokální úložiště (On-Premises řešení)
- ObjectFirst OOTBI (S3 kompatibilní)
- Scality ARTESCA (S3 kompatibilní)
- Pure Storage FlashBlade (S3 kompatibilní)
- NetApp StorageGRID (S3 kompatibilní)
- HPE Alletra Storage Servers + Scality (S3 kompatibilní)
- Cloudian HyperStore (S3 kompatibilní)
Zatím zde nejsou žádné komentáře.