Sheepdog
Sheepdog je škálovatelný systém, který poskytuje virtuálním strojům distribuovaná bloková zařízení. Za jeho vývojem, který začal v r. 2009, stojí vývojáři japonské firmy Nippon Telegraph and Telephone Corporation. Sheepdog je opensource aplikace s GPL2 licencí. Zatím poslední verzi 0.9.3, vydanou v listopadu 2015, by měla následovat verze 1.0 použitelná i pro komerční nasazení[1].
Vlastnosti
Jak funguje Sheepdog je velice srozumintelně popsáno v publikované prezentaci[1], proto se omezím pouze na stručný přehled.
- Je škálovatelný
- Datový prostor lze za běhu libovolně navyšovat jak na úrovni nodů, tím že se zvětšuje jejich datová kapacit, tak i jejich počtem. Čím větší počet nodů, tím vyšší I/O výkon VDI
- Je jednoduchý
- Na rozdíl od jiných systému jakým je kupř. CEPH, Sheepdog nepracuje přímo se souborovým systémem, ale s bloky dat o fixní velikosti, tudíž nepotřebuje mít separátní démony pro údržbu metadat. Veškerá správa se provádí prostřednictvím jednoho nástroje dog, který komunikuje přímo s ovečkami (sheep)
- Počítá s výpadkem nodu
- Každé VDI je tvořeno právě těmito bloky (objektů), které se současně replikují přes několik nodů, takže pokud některý z nich vypadne jsou data stále dostupná, a objekty se místo nodu který vypadnul začnou replikovat na jiný nod.
- Podporuje snapshoty na úrovni blokového zařízení
- Snapshotování u Sheepdogu funguje podobně jako u Btrfs. Bloky snapshotovaného VDI zůstávají zachovány a nová data se zapisují do nových bloků.
Problematické mohou být za určitých okolností tyto vlastnosti:
- Sheepdog nemá SPOF
- Pokud se používá VDI jako blokové zařízení prostřednictvím QEMU, tak může nastat problém v případě, že bude současně namapované na více míst. Tomu by mohl zabránit SPOF[3], který ovšem Sheepdog nemá. U novější verze Sheepdogu však lze VDI uzamknout tak, aby na něj nemohlo být víc připojení než jedno.
- Životní cyklus datových objektů
- Objekty VDI, lze odstranit teprve tehdy, až jsou odstraněny všechny klony a snapshoty, které na ně také nějakým způsobem odkazují. Je to stejné chování, jako má kupř. Btrfs. K uvolnění místa na úložišti tak nemusí odstranění již nepoužívaných snapshotů stačit.
Sestavení ze zdrojových kódů
Sheepdog se stará primárně o distribuci dat. Pokud jde o vzájemnou komunikaci mezi nody, předpokládá, že ji zajistí nějaký komunikační démon. I kdy se při sestavení zdrojového kódu vytvoří i komunikační démon shepherd, jeho vývoj zatím nepřekročil testovací stadium. A domnívám se, že pravděpodobně bude časem z kódu ostraněn, protože věci které měl původně řešit byly přesunuty do administrační utility dog. Sheepdog tak předpokládá, že komunikace nodů už je zajištěna jiným způsobem.
Primárně má podporu pro komunikaci prostřednictvím corosyncu, který používá i Pacemaker. Ovšem může být sestaven i podporou komunikace přes zookeeper, který je naprogramován v javě. Podle autorů Sheepdogu je prý i lepší, pravděpodobně proto, že má srozumitelnější a jednodušší konfiguraci nodů, ale skripty pro sestavení instalačního balíku pro Debian s ním nepočítají. |
Důvodem proč si sestavit Sheepdog ze zdrojových kódů je fakt, že v oficiálním repozitáři Debianu je v současné době víc jak rok a půl stará verze 0.8.3 ze srpna 2014, ale vývojáři pro komerční nasazení doporučují verzi 0.9.1 a vyšší.
Zdrojový kód v repozitáři Sheepdogu, má podporu pro sestavení .deb balíku.
Spuštění clusteru
VDI
Je u Sheepdogu obecná zkratka pro označení virtuálního disku, nikoliv jeho specifický formát[4]. Je to v podstatě virtuální box s přihrádkami o fixní velikosti, do kterých pak bude Sheepdog umisťovat data, která bude posílat klient.
Vytvoření VDI
Než vytvoříme, nebo naimportujeme první VDI je třeba naformátovat cluster. Při formátování clusteru se nastaví parametry, které se pak budou uplatňovat jako výchozí při založení každého dalšího VDI.
- Id
- Identifikátor VDI
- Size
- Velikost VDI, která však nemusí být ihned obsazena (prealokována).
- Used
- Aktuálně alokovaný objem dat.
- Shared
- Objem dat, sdílených s jiným VDI
- Creation time
- Čas založení VDI
- Block size
- Starší verze používaly výhradně fixní velikost bloku 4MB. V současné době si již lze velikost VDI objektu nastavit i větší. Ale pozor! Velikost se nezadává v MB, ale jako hodnota mocniny dvou bajtů. Výchozí je minimální hodnota - 22 (4MB). Méně ani nelze nastavit. Maximálně lze používat objekty o velikost 31 (2GB). To může být výhodné, pokud se do VDI ukládají větší objemy statických dat. Pro VDI běžného virtuálního stroje se mi jeví jako optimální velikost objektu 64MB (26). Čím menší velikost objektu, tím větší je počet souborů se kterými musí Sheepdog v rámci VDI pracovat a tím je i větší IO zatížení fyzických strojů. U větších VDI, bez žurnálu a kešování, nad pomalými SATA řadiči, to může vést k degradaci výkonu.
- VDI id
- Identifikátor VDI. Až začne Sheepdog do VDI ukládat data, začnou se v datovém úložišti (ve výchozím stavu
/var/lib/sheepdog/obj
objevovat soubory, které budou mít tento identifikátor v názvu.
../obj/57/00e8b18f00000005 ^^^^^^ ^
Co obsahuje VDI?
Obsahem VDI jsou data. Sheepdog nabízí distribuované blokové zařízení, proto neřeší jaká. Z tohoto pohledu vypadá VDI podobně jako logický disk u LVM. Prealokované VDI odpovídá klasickému LV oddílu s vymezeným rozsahem, kdežto VDI přírustkové se podobá Thin LV oddílu vytvořenému v rámci poolu (viz LVM (thin_provisioning)). Ovšem s tím zásadním rozdílem, že datové extenty nejsou uložené na lokálním blokovém zařízení, ale distribuovány mezi nody.
Formát VDI pak v této analogii funguje jako souborový systém. Některý obsazuje vyhrazené extenty postupně, jiný si je namapuje jako svoje inody a pak do nich bude posílat data.
Tato v zásadě laická představa má jeden cíl - upozornit na to, že nevhodná kombinace souborového systému úložiště, formátu VDI a vnitřního souborového systému může vést k výrazné degradaci I/O výkonu |
Jak získat informace o VDI
Nejrychlejší způsob, jak zjistit bližší informace o formátu VDI nabízí qemu-img info:
Export VDI do souboru
- ↑ 1,0 1,1 Viz informace v závěru prezentace z června 2015 http://events.linuxfoundation.jp/sites/events/files/slides/COJ2015_Sheepdog_20150604.pdf
- ↑ http://www.abclinuxu.cz/blog/kenyho_stesky/2011/11/sheepdog-hrajeme-si-v-hampejzu
- ↑ SPOF (Single point of failure) zabezpečení zajišťuje, že se na jedno blokové zařízení může připojit právě jen jeden ověřený klient, ke kterému patří. Podporu pro SPOF mají VDI, pokud jsou exportované jako iSCSI zažízení přes tgtd
- ↑ O formátech virtuálních disků - mimo jiné i vdi - se píše na stránce QEMU_(bloková_zařízení)
Odkazy
- https://github.com/collie/sheepdog/wiki - wiki, která je součástí repozitáře se zdrojovými kódy
- http://www.osrg.net/sheepdog/ - stránky projektu na webu Nippon Telegraph and Telephone Corporation
- http://www.sheepdog-project.org/doc/index.html - Administrátorská příručka pro Sheepdog verze 0.8.0; autorem je Valerio Pachera
- http://www.admin-magazine.com/Archive/2014/23/Distributed-storage-with-Sheepdog - Článek Udo Seidela o nasazení Sheepdogu, publikovaný ve 23. čísle magazínu Admin z října 2014