05.05.2008 Je libo replikovaný filesystem?

Seznam.cz se rozhodl uvolnit tři další buchtičky ze své vývojářské kuchyně. Cfgparser, Dbglog a hlavně SeznamFS.

O prvních dvou technologiích se zmíním někdy jindy. Teď bych se chtěl věnovat hlavně SeznamFS. První myšlenky na něco takového jsme vedli asi tak před půl rokem v hospodě U Žíznivého jelena v Praze na Smíchově. Nutno podotknout, že to byly velice filozofické debaty :), jak to tak už u piva bývá. Konkrétní podobu tomu dal až čas, konzultace a příspěvky na vnitrofiremním diskuzním fóru.
Jako Open Source existuje sice celá řada systémů (Coda, GlusterFS), které by se určitě taky daly použít, ale z nějakého důvodu se nám jakékoliv jiné řešení zdálo buď zbytečně složité, nevýkonné, nebo síťově moc ukecané.

A tak se stalo, že se jednoho krásného dne Eda (jeden z členů mého týmu) o víkendu tak nudil a nedalo mu to, že se do toho prostě pustil a v pondělí přinesl do práce první funkční prototyp. Eda to nakonec dotáhl až do konce, ještě to chtělo hodně ladění, ale výsledek je asi přesně to, co jsme čekali.

A co to vlastně je a jak to funguje? Jedná se o replikovaný filesystem postavený na Filesystem in Userspace, zkráceně FUSE. Stačí tedy na jakémkoliv Unixovém počítači s modulem fuse připojit nový filesystem a SeznamFS se bude starat o to, aby všechny operace v tomto bodě zapisovaly do binárního logu. Základní filozofie je v podstatě okopírovaná z MySQL master master replikace databází.

Binární log obsahuje všechno, co je důležité pro repliku filesystemu do jakéhokoliv jiného umístění. Všechny operace (touch, mv, rm, ln, chmod, chown ...) v něm lze nalézt a samozřejmě i všechna zapsaná data. Systém je postaven na master-slave komunikaci. Každá instance systému může sloužit jako master a zároveň si může stahovat data z jednoho slave systému. Hlavní síla celého řešení je v tom, že lze zapisovat do několika míst najednou, typicky na dva různé počítače, mezi kterými existuje TCP spojení a SeznamFS se postará o zreplikování souboru na druhou stranu. Další velkou výhodou je to, že se při změně nepřenáší celý soubor, ale jenom změněný blok na filesystemu a pak samozřejmě jednoduchá instalace a konfigurace.
Data, která se zapisují do mount pointu, se přesunují na klasický filesystem (EXT3, nebo cokoliv jiného do jakéhosi Storage adresáře), který máte nainstalovaný na počítači a jsou dostupná v nezměněné podobě. Zápisové i čtecí operace se tedy provádějí v mount pointu a pokud je potřeba číst ze systému opravdu hodně, dá se pro tento účel storage adresář bez problémů použít.
Pro administraci celého systému slouží jednak konfigurace, a druhak se da použít konzole v příkazovém řádku, ve které je možno i měnit část konfigurace a hlavně zadávat přikazy nutné pro správu systému.

Projekt má svou vlastní webovku s perfektní dokumentací na http://seznamfs.sourceforge.net/.

První projekt na kterém jsme SeznamFS vyzkoušeli je www.sport.cz pro replikaci obrázků a videí. Plánujeme nasazení na www.novinky.cz a taky na www.seznam.cz pro distribuci uživatelských favicon a dalších věcí.

A nakonec něco pro fajnšmekry. SeznamFS je napsaný v C++, síťově a v binlogu je Big Endian, to znamená, že replikace je možná i mezi souborovými systémy na různých platformách.

Komentáře (0)

© 2008. Weblog nejen o práci. www.Karotka.cz. Rss    Google Pagerank - www.karotka.czGoogle Pagerank S-Rank - www.karotka.czS-Rank