Tartalom
Bevezető
A leírásból megtudhatjuk hogyan csatolhatunk Debian rendszerű számítógépünkre távoli NFS megosztást, és használhatjuk helyi tárhelyként. Ebben a példában két Debian 8 (Jessie) rendszerű laptopon mutatom be az NFS használatát: Az egyiken létrehozunk egy NFS megosztást, a másikon pedig bemountoljuk a helyi fájlrendszerbe.
Korábban már készítettem egy hasonló leírást, ahol a bind mount módszerrel csatoltam be a webszerver megfelelő tárhely könyvtárába egy másik partíción lévő könyvtárstruktúrát, amivel kibővíthettem az adott weboldal webtárhelyét, most pedig egy távoli gépen lévő NFS megosztást fogunk becsatolni a számítógép helyi fájlstruktúrájába, és úgy fogjuk tudni használni, mintha az a számítógép saját merevlemezén lenne.
Itt annyi különbség lesz még, hogy most nem webszerveren dolgozunk, hanem a két Debian 8 (Jessie) rendszerű laptopomon mutatom be az NFS használatát. Így ezért is tettem ezt a leírást ebbe az általános jellegű fájlrendszer kategóriába. Ettől függetlenül természetesen ez a módszer felhasználható komplett webszerver környezetekben is, ha például tárhelyet kell bővíteni, vagy több szerverből álló struktúrákkal dolgozunk.
Elsőként definiáljuk a két számítógépet és azok IP-címeit. Nálam mindkét gép a routerem mögött van, tehát ugyanabban a helyi hálózatban vannak. A szerver gép, amin kialakítjuk az NFS megosztásokat, és a kliens gép, amin pedig becsatoljuk a helyi fájlrendszerbe azokat.
- NFS szerver gép: IP-cím: 192.168.1.101, hosztnév: bnd-laptop
- NFS kliens gép: IP-cím: 192.168.1.102, hosztnév: bnd-laptop2
Ebben a leírásban tehát ezzel a két géppel mutatom be a feladatot.
NFS szerver telepítése, konfigurálása
Lépjünk be a szerver gépre root-ként (ahonnan meg szeretnénk osztani a könyvtárakat), majd futtassuk az alábbi apt-get parancsot:
apt-get install nfs-kernel-server nfs-common
Az NFS szerver telepítésekor létrejönnek a konfigurációs fájlok is. Ezután exportáljuk ki a megfelelő könyvtárakat (megosztásokat).
Az NFS segítségével többféle módban is készíthetünk megosztásokat:
- Nyilvános megosztás: Csak olvasható, bárki számára elérhető (bemountolható) megosztás (root_squash, all_squash)
- Root jogok megtartása: Írható, olvasható, a kliens gépen végrehajtott fájlműveletek a szerveren is ugyan akként a felhasználóként hajtódnak végre (no_all_squash, no_root_squash)
- Root jogok elvétele: A kliens gépen végrehajtott fájlműveletek a szerveren a nobody felhasználóként kerülnek végrehajtásra. Akkor hasznos, ha a két gépen nehezen vagy egyáltalán nem tudjuk összeegyeztetni a felhasználókat és az UID-eket (root_squash, all_squash) .
Ebben a példában bemutatom mind a három megosztási típust három külön alkönyvtárral. Az egyszerűség kedvéért az NFS szerver /home könyvtárában hozzunk létre egy nfs alkönyvtárat, majd abban három másikat a megosztási módok szemléltetéséhez:
mkdir -p /home/nfs/public
mkdir -p /home/nfs/root
mkdir -p /home/nfs/no-root
Állítsuk át a könyvtárakat a nobody:nogroup-ra, majd a chmod paranccsal adjunk megfelelő jogosultságot rá:
chown nobody:nogroup /home/nfs/*
chmod 0755 /home/nfs/*
Ezután szerkesszük a konfigurációs fájlban a megosztásokat az NFS szerveren:
nano /etc/exports
És adjuk hozzá a három megosztást a fájlhoz:
/home/nfs/public 192.168.1.102(ro,no_subtree_check,root_squash,all_squash) /home/nfs/root 192.168.1.102(rw,sync,no_subtree_check,no_all_squash,no_root_squash) /home/nfs/no-root 192.168.1.102(rw,sync,no_subtree_check,root_squash,all_squash)
A sync opció hatására a rendszer csak az adatok lemezre írása után válaszol az NFS-kérelmekre, így megakadályozza az adatok sérülését, ha a kiszolgáló újraindul. Ha a szinkronizálás be van kapcsolva, a kiszolgáló csak akkor nyugtázza az adatokat, ha azok ki lettek írva.
A no_subtree_check opció megakadályozza, hogy az NFS kérésekkor a rendszer ellenőrizze a teljes megosztási alkönyvtár struktúrát, ami problémát okozna, ha például egy kért fájlt átneveznek, amíg az az ügyfél gépén meg van nyitva.
Indítsuk újra az NFS szervert:
service nfs-kernel-server restart
Ellenőrízhetjük az exportjainkat:
showmount --exports --no-headers
/home/nfs/no-root 192.168.1.102 /home/nfs/root 192.168.1.102 /home/nfs/public 192.168.1.102
NFS kliens telepítése, konfigurálása
Lépjünk be a kliens gépre root-ként, és telepítsük a szükséges csomagot:
apt-get install nfs-common
Helyi könyvtárstruktúra létrehozása az NFS megosztások számára
Hozzuk létre a könyvtárakat, ahova be szeretnénk mountolni a megosztásokat. Az áttekinthetőség kedvéért a kliens számítógépen is alakítsunk ki egy hasonló könyvtárstruktúrát, mint a szerveren:
mkdir -p /home/nfs-remote/public
mkdir -p /home/nfs-remote/root
mkdir -p /home/nfs-remote/no-root
Távoli NFS megosztások kézi (ideiglenes) mountolása
A mount parancs segítségével ideiglenesen bemountolhatjuk a megosztásainkat, amik a gép leállításáig érvényben maradnak:
mount 192.168.1.101:/home/nfs/public /home/nfs-remote/public/
mount 192.168.1.101:/home/nfs/root /home/nfs-remote/root/
mount 192.168.1.101:/home/nfs/no-root /home/nfs-remote/no-root/
Ellenőrizzük a kliensoldali művelet sikerességét:
nfsstat -m
És az eredménynek ilyesminek kell lennie:
/home/nfs-remote/no-root from 192.168.1.101:/home/nfs/no-root Flags: rw,relatime,vers=4.0,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.102,local_lock=none,addr=192.168.1.101 /home/nfs-remote/public from 192.168.1.101:/home/nfs/public Flags: rw,relatime,vers=4.0,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.102,local_lock=none,addr=192.168.1.101 /home/nfs-remote/root from 192.168.1.101:/home/nfs/root Flags: rw,relatime,vers=4.0,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.102,local_lock=none,addr=192.168.1.101
Távoli NFS megosztások perzisztens mountolása
Ha nem csak a gép kikapcsolásáig szeretnénk megtartani ezeket a csatolásokat, hanem újraindítás után is szükségünk lesz rájuk, akkor a /etc/fstab fájlban kell rögzíteni őket.
Ehhez először szűntessük meg a jelenlegi csatolásokat, hogy tesztelni tudjuk a működést:
umount /home/nfs-remote/*
Majd nyissuk meg a /etc/fstab fájlt és adjuk hozzá az alábbi 3 sort:
192.168.1.101:/home/nfs/public /home/nfs-remote/public nfs ro,sync,hard,intr 0 0 192.168.1.101:/home/nfs/root /home/nfs-remote/root nfs rw,sync,hard,intr 0 0 192.168.1.101:/home/nfs/no-root /home/nfs-remote/no-root nfs rw,sync,hard,intr 0 0
Hajtsuk végre az fstab fájl csatolásait:
mount -a
Ezután újra ellenőrízhetjük a csatolás sikerességét:
nfsstat -m
És a kimenetnek (majdnem) ugyanannak kell lennie, mint a fenti ellenőrzésnél, annyi különbséggel, hogy itt a public megosztást ro (readonly) módban csatoltuk, így már a kliens gép utasítja el a fájlrendszer felé küldött írási kérelmeket.
Tesztelés
Most, hogy már megvannak az exportjaink a szerver gépen és be is csatoltuk őket a kliens gépen, nem maradt más hátra, mint hogy ki is próbáljuk az NFS működését, viselkedését mindhárom megosztás esetén.
Ha megnézzük a helyi csatolási pontokat a df paranccsal, akkor látszik is a három megosztás a másik gépről. A képen a felső terminál ablakban van tehát az NFS kliens (bnd-laptop2), az alsóban pedig az NFS szerver (bnd-laptop), ahol a helyi /home/nfs/ könyvtárat látjuk és benne a megosztott alkönyvtárakat.
A következő lépésben a lenti ablakban (NFS szerveren) létrehozunk egy fájlt a csak olvasható "public" megosztásban, majd ezt fent a kliensben ellenőrizzük, utána pedig a kliensből megkíséreljük letörölni ezt a fájlt:
Ahogyan azt várhattuk is, nem sikerült a kliensen törölni a fájlt, mivel írásvédett a "public" megosztás.
Ezután a maradék két írható-olvasható megosztást teszteljük. A fenti kliens ablakban a "no-root" megosztásban hozunk létre egy fájlt, majd lent az NFS szerveren figyeljük meg mi történik:
A fájl létrejött, és megfigyelhetjük, hogy a tulajdonosa a nobody:nogroup, annak ellenére, hogy root-ként hoztuk létre. Mindez azért történt, mert ezt a megosztást a "root_squash,all_squash" opciókkal hoztuk létre, aminek hatására a megosztásban végzett bármilyen kliens oldali módosítás az NFS szerveren a nobody:nogroup tulajdonnal kerül végrehajtásra.
Az utolsó teszt példában a "root" megosztásban hozunk létre egy próba fájlt:
Itt pedig a felső kliens terminálban root-ként létrehozott fájl az alsó szerveren is root-ként került végrehajtásra, azaz létrehozásra.
Konklúzió
Az NFS megosztásokkal tehát több árnyalatban lehet kezelni a távoli fájlrendszereket, attól függően, hogy éppen mire van szükség. Ha például csak egy telepítőkészletet szeretnénk megosztani, vagy egy zenegyűjteményt, akkor arra kiváló választás a "csak olvasható mód" (root_squash, all_squash opciók), így nem kell attól tartanunk, hogy a kliensek módosítják a könyvtár tartalmát.
Ha pedig mondjuk egy több gépből álló céges belső hálózatot üzemeltetünk, akkor a "root mód" (no_all_squash, no_root_squash opciók) a megfelelő választás, amivel minden felhasználó számára létrehozhatjuk a saját home könyvtárát a cég központi számítógépén, így nem kell külön minden gépen fenntartani, karbantartani a felhasználók könyvtárait, hanem egy helyen lehet őket központilag kezelni.
Felhasznált források
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
- 1180 megtekintés