GlusterFS
GlusterFS je škálovatelný distribuovaný síťový souborový systém, určený pro velká datová úložiště. Aktuálně patří do portfolia produktů fy. Red Hat (stejně jako CEPH, do kterého se dostal tím že Red Hat v r. 2011 spolkl společnost Gluster (založenou v r. 2005) která s jeho vývojem začala. Tento souborový systém funguje podobně jako LVM, ovšem v rámci sítě. Tj. nejprve se vytvoří skupina serverů (TSP - Trusted Storage Pools, je ekvivalentem Volume Group u LVM) a teprve v jejím rámci se tvoří svazky (volumes) - podobně jako logické disky u LVM. Data každého svazku se ukládají podle zvoleného typu svazku mezi tzv. bricky. Brickem je adresář na serveru vyhrazený pro soubory příslušného svazku.
Instalace
Instalace GlusterFS serveru je u Debianu triviální, neboť je součástí oficiálních repositářů.
apt-get install glusterfs-server
Aktuálně ( tj. k lednu 2015 ) tímto příkazem dojde k nainstalování GlusterFS verze 3.5.2
Verze distribuovaného souborového systému GlusterFS nejsou zpětně kompatibilní a jeho aktualizace nemusí být bezproblémová, proto pokud chcete nainstalovat poslední stabilní verzi GlusterFS (3.6.2), tak musíte použít buď oficiální repozitář Debianu experimental, nebo použít instalační balíčky dostupné v repozitářích webu gluster.org |
Anatomie /var/lib/glusterd
/var/lib/glusterd/
|- geo-replication/
\- gsyncd_template.conf
|- glusterd.info
|- glustershd/
| |- glustershd-server.vol
| \- run/
|- groups/
|- hooks/
|- nfs/
| |- nfs-server.vol
| \- run/
|- options
|- peers/
|- quotad/
|- snaps/
| \- missed_snaps_list
\- vols\
|- <jméno svazku>/
| |- <jméno svazku>.<ip serveru>.<cesta do adresáře (místo lomítek pomlčky)>.vol
| |- ...
| |- trusted-<jméno svazku>-fuse.vol
| |- <jméno svazku>-fuse.vol
| |- quota.conf
| |- quota.cksum
| |- snapd.info
| |- info
| |- rbstate
| |- node_state.info
| \- run/
\- ...
Vytvoření TSP
Vytvoření TSP (Trusted Storage Pools) se na první pohled podobá vytvoření Volume Group u LVM, pouze s tím rozdílem, že se místo lokálních fyzických blokových zařízení PV do skupiny přidávají celé servery. Jejich zařazením ale, na rozdíl od Volume Group, nevzniká žádný datový prostor, který by se následně přerozdělil na logické disky.
GlusterFS neposkytuje žádné blokové zařízení, ale pouze svazky (volumes), které se vytvoří v rámci TSP sestavením z tzv. bricků. Bricky jsou adresáře na serverech vyhrazené pro ukládání dat příslušného svazku.
GlusterFS používá standardně následující porty:
- TCP 24007
- Používá pro svou komunikaci GlusterFS démon
- TCP 24008
- Využívá Infiniband, pokud není k dispozici, tak tento port nemusí být využitý
- TCP 24009 a výše
- Používá pro bricky GlusterFS verze 3.3 a menší
- TCP 49152 a výše
- Používá pro bricky GlusterFS verze 3.4 a vyšší
- TCP,UDP 111
- Se využívá pro mapování portů
- TCP 2049
- Se rovněž využívá pro mapování portů ovšem pouze u GlusterFS verze 3.4 a vyšší
Ve výchozím stavu NFS u GlusterFS neposkytuje konektivitu přes UDP, pouze TCP. Pokud chcete využívat pro NFS komunikaci přes UDP, je třeba zapnout parametr nsf.mount-udp |
Z principu tedy není možné aby byl jeden server integrován do více než jednoho TSP! |
Lokální server, ze kterého se začnou do TSP zařazovat další stroje, je automaticky jeho součástí. Každý další se přidá zcela jednoduše:
root@nod1 :~# gluster peer probe SERVER
Pokud se při této operaci vyskytne nějaký problém, tak je třeba zkontrolovat zda..
- Utilita nslookup vrací správně doménové jméno stroje
- V souborech /etc/hosts na serverech jsou v pořádku všechny záznamy. Hodně problémů totiž bývá zaviněno právě špatným záznamem v tomto souboru, proto se moc nedoporučuje jeho využití.
- Je port 24007 průchozí? Ověřit zda je spojení průchozí můžete dotazem přes telnet
- Běží na lokálním i vzdáleném serveru démon pro glusterfs?
Problém se síťovu komunikací je indikován jako chyba č.107 Viz příklad:
root@nod1 :~# gluster peer probe 192.168.0.2
peer probe: failed: Probe returned with unknown errno 107
|
Informace o serverech v rámci TSP
Vytvoření svazku - volume
Typ svazku se určuje vždy rovnou při založení svazku. Je-li svazek jednou vytvořený, tak již nemůže být konvertován na jiný typ.
- Distribuovaný svazek
- Funguje jako síťový raid0. Nemá žádnou redundanci dat, ale nabízí vysoký výkon. Soubory jsou rozloženy mezi nody, takže při výpadku jednoho z nich jsou na něm uložená data nedostupná.
- Replikovaný svazek
- Funguje jako síťový raid1 - bloky se replikují na všechny nody. Je to nejčastější volba, protože zajišťuje redundanci ukládaných souborů - která navíc může probíhat i na více nodů současně. K tomu navíc nabízí i poměrně rychlé čtení, protože lze tyto kopie načítat souběžně ze všech nodů.
- Stripovaný svazek
- Stripovaný svazek se od distribuovaného svazku liší tím, že soubory nejsou ukládány do bloku jako celek, ale rovnoměrně rozkládány po menších částech mezi více bloků. Takový svazek pak nabízí velmi rychlé čtení souborů, ale má extrémně pomalý zápis a navíc žádnou redundanci. Takže při výpadku jednoho bloku je nepoužitelný celý svazek. Proto se používá stripování v kombinaci s replikací.
Problém z hlediska výkonu u GlusterFS je, že klient nepoužívá pro přístup do souborového systému vlastní jaderný modul, ale modul fuse, který provádí veškeré operace se soubory v userspace. Tím je ovšem jeho výkon velmi degradován, protože u fuse je vysoká režie spojená s malými soubory. Tento problém lze do jisté míry obejít, pokud se využije přímý přístup přes API GlusterFS. |
Připojení svazku
Odkazy
- http://www.gluster.org/community/documentation/ GlusterFS - dokumentace
- https://raobharata.wordpress.com/2013/11/27/glusterfs-block-device-translator/ GlusterFS - BD translator
- https://raobharata.wordpress.com/2012/10/29/qemu-glusterfs-native-integration/ GlusterFS a jeho integrace v Qemu
- http://blog.gluster.org/2013/11/a-gluster-block-interface-performance-and-configuration/ GlusterFS - výkon a konfigurace
- http://funwithlinux.net/2013/02/glusterfs-tips-and-tricks-centos/ GlusterFS na více rozhraních
- http://www.ovirt.org/Change_network_interface_for_Gluster GlusterFS - změna síťového rozhraní