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
Od verze 2.2 má FSAL_GLUSTER podporu pro pNFS a ACL
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ě..
EXPORT
Ověření uživatele přes Kerberos
Aby fungovalo ověřování uživatelů přes Kerberos (knihovna krb5), musí být Kerberos správně nakonfigurován jak na straně serveru, kde běží NFS Ganesha, tak na straně klienta.
Jestli Kerberos funguje, lze ověřit takto...
(postup ověření přes kerberos...)
NFS Ganesha pracuje u NFS4 připojení s kerberem v závislosti na tom jak je nastavený parametr SecType:
- krb5
- Kerberos se použije pouze pro ověření klienta
- krb5i
- Kromě ověření se pak během připojení posílají také kontrolní součty, šifrované přes Kerbera, aby bylo zajištěno, že do komunikace mezi serverem a klientem se necpe nikdo třetí
- krb5p
- Kerberos se nepoužije pouze k ověření, ale je jím šifrovaná veškerá komunikace mezi serverem a klientem, což ovšem znamená, že jde i o nejpomalejší variantu spojení
FSAL
CLIENT
- ↑ 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]
.
Odkazy
- 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.
- http://sourceforge.net/projects/nfs-ganesha/ - Stránky k NFS Ganesha na webu sourceforge.net
- http://nfs-ganesha.sourceforge.net/files/nfs-ganesha-adminguide.pdf - Administrátorská příručka v0.4 k NFS Ganesha z r.. 2008 v PDF formátu na webu sourceforge.net