Distribuované souborové systémy


1. Intro
2. Když tři dělají totéž ...
2.1. OpenAFS
2.2. Instalace a konfigurace
3. Reference

1. Intro

Distribuovaný systém souborů je ve své podstatě běžným síťovým systémem souborů. Umožňuje uživateli pracovat se vzdálenými daty stejně pohodlně a jednoduše, jako by to byla data uložena na lokálním disku. Používáte-li unixový operační systém, opravdu nepoznáte zda-li se vámi požadovaný soubor nachází na vašem počítači, nebo na serveru, který je fyzicky umístěn na druhé straně zeměkoule. Jednoduše zadáte cestu (/cesta/nekam/k/souboru), nebo si požadovaná data naleznete svým oblíbeným nástrojem pro práci se soubory. Tohle ovšem, abych tak řekl, není nic nového pod sluncem. Výše popsanou funkcionalitu nabízí v praxi běžně používaný NFS nebo Samba. Distribuované systémy souborů umožňují mnohem více než jen vyexportovat data přes síť.

Nástupem distribuovaných a síťových souborových systémů všeobecně, se počítače a jejich uživatelé stávají více a více závislými na připojení k síti. Uživatelé notebooků a ostatních vyspělých přenosných zařízení tak mohou být v používání těchto systémů velmi omezeni. Distribuované souborové systémy proto nabízejí funkci známou jako "Disconected Operations". Logika systému se potom snaží si pamatovat a lokálně dočasně ukládat často dotazované soubory (OpenAFS). V závislosti na konkrétní implementaci lze systém nastavit tak, aby udržoval kopie přesně specifikovaných dat lokálně. Například CODA a InterMezzo při vhodné konfiguraci dokonce dokáží pracovat offline s celým vyexportovaným domovským adresářem a při opětovném připojení k síti automaticky uložit provedené změny na storage server. Tohle může fungovat i obousměrně, takže pokud je storage serverem váš stolní počítač, můžete takto provádět synchronizaci dat se svým laptopem.

Používáte-li distribuovaný systém souborů, můžete celý vzdálený svazek rozložit přes vícero datových úložišť. Důležitá nebo často dotazovaná data tak mohou být uložena na více fyzických datových serverech, takže jsou dostupná i při výpadku jednoho nebo i několika serverů. Data mohou být také za běhu jednoduše a transparentně přesouvána mezi úložišti, aniž by uživatel cokoliv zpozoroval. Může se tak stát, že pracujete se souborem, který je uložen na serveru kde dochází disková kapacita, administrátor tedy váš soubor přesune na server kde je úložného prostoru dostatek. To vše se odehraje během vaší práce, aniž by jste zaregistroval jakoukoliv změnu nebo dokonce výpadek. Typicky lze této vlastnosti využít při rozkládání zátěže mezi servery - je-li zjištěno přetížení jednoho ze serverů, mohou být data zcela transparentně přesunuta na výkonnější nebo méně zatížený server. Ekonomicky výhodné může být namísto jednoho velkého storage zařízení nasadit vícero menších a levných úložišť propojených distribuovaným systém souborů .

K autentizaci se používají běžné unixové mechanismy jako je LDAP nebo Kerberos. V prostředí malých počítačových sítí lze namísto robustních autentizačních mechanismů používat synchronizaci uživatelů a skupin mezi jednotlivými stroji.

2. Když tři dělají totéž ...

Většinu prostoru dnešního světa volně dostupných distribuovaných souborových systémů si rozdělují tři hlavní hráči - OpenAFS, CODA a InterMezzo. Všechny tři produkty poměrně překvapivě vycházejí z jediného komerčního projektu AFS firmy IBM. První dva jmenovaní jsou v podstatě přímým potomkem AFS, a krom hlavních ideí přebírají ve větší či menší míře i části kódu. Ovšem zatímco OpenAFS se snaží důsledně následovat svého předchůdce, tedy ucelovat robustnost a stabilitu, CODA se vydala cestou experimentů a rozšiřování základny nabízených funkcí - často však na úkor použitelnosti celého systému v praxi. InterMezzo nevychází z AFS přímo, ale spíše staví na praktických zkušenostech jeho potomků. Na rozdíl od těch je InterMezzo naprogramováno kompletně od začátku. Nejčastěji se v praxi používá OpenAFS.

2.1. OpenAFS

AFS používá klient/server výpočetní model. Servery uchovávají data a poskytují služby klientům. Klienti zpřístupňují uživatelům data uložená na serverech a provádějí nezbytné výpočty při práci s daty. Stroje mohou zároveň vystupovat jako klient i server.

AFS umožňuje spojit diskové kapacity vícero diskových úložišť do jednoho souborového systému. Tím je možno nejen zvýšit dostupnost důležitých a často používaných souborů, ale také rozložit celkový nápor na systém mezi více složek - úložišť.

Každý klient mající přístup do AFS stromu má příslušnost k nějaké buňce - cell. Buňka je jakási AFS doména, lze ji přirovnat ke kerberovskému realmu. Každá buňka má svého administrátora, který spravuje její datová úložiště a určuje které počítače jsou buňce příslušné a kolik diskového prostoru je jednotlivým uživatelům přístupno. Buňka obvykle odpovídá společnosti, části nějaké university nebo jakékoliv definované skupině uživatelů. Buňka do které náleží váš počítač se nazývá local cell ostatní se jsou pak označovány termínem foregin cells. Sdružení více buněk jedné organizace se nazývá site. Podle konvencí je na klientských počítačích AFS souborový systém přístupný v adresáři /afs. Potom by například buňka unixové laboratoře byla přístupná v /afs/fi.muni.cz/lab.

Když pracujete se AFS, všechny vaše požadavky - pohyb adresářové struktuře, výpis obsahu adresářů, práce se soubory - jsou zpracovávána Cache Managerem. Pokud tedy přistupujete k nějakému souboru v AFS stromu, váš požadavek je zcela transparentně předán Cache Manageru, ten požadovaná data z příslušného serveru stáhne a jejich kopii si uloží do keše. Tento přístup sice urychluje práci s daty, ale musíte si uvědomit, že pracujete s lokální kopií dat, vámi provedené změny se tak ukládají pouze lokálně. Všechny provedené změny jsou na server promítnuty v až okamžiku zavření souboru. Je-li diskový server nedostupný, pak Cache Manager zařadí požadavky na změny do fronty a uloží je jakmile opětovně získá přístup k úložišti.

Může se také stát, že máte nakešovaná data, dejme tomu jen pro čtení, a chcete mít k dispozici pořád jejich aktuální verzi. O aktuálnost nakešovaných dat se stará takzvaný callback mechanismus. Když server pošle Cache Manageru data, pošle mu i callback. Jakmile dojde na ke změně centrálně uložených dat, server zruší callback - File Server breaks the callback. Pokusíte-li se teď použít nakešované soubory, Cache Manager zjistí, že callback byl zrušen a nahraje aktualizované informace.

2.2. Instalace a konfigurace

  • stáhnout afs zdroj z www.openafs.org, poslední unstable verze je 1.3.81 a lze ji provozovat s jádry řady 2.6, poslední stable verze pro unix je 1.2.13 (pouze jádra 2.4)

  • kompilací afs se rozumí kompilace jaderného modulu a zároveň obslužné aplikace

  • OpenAFS požaduje přístup ke zdrojovým kódům jádra se kterým bude zkompilováno - pozn.: v adresáři s zdrojovými kódy jádra musíte provést alespoň make oldconfig

  • ./configure --with-linux-kernel-headers=/path/to/linux-source/ --enable-transarc-paths --prefix=/usr/afsws --with-afs-sysname=i386_linux24

    make

    make install

  • po kompilaci se afs modul nachází v adresáři afs-source/src/libafs/MODLOAD-xx.xx.x-SP/libafs-xx.xx.xx.ko, kde xx.xx.xx je verze jádra

  • dále třeba nakonfigurovat příslušnost k Cell, nastavit Cache (většinou ext2 partition)

3. Reference