NFS Ganesha
NFS Ganesha je opensource NFS server s podporou všech aktuálně používaných verzí NFS protokolu (v3,v4.0,v4.1,v4.2,pNFS) a protokolu 9P (Plan9).
NFS Ganesha je NFS server, který běží v uživatelském prostoru, nikoliv v jádře! V linuxovém prostředí se většinou používá NFS server nfsd , který běží jako proces v linuxovém jádře[1]. Na to je třeba dát pozor, neboť tyto servery nemohou- bez toho aniž by to bylo ošetřeno v konfiguraci - běžet na jednom stroji současně. Oba servery totiž ve výchozím stavu naslouchají na stejném síťovém portu 2049.
|
V oficiálních repozitářích Debianu NFS Ganesha - na rozdíl od GlusterFS - zatím k dispozici není, i když od verze 2.2 jsou součástí zdrojového kódu i soubory potřebné pro sestavení balíku na Debianu. Vývoj je totiž stále poměrně živý. Konfigurační nastavení dosud není ustálené a v detailech se mezi jednotlivými verzemi liší. A pokud se v konfiguraci objeví parametr, který parser nezná, nebo neumí zpracovat, tak to má vliv na nastavení serveru, případně se ani nespustí.
GlusterFS + NFS Ganesha a Pacemaker
NFS Ganesha je vyvíjen jako NFS server pro clusterové prostředí, proto má novější GlusterFS (>=3.7.6), který vyvíjí fa. Red Hat i jakousi podporu pro automatickou konfiguraci exportů, kterou zajišťuje přes Pacemaker - tedy přesněji řečeno přes jeho ovládací CLI pcs. Bohužel se mi to nepodařilo rozběhat, jelikož pcs nemám v sestavení Pacemakeru, který používám, k dispozici.
Sestavení ze zdrojových kódů
Zdrojové repozitáře NFS Ganesha jsou v gitu a pro sestavení se používá cmake. Kromě výchozího git repozitáře nfs-ganesha.git
je součástí i samostatný submodul pro knihovnu libntircp
V současné době (čerstvě po vydání verze 2.3.0) je třeba vzít při kompilaci v patrnost následující body:
|
Naklonování repozitářů
git clone https://github.com/nfs-ganesha/nfs-ganesha.git cd ~/nfs-ganesha.git git submodule update --init git checkout -b v2.3.0 remotes/origin/V2.3.0 cd src/libntirpc git checkout -b v1.4.0 remotes/origin/V2.3.0 git submodule update
{{{1}}} |
Doinstalování balíků potřebných ke kompilaci
Základní sada balíků potřebných pro kompilaci a uspokojení závislostí:
apt-get install \ bison \ cmake \ flex \ libattr1-dev \ libblkid-dev \ libdbus-1-dev \ libdbus-c++-dev \ libdbus-glib-1-dev \ libcap-dev \ libjemalloc-dev \ libkrb5-dev \ libncurses5-dev \ libnfsidmap-dev \ libnfsidmap-dev \ uuid-dev
Dále je třeba doinstalovat balíky pro sestavení požadovaných backendů (FSAL):
- Pro zakompilování podpory pro GlusterFS musí být k dispozici jeho API, které je součástí instalačního balíčku - glusterfs-common
- Aby NFS Ganesha mohl spolupracovat s klientem Samba4 je potřeba zakompilovat podporu pro Winbind4 (MSPAC_SUPPORT) - libwbclient-dev
- Podporu pro Lustre jsem nekompiloval
- Podporu pro XFS jsem nekompiloval
- Podporu ZFS (libzfswrap_init) jsem nekompiloval
Kompilace
Pro sestavení na Debianu je třeba použít malou fintu, kterou jsem našel na https://wiki.mosuma.com/wiki/Nfs-ganesha
A totiž, že se aplikace sestavuje v paralelně umístěném adresáři build
mkdir ~/build cd ~/build cmake \ -DUSE_FSAL_GLUSTER=ON \ -DCMAKE_BINARY_DIR=/usr \ -DCMAKE_BUILD_TYPE=Maintainer ~/nfs-ganesha.git/src/
Pokud jsou v průběhu konfigurace doinstalovávány některé knihovny, je třeba před novým spuštěním cmake smazat tyto soubory...
CMakeCache.txt CPackConfig.cmake CPackSourceConfig.cmake |
Konfigurace serveru nfs-ganesha a glusterfs
Od verze 2.2 má FSAL_GLUSTER podporu pro pNFS a ACL
Pokud GlusterFS nenajde server nfs-ganesha, automaticky spustí pro NFS export svazku kernelový NFS server. Tomu lze zabránit pouze nastavením parametru nfs.disable na ON u všech svazků.
Aby fungovalo ověřování přes krb5 s nfs-ganesha, musí být použití krb5 správné nakonfigurované. To lze ověřit takto...
(postup ověření přes kerberos...)
Server nfs-ganesha používá - pokud může - IPv6, proto by mělo být IPv6 připojení aktivní
Zároveň je třeba na všech nodech, kde nfs-ganesha poběží, aby se kernelový NFS server nespouštěl.
Export a unexport GlusterFS svazků skrze nfs-ganesha se dělá přes dbus. Lze ovšem udělat i manuálně..
Odkazy
- ↑ Od procesů které běží v userspace se ty jaderné ve výpisu příkazu ps liší tím, že jsou uzavřené do hranatých závorek - takže
[nfsd]
.
- https://gluster.readthedocs.org/en/latest/Administrator%20Guide/NFS-Ganesha%20GlusterFS%20Intergration/ - Ganesha na gluster.readthedocs.org - Postup nastavení NFS Ganesha pro podporu clusterového nastavení u GlusterFS
- https://wiki.mosuma.com/wiki/Nfs-ganesha - wiki, podle které jsem postupoval při kompilaci. Finta s adresářem build - ale nefunkční konfigurace.