Inštalácia a konfigurácia servera NFS. Nastavenie servera NFS Odstránenie pripojenia NFS


Dobré popoludnie, čitatelia a hostia. Medzi príspevkami bola veľmi dlhá prestávka, ale som späť v akcii). V dnešnom článku sa pozriem na Prevádzka protokolu NFS, a nastavenie servera NFS a klienta NFS v systéme Linux.

Úvod do NFS

NFS (Sieťový súborový systém - sieťový súborový systém) podľa mňa - ideálne riešenie na lokálnej sieti, kde je potrebná rýchla (rýchlejšia v porovnaní so SAMBA a menej náročná na zdroje v porovnaní so vzdialenými súborovými systémami so šifrovaním - sshfs, SFTP atď...) výmena dát a nie je na popredná bezpečnosť prenášaných informácií. protokol NFS umožňuje pripojiť vzdialené súborové systémy cez sieť do lokálneho adresárového stromu, ako keby to bol pripojený systém súborov na disku. To umožňuje lokálnym aplikáciám pracovať so vzdialeným súborovým systémom, ako keby to bol lokálny systém. Treba si však dávať pozor (!). nastavenie NFS, pretože pri určitej konfigurácii je možné zmraziť operačný systém klienta pri čakaní na nekonečné I/O. protokol NFS na základe práce protokol RPC, čo je stále mimo môjho chápania)), takže materiál v článku bude trochu vágny... Skôr ako budete môcť použiť NFS, či už ide o server alebo klienta, musíte sa uistiť, že vaše jadro podporuje súbor NFS systém. Či jadro podporuje súborový systém NFS, môžete skontrolovať tak, že sa pozriete na prítomnosť zodpovedajúcich riadkov v súbore /proc/filesystems:

ARCHIV ~ # grep nfs /proc/filesystems nodev nfs nodev nfs4 nodev nfsd

Ak sú uvedené riadky v súbore /proc/filesystems sa nezobrazí, musíte nainštalovať balíčky popísané nižšie. To vám s najväčšou pravdepodobnosťou umožní nainštalovať závislé moduly jadra na podporu požadovaných súborových systémov. Ak sa po inštalácii balíkov v zadanom súbore nezobrazí podpora NFS, budete musieť túto funkciu povoliť.

Príbeh Sieťový súborový systém

protokol NFS vyvinutý spoločnosťou Sun Microsystems a vo svojej histórii má 4 verzie. NFSv1 bol vyvinutý v roku 1989 a bol experimentálny, bežal na protokole UDP. Verzia 1 je opísaná v . NFSv2 bol vydaný v rovnakom roku 1989, opísaný v rovnakom RFC1094 a tiež založený na protokole UDP, pričom zo súboru neumožňuje čítanie viac ako 2 GB. NFSv3 dokončené v roku 1995 a opísané v . Hlavnými inováciami tretej verzie bola podpora veľkých súborov, pridaná podpora protokolu TCP a veľké pakety TCP, čo výrazne zrýchlilo výkon technológie. NFSv4 dokončené v roku 2000 a opísané v RFC 3010, revidované v roku 2003 a opísané v . Štvrtá verzia obsahovala vylepšenia výkonu, podporu rôznych autentifikačných prostriedkov (najmä Kerberos a LIPKEY pomocou protokolu RPCSEC GSS) a zoznamy riadenia prístupu (typy POSIX aj Windows). Verzia NFS v4.1 bol schválený IESG v roku 2010 a dostal číslo . Dôležitou inováciou vo verzii 4.1 je špecifikácia pNFS – Parallel NFS, mechanizmu pre paralelný NFS klientsky prístup k dátam z viacerých distribuovaných NFS serverov. Prítomnosť takéhoto mechanizmu v štandarde sieťového súborového systému pomôže vybudovať distribuované „cloudové“ úložné a informačné systémy.

NFS server

Odkedy máme NFS- Toto siete súborový systém, potom je to potrebné. (môžete si prečítať aj článok). Ďalej je potrebné. V Debiane je to balík nfs-kernel-server A nfs-common, v RedHat je to balík nfs-utils. A tiež musíte povoliť spustenie démona na požadovaných úrovniach vykonávania operačného systému (príkaz v RedHat - /sbin/chkconfig nfs zapnuté, v Debiane - /usr/sbin/update-rc.d nfs-kernel-server predvolené hodnoty).

Inštalované balíky v Debiane sa spúšťajú v nasledujúcom poradí:

ARCHIV ~ # ls -la /etc/rc2.d/ | grep nfs lrwxrwxrwx 1 koreňový koreň 20. októbra 18 15:02 S15nfs-common -> ../init.d/nfs-common lrwxrwxrwx 1 koreňový adresár 27. októbra> 01:23 S16nfs-server. /nfs-kernel-server

To znamená, že začína ako prvý nfs-common, potom samotný server nfs-kernel-server. V RedHat je situácia podobná, s jedinou výnimkou, že prvý skript sa volá nfslock a server sa volá jednoducho nfs. O nfs-common Webová stránka debianu nám hovorí toto doslovne: zdieľané súbory pre klienta a server NFS, tento balík musí byť nainštalovaný na počítači, ktorý bude fungovať ako klient alebo server NFS. Balík obsahuje programy: lockd, statd, showmount, nfsstat, gssd a idmapd. Zobrazenie obsahu spúšťacieho skriptu /etc/init.d/nfs-common môžete sledovať nasledujúcu postupnosť práce: skript kontroluje prítomnosť spustiteľného binárneho súboru /sbin/rpc.statd, kontroluje prítomnosť v súboroch /etc/default/nfs-common, /etc/fstab A /etc/exports parametre, ktoré vyžadujú spustenie démonov idmapd A gssd , spustí démona /sbin/rpc.statd , potom pred spustením /usr/sbin/rpc.idmapd A /usr/sbin/rpc.gssd skontroluje prítomnosť týchto spustiteľných binárnych súborov a potom pre démon /usr/sbin/rpc.idmapd kontroluje dostupnosť sunrpc, nfs A nfsd, ako aj podporu súborového systému rpc_pipefs v jadre (to znamená mať ho v súbore /proc/filesystems), ak je všetko úspešné, začína sa /usr/sbin/rpc.idmapd . Navyše pre démona /usr/sbin/rpc.gssd kontroly modul jadra rpcsec_gss_krb5 a spustí démona.

Ak si prezeráte obsah Spúšťací skript servera NFS v Debiane ( /etc/init.d/nfs-kernel-server), potom môžete postupovať podľa nasledujúcej postupnosti: pri spustení skript skontroluje existenciu súboru /etc/exports, Dostupnosť nfsd, dostupnosť podpory súborový systém NFS v (teda v súbore /proc/filesystems), ak je všetko na svojom mieste, spustí sa démon /usr/sbin/rpc.nfsd , potom skontroluje, či je parameter zadaný NEED_SVCGSD(nastavené v súbore nastavení servera /etc/default/nfs-kernel-server) a ak je daný, spustí démona /usr/sbin/rpc.svcgssd , spustí démona ako posledný /usr/sbin/rpc.mountd . Z tohto scenára je zrejmé, že Prevádzka NFS servera pozostáva z démonov rpc.nfsd, rpc.mountd a ak sa používa autentifikácia Kerberos, potom démon rcp.svcgssd. V red hat stále beží démon rpc.rquotad a nfslogd (Z nejakého dôvodu som v Debiane nenašiel informácie o tomto démonovi a dôvodoch jeho absencie, zrejme bol zmazaný...).

Z toho je zrejmé, že Server Network File System pozostáva z nasledujúcich procesov (čítaj: démoni), ktorý sa nachádza v adresároch /sbin a /usr/sbin:

V NFSv4 sa pri používaní Kerberos spúšťajú ďalšie démony:

  • rpc.gssd- Démon NFSv4 poskytuje metódy autentifikácie cez GSS-API (overenie Kerberos). Funguje na klientovi a serveri.
  • rpc.svcgssd- Serverový démon NFSv4, ktorý poskytuje autentifikáciu klienta na strane servera.

portmap a protokol RPC (Sun RPC)

Okrem vyššie uvedených balíkov je pre správne fungovanie NFSv2 a v3 potrebný ďalší balík portmap(v novších distribúciách nahradené premenovaným na rpcbind). Tento balík sa zvyčajne inštaluje automaticky s NFS ako závislý balík a implementuje prevádzku servera RPC, to znamená, že je zodpovedný za dynamické prideľovanie portov pre niektoré služby registrované na serveri RPC. Doslova podľa dokumentácie ide o server, ktorý konvertuje čísla programov RPC (Remote Procedure Call) na čísla portov TCP/UDP. portmap funguje na niekoľkých entitách: RPC hovory alebo požiadavky, TCP/UDP porty,verzia protokolu(tcp alebo udp), čísla programov A verzie softvéru. Démon portmap je spustený skriptom /etc/init.d/portmap pred spustením služieb NFS.

Stručne povedané, úlohou servera RPC (Remote Procedure Call) je spracovávať volania RPC (takzvané procedúry RPC) z miestnych a vzdialených procesov. Pomocou RPC volaní sa služby registrujú alebo odstraňujú do/z mapovača portov (aka mapovač portov, aka portmap, aka portmapper, aka, v nových verziách, rpcbind) a klienti používajú volania RPC na odosielanie požiadaviek na mapovač portov, aby získali potrebné informácie. . Užívateľsky prívetivé názvy programových služieb a ich zodpovedajúce čísla sú definované v súbore /etc/rpc. Hneď ako niektorá služba odošle zodpovedajúcu požiadavku a zaregistruje sa na serveri RPC v mapovači portov, server RPC priradí, namapuje k službe porty TCP a UDP, na ktorých sa služba spustila, a uloží do jadra zodpovedajúce informácie o bežiacu službu (názov), službu jedinečného čísla (v súlade s /etc/rpc), o protokole a porte, na ktorom služba beží a o verzii služby a na požiadanie poskytuje klientom špecifikované informácie. Samotný konvertor portov má číslo programu (100000), číslo verzie - 2, port TCP 111 a port UDP 111. Vyššie som pri špecifikovaní zloženia démonov servera NFS uviedol hlavné čísla programov RPC. Pravdepodobne som vás týmto odsekom trochu zmiatol, takže poviem základnú frázu, ktorá by mala veci objasniť: hlavnou funkciou mapovača portov je vrátiť sa na žiadosť klienta, ktorý poskytol číslo programu RPC ( alebo číslo programu RPC) a jemu (klientovi) verzia portu, na ktorom beží požadovaný program. Ak teda klient potrebuje pristupovať k RPC so špecifickým číslom programu, musí najprv kontaktovať proces mapy portov na serveri a určiť číslo komunikačného portu so službou RPC, ktorú potrebuje.

Činnosť servera RPC môže byť reprezentovaná nasledujúcimi krokmi:

  1. Prevodník portov by sa mal spustiť ako prvý, zvyčajne pri zavádzaní systému. Tým sa vytvorí koncový bod TCP a otvorí sa port TCP 111. Vytvorí sa tiež koncový bod UDP, ktorý čaká, kým datagram UDP dorazí na port UDP 111.
  2. Pri spustení program spustený cez server RPC vytvorí koncový bod TCP a koncový bod UDP pre každú podporovanú verziu programu. (Server RPC môže podporovať viacero verzií. Klient špecifikuje požadovanú verziu pri volaní RPC.) Ku každej verzii služby je priradené dynamicky priradené číslo portu. Server zaznamená každý program, verziu, protokol a číslo portu vykonaním príslušného volania RPC.
  3. Keď klientsky program RPC potrebuje získať potrebné informácie, zavolá rutinu prekladača portov, aby získal dynamicky priradené číslo portu pre zadaný program, verziu a protokol.
  4. Ako odpoveď na túto požiadavku sever vráti číslo portu.
  5. Klient odošle správu s požiadavkou RPC na číslo portu získané v kroku 4. Ak sa použije UDP, klient jednoducho odošle UDP datagram obsahujúci správu s výzvou RPC na číslo portu UDP, na ktorom beží požadovaná služba. V odpovedi služba odošle UDP datagram obsahujúci správu s odpoveďou RPC. Ak sa používa TCP, klient aktívne otvorí číslo portu TCP požadovanej služby a potom odošle správu s výzvou RPC cez vytvorené spojenie. Server odpovie správou odpovede RPC pri pripojení.

Ak chcete získať informácie zo servera RPC, použite pomôcku rpcinfo. Pri zadávaní parametrov -p hostiteľ program zobrazí zoznam všetkých registrovaných programov RPC na hostiteľskom hostiteľovi. Bez zadania hostiteľa program zobrazí služby na localhost. Príklad:

ARCHIV ~ # rpcinfo -p prog-ma vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 59451 stav 100024 1 tcp 6108072 stav 100 021 3 udp 44310 nlockmgr 100021 4 udp 44310 nlockmgr 100021 1 tcp 44851 nlockmgr 100021 3 tcp 44851 nlockmgr 100021 4 tcp 44851 nlockmgr 100003 2 tcp 2049 nfs 100003 3 3 209 tc 049 nfs 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100005 1 udp 51306 namontované 5 100 tcp 41405 namontovaný 100005 2 udp 51306 namontovaný 100005 2 tcp 41405 namontovaný 100005 3 udp 51306 namontovaný 100005 3 tcp 41405

Ako vidíte, rpcinfo zobrazuje (v stĺpcoch zľava doprava) registrované číslo programu, verziu, protokol, port a názov. Pomocou rpcinfo môžete odstrániť registráciu programu alebo získať informácie o konkrétnej RPC službe (viac možností v man rpcinfo). Ako vidíte, démoni portmapper verzie 2 sú zaregistrovaní na portoch udp a tcp, rpc.statd verzia 1 na portoch udp a tcp, správca zámkov NFS verzie 1,3,4, démon servera nfs verzia 2,3,4, rovnako ako mount daemon verzie 1,2,3.

NFS server (presnejšie démon rpc.nfsd) prijíma požiadavky od klienta vo forme UDP datagramov na porte 2049. Hoci NFS pracuje s prekladačom portov, ktorý umožňuje serveru využívať dynamicky prideľované porty, UDP port 2049 je napevno zakódované do NFS vo väčšine implementácií.

Prevádzka protokolu sieťového systému súborov

Montáž vzdialeného NFS

Proces pripojenia vzdialeného súborového systému NFS môže byť znázornený na nasledujúcom diagrame:

Popis protokolu NFS pri pripájaní vzdialeného adresára:

  1. Server RPC je spustený na serveri a klientovi (zvyčajne pri zavádzaní), obsluhovaný procesom mapovania portov a zaregistrovaný na porte tcp/111 a udp/111.
  2. Spustia sa služby (rpc.nfsd, rpc.statd atď.), ktoré sú zaregistrované na serveri RPC a zaregistrované na ľubovoľných sieťových portoch (ak nie je v nastaveniach služby určený statický port).
  3. príkaz mount na klientskom počítači odošle do jadra požiadavku na pripojenie sieťového adresára s uvedením typu súborového systému, hostiteľa a samotného adresára; jadro odošle a vytvorí požiadavku RPC do procesu portmap na serveri NFS na porte udp /111 (ak na klientovi nie je nastavená možnosť pracovať cez tcp )
  4. Jadro servera NFS požiada RPC o prítomnosť démona rpc.mountd a vráti jadru klienta sieťový port, na ktorom démon beží.
  5. mount odošle požiadavku RPC na port, na ktorom beží rpc.mountd. Server NFS môže teraz overiť klienta na základe jeho IP adresy a čísla portu, aby zistil, či klient môže pripojiť špecifikovaný súborový systém.
  6. Démon pripojenia vráti popis požadovaného súborového systému.
  7. Klientov príkaz mount vydá systémové volanie mount na priradenie popisovača súboru získaného v kroku 5 k lokálnemu bodu pripojenia na hostiteľskom počítači klienta. Rukoväť súboru je uložená v kóde NFS klienta a odteraz bude akýkoľvek prístup používateľských procesov k súborom v súborovom systéme servera používať ako východiskový bod rukoväť súboru.

Komunikácia medzi klientom a serverom NFS

Typický prístup k vzdialenému súborovému systému možno opísať takto:

Popis procesu prístupu k súboru umiestnenému na serveri NFS:

  1. Klienta (používateľský proces) nezaujíma, či pristupuje k lokálnemu súboru alebo k súboru NFS. Jadro interaguje s hardvérom prostredníctvom modulov jadra alebo vstavaných systémových volaní.
  2. Modul jadra kernel/fs/nfs/nfs.ko, ktorý vykonáva funkcie klienta NFS, odosiela požiadavky RPC na server NFS prostredníctvom modulu TCP/IP. NFS zvyčajne používa UDP, avšak novšie implementácie môžu používať TCP.
  3. Server NFS prijíma požiadavky od klienta ako datagramy UDP na porte 2049. Hoci NFS môže pracovať s prekladačom portov, ktorý umožňuje serveru používať dynamicky priradené porty, port UDP 2049 je vo väčšine implementácií pevne zakódovaný pre NFS.
  4. Keď server NFS prijme požiadavku od klienta, odošle sa rutine prístupu k lokálnemu súboru, ktorá poskytuje prístup k lokálnemu disku na serveri.
  5. Výsledok prístupu na disk sa vráti klientovi.

Nastavenie servera NFS

Ladenie servera vo všeobecnosti pozostáva zo špecifikovania lokálnych adresárov, ktoré môžu vzdialené systémy pripojiť do súboru /etc/exports. Táto akcia sa nazýva hierarchia exportných adresárov. Hlavnými zdrojmi informácií o exportovaných katalógoch sú nasledujúce súbory:

  • /etc/exports- hlavný konfiguračný súbor, ktorý ukladá konfiguráciu exportovaných adresárov. Používa sa pri spúšťaní NFS a nástrojom exportfs.
  • /var/lib/nfs/xtab- obsahuje zoznam adresárov pripojených vzdialenými klientmi. Používa ho démon rpc.mountd, keď sa klient pokúša pripojiť hierarchiu (vytvorí sa položka pripojenia).
  • /var/lib/nfs/etab- zoznam adresárov, ktoré môžu byť pripojené vzdialenými systémami, s uvedením všetkých parametrov exportovaných adresárov.
  • /var/lib/nfs/rmtab- zoznam adresárov, ktoré momentálne nie sú exportované.
  • /proc/fs/nfsd- špeciálny súborový systém (kernel 2.6) na správu servera NFS.
    • exportov- zoznam aktívnych exportovaných hierarchií a klientov, ktorým boli exportované, ako aj parametre. Jadro získava tieto informácie z /var/lib/nfs/xtab.
    • vlákna- obsahuje počet vlákien (možno tiež zmeniť)
    • pomocou filehandle môžete získať ukazovateľ na súbor
    • atď...
  • /proc/net/rpc- obsahuje „surové“ štatistiky, ktoré je možné získať pomocou nfsstat, ako aj rôznych vyrovnávacích pamätí.
  • /var/run/portmap_mapping- informácie o službách registrovaných v RPC

Poznámka: Vo všeobecnosti je na internete množstvo výkladov a formulácií účelu súborov xtab, etab, rmtab, neviem komu mám veriť.Aj na http://nfs.sourceforge.net/ je výklad nejasné.

Nastavenie súboru /etc/exports

V najjednoduchšom prípade je súbor /etc/exports jediným súborom, ktorý vyžaduje úpravu na konfiguráciu servera NFS. Tento súbor riadi nasledujúce aspekty:

  • Akí klienti môže pristupovať k súborom na serveri
  • Aké hierarchie? k adresárom na serveri má prístup každý klient
  • Aké budú vlastné mená zákazníkov byť zobrazené na miestne používateľské mená

Každý riadok exportovaného súboru má nasledujúci formát:

export_point client1 (options) [client2(options) ...]

Kde export_point absolútna cesta k exportovanej hierarchii adresárov, klient1 - n názov jedného alebo viacerých klientov alebo IP adries oddelených medzerami, ktoré sa môžu pripojiť export_point . možnosti opísať pravidlá montáže pre zákazník, špecifikované predtým možnosti .

Tu je jeden typický exportuje príklad konfigurácie súboru:

ARCHIV ~ # cat /etc/exports /archiv1 files(rw,sync) 10.0.0.1(ro,sync) 10.0.230.1/24(ro,sync)

V tomto príklade majú súbory počítačov a 10.0.0.1 povolený prístup k exportnému bodu /archiv1, zatiaľ čo hostiteľské súbory majú prístup na čítanie/zápis a hostiteľ 10.0.0.1 a podsieť 10.0.230.1/24 majú prístup len na čítanie.

Popisy hostiteľov v /etc/exports sú povolené v nasledujúcom formáte:

  • Názvy jednotlivých uzlov sú opísané ako súbory alebo súbory.DOMAIN.local.
  • Maska domény je opísaná v nasledujúcom formáte: *DOMAIN.local zahŕňa všetky uzly domény DOMAIN.local.
  • Podsiete sú špecifikované ako páry IP adresa/maska. Napríklad: 10.0.0.0/255.255.255.0 zahŕňa všetky uzly, ktorých adresy začínajú 10.0.0.
  • Zadanie názvu skupiny siete @myclients, ktorá má prístup k prostriedku (pri použití servera NIS)

Všeobecné možnosti exportu hierarchií adresárov

Súbor exportov používa nasledujúce všeobecné možnosti(možnosti používané predvolene vo väčšine systémov sú uvedené ako prvé, iné ako predvolené v zátvorkách):

  • auth_nlm (no_auth_nlm) alebo secure_locks (insecure_locks)- určuje, že server by mal vyžadovať overenie požiadaviek na uzamknutie (pomocou protokolu NFS Lock Manager).
  • nohide (skryť)- ak server exportuje dve hierarchie adresárov, pričom jedna je vnorená (pripojená) v druhej. Klient potrebuje explicitne pripojiť druhú (podradenú) hierarchiu, inak sa bod pripojenia podradenej hierarchie zobrazí ako prázdny adresár. Voľba nohide má za následok druhú hierarchiu adresárov bez explicitného pripojenia. ( Poznámka: Túto možnosť sa mi nepodarilo spustiť...)
  • ro(rw)- Umožňuje iba požiadavky na čítanie (zápis). (V konečnom dôsledku, či je možné čítať/zapisovať alebo nie, sa určuje na základe práv súborového systému a server nie je schopný rozlíšiť požiadavku na čítanie súboru od požiadavky na vykonanie, takže umožňuje čítanie, ak používateľ čítal alebo vykonávať práva.)
  • bezpečný (nezabezpečený)- vyžaduje, aby požiadavky NFS prichádzali zo zabezpečených portov (< 1024), чтобы программа без прав root не могла монтировать иерархию каталогов.
  • subtree_check (no_subtree_check)- Ak sa exportuje podadresár súborového systému, ale nie celý súborový systém, server skontroluje, či sa požadovaný súbor nachádza v exportovanom podadresári. Vypnutím overenia sa zníži bezpečnosť, ale zvýši sa rýchlosť prenosu údajov.
  • synchronizácia (asynchrónna)- určuje, že server by mal odpovedať na požiadavky až po zapísaní zmien vykonaných týmito požiadavkami na disk. Voľba async hovorí serveru, aby nečakal na zápis informácií na disk, čo zlepšuje výkon, ale znižuje spoľahlivosť, pretože V prípade prerušenia spojenia alebo zlyhania zariadenia môže dôjsť k strate informácií.
  • wdelay (no_wdelay)- Inštruuje server, aby oneskoril vykonávanie požiadaviek na zápis, ak čaká na následnú požiadavku na zápis, pričom údaje sa zapisujú do väčších blokov. To zlepšuje výkon pri odosielaní veľkých frontov príkazov na zápis. no_wdelay určuje, že sa nemá oneskoriť vykonanie príkazu zápisu, čo môže byť užitočné, ak server prijíma veľké množstvo nesúvisiacich príkazov.

Exportujte symbolické odkazy a súbory zariadenia. Pri exporte adresárovej hierarchie obsahujúcej symbolické odkazy musí byť objekt odkazu prístupný pre klientsky (vzdialený) systém, to znamená, že musí platiť jedno z nasledujúcich pravidiel:

Súbor zariadenia patrí do rozhrania. Keď exportujete súbor zariadenia, exportuje sa toto rozhranie. Ak klientsky systém nemá zariadenie rovnakého typu, exportované zariadenie nebude fungovať. V klientskom systéme môžete pri pripájaní objektov NFS použiť voľbu nodev, aby sa nepoužili súbory zariadení v pripojených adresároch.

Predvolené možnosti sa môžu medzi systémami líšiť a možno ich nájsť v /var/lib/nfs/etab. Po opísaní exportovaného adresára v /etc/exports a reštartovaní servera NFS sa všetky chýbajúce možnosti (čítaj: predvolené možnosti) prejavia v súbore /var/lib/nfs/etab.

Možnosti zobrazenia (zhody) ID používateľa

Pre lepšie pochopenie nasledujúceho by som vám odporučil prečítať si článok. Každý používateľ Linuxu má svoje vlastné UID a hlavné GID, ktoré sú popísané v súboroch /etc/passwd A /etc/group. Server NFS predpokladá, že operačný systém vzdialeného hostiteľa overil používateľov a priradil im správne UID a GID. Exportovanie súborov poskytuje používateľom klientskeho systému rovnaký prístup k týmto súborom, ako keby boli prihlásení priamo na server. Preto, keď klient NFS odošle požiadavku na server, server použije UID a GID na identifikáciu používateľa v lokálnom systéme, čo môže viesť k niektorým problémom:

  • používateľ nemusí mať rovnaké identifikátory v oboch systémoch, a preto môže mať prístup k súborom iného používateľa.
  • pretože Ak je ID užívateľa root vždy 0, potom sa tento užívateľ namapuje na lokálneho užívateľa v závislosti od zadaných volieb.

Nasledujúce možnosti nastavujú pravidlá pre zobrazenie vzdialených používateľov v lokálnych:

  • root_squash (no_root_squash)- S uvedenou možnosťou root_squash, požiadavky od užívateľa root sú mapované na anonymné uid/gid, alebo na užívateľa špecifikovaného v parametri anonuid/anongid.
  • no_all_squash (all_squash)- Nezmení UID/GID pripájajúceho sa používateľa. Možnosť all_squash nastaví zobrazenie VŠETKÝCH používateľov (nielen root) ako anonymných alebo špecifikovaných v parametri anonuid/anongid.
  • anonuid= UID A anongid= GID - Explicitne nastaví UID/GID pre anonymného používateľa.
  • map_static= /etc/file_maps_users - Určuje súbor, v ktorom môžete nastaviť mapovanie vzdialeného UID/GID na lokálne UID/GID.

Príklad použitia súboru mapovania používateľov:

ARCHIV ~ # cat /etc/file_maps_users # Mapovanie používateľov # vzdialený lokálny komentár uid 0-50 1002 # mapovanie používateľov so vzdialeným UID 0-50 na lokálne UID 1002 gid 0-50 1002 # mapovanie používateľov so vzdialeným GID 0-50 na miestne GID 1002

Správa servera NFS

Server NFS je spravovaný pomocou nasledujúcich nástrojov:

  • nfsstat
  • showmsecure (nezabezpečené) pripojenie

nfsstat: Štatistiky NFS a RPC

Nástroj nfsstat vám umožňuje zobraziť štatistiky serverov RPC a NFS. Možnosti príkazu nájdete v man nfsstat.

showmount: Zobrazenie informácií o stave NFS

pomôcka showmount dotazuje démona rpc.mountd na vzdialenom hostiteľovi na pripojené súborové systémy. Štandardne sa vráti zoradený zoznam klientov. Kľúče:

  • --všetko- zobrazí sa zoznam klientov a bodov pripojenia označujúci, kam klient pripojil adresár. Tieto informácie nemusia byť spoľahlivé.
  • -- adresáre- zobrazí sa zoznam bodov pripojenia
  • -- vývoz- zobrazí sa zoznam exportovaných súborových systémov z pohľadu nfsd

Keď spustíte showmount bez argumentov, na konzole sa vytlačia informácie o systémoch, ktoré sa môžu pripojiť miestne katalógov. Napríklad hostiteľ ARCHIV nám poskytuje zoznam exportovaných adresárov s IP adresami hostiteľov, ktorí majú povolené pripojiť zadané adresáre:

FILES ~ # showmount --exportuje archív Exportovať zoznam pre archív: /archiv-big 10.0.0.2 /archiv-small 10.0.0.2

Ak v argumente zadáte názov hostiteľa/IP, zobrazia sa informácie o tomto hostiteľovi:

ARCHIV ~ # súbory showmount clnt_create: RPC: Program nie je zaregistrovaný # táto správa nám hovorí, že démon NFSd nebeží na hostiteľovi FILES

exportfs: spravujte exportované adresáre

Tento príkaz slúži na exportované adresáre špecifikované v súbore /etc/exports, presnejšie by bolo napísať, že neslúži, ale synchronizuje sa so súborom /var/lib/nfs/xtab a odstráni neexistujúce z xtab. exportfs sa vykoná pri spustení démona nfsd s argumentom -r. Nástroj exportfs v režime jadra 2.6 komunikuje s démonom rpc.mountd prostredníctvom súborov v adresári /var/lib/nfs/ a nekomunikuje priamo s jadrom. Bez parametrov zobrazí zoznam aktuálne exportovaných súborových systémov.

parametre exportfs:

  • [client:názov-adresára] - pridať alebo odstrániť zadaný súborový systém pre zadaného klienta)
  • -v - zobrazí viac informácií
  • -r - reexportovať všetky adresáre (synchronizovať /etc/exports a /var/lib/nfs/xtab)
  • -u - odstrániť zo zoznamu exportovaných
  • -a - pridanie alebo odstránenie všetkých súborových systémov
  • -o - možnosti oddelené čiarkami (podobne ako možnosti používané v /etc/exports; t.j. môžete zmeniť možnosti už pripojených súborových systémov)
  • -i - pri pridávaní nepoužívajte /etc/exports, iba aktuálne voľby príkazového riadku
  • -f - vynuluje zoznam exportovaných systémov v jadre 2.6;

NFS klient

Pred prístupom k súboru na vzdialenom súborovom systéme musí klient (klientsky OS). namontujte ho a prijímať zo servera ukazovateľ na to. Pripojenie NFS možno vykonať pomocou alebo pomocou jedného z množiacich sa automatických montážnych zariadení (amd, autofs, automount, supermount, superpupermount). Proces inštalácie je dobre znázornený na obrázku vyššie.

Zapnuté Klienti NFS nie je potrebné spúšťať žiadnych démonov, funkcie klienta spustí modul jadra kernel/fs/nfs/nfs.ko, ktorý sa používa pri pripájaní vzdialeného súborového systému. Exportované adresáre zo servera je možné pripojiť na klienta nasledujúcimi spôsobmi:

  • manuálne pomocou príkazu mount
  • automaticky pri zavádzaní systému pri pripájaní súborových systémov popísaných v /etc/fstab
  • automaticky pomocou démona autofs

Tretiu metódu s autofs v tomto článku nebudem brať do úvahy kvôli jej rozsiahlym informáciám. Možno v budúcich článkoch bude samostatný popis.

Pripojenie systému sieťových súborov pomocou príkazu mount

Príklad použitia príkazu mount je uvedený v príspevku. Tu sa pozriem na príklad príkazu mount na pripojenie súborového systému NFS:

SÚBORY ~ # mount -t nfs archiv:/archiv-small /archivs/archiv-small FILES ~ # mount -t nfs -o ro archiv:/archiv-big /archivs/archiv-big FILES ~ # mount ..... .. archiv:/archiv-small na /archivs/archiv-small type nfs (rw,addr=10.0.0.6) archiv:/archiv-big on /archivs/archiv-big type nfs (ro,addr=10.0.0.6)

Prvý príkaz pripojí exportovaný adresár /archív-malý na serveri archív do miestneho bodu pripojenia /archivs/archiv-small s predvolenými možnosťami (t. j. čítanie a zápis). Hoci príkaz mount v najnovších distribúciách dokáže pochopiť, aký typ súborového systému sa používa aj bez špecifikácie typu, ale stále uvádza parameter -t nfsžiaduce. Druhý príkaz pripojí exportovaný adresár /archív-veľký na serveri archív do lokálneho adresára /archív/archív-veľký s možnosťou len na čítanie ( ro). príkaz mount bez parametrov nám jasne ukazuje výsledok montáže. Okrem možnosti len na čítanie (ro) je možné zadať aj ďalšie Základné možnosti pri montáži NFS:

  • nosuid- Táto možnosť zakazuje spúšťanie programov z pripojeného adresára.
  • nodev(žiadne zariadenie – nie je zariadenie) – Táto možnosť zakazuje používanie znakových a blokových špeciálnych súborov ako zariadení.
  • zámok (nolock)- Umožňuje uzamknutie NFS (predvolené). nolock deaktivuje uzamykanie NFS (nespustí démona lockd) a je užitočný pri práci so staršími servermi, ktoré nepodporujú uzamykanie NFS.
  • mounthost=meno- Názov hostiteľa, na ktorom je spustený démon pripojenia NFS - mountd.
  • mountport=n - Port používaný démonom mountd.
  • port=n- port používaný na pripojenie k serveru NFS (predvolené je 2049, ak démon rpc.nfsd nie je zaregistrovaný na serveri RPC). Ak n=0 (predvolené), NFS sa dotazuje na mapu portov na serveri, aby určil port.
  • rssize=n(veľkosť bloku čítania – veľkosť bloku čítania) – Počet bajtov načítaných naraz zo servera NFS. Štandardná - 4096.
  • wsize=n(veľkosť bloku zápisu – veľkosť bloku zápisu) – Počet bajtov zapísaných naraz na server NFS. Štandardná - 4096.
  • TCP alebo udp- Na pripojenie NFS použite protokol TCP alebo UDP.
  • bg- Ak stratíte prístup k serveru, skúste to znova na pozadí, aby ste nezablokovali proces zavádzania systému.
  • fg- Ak stratíte prístup k serveru, skúste to znova v režime priority. Táto možnosť môže zablokovať proces zavádzania systému opakovanými pokusmi o pripojenie. Z tohto dôvodu sa parameter fg používa predovšetkým na ladenie.

Možnosti ovplyvňujúce ukladanie atribútov do vyrovnávacej pamäte na pripojeniach NFS

Atribúty súboru, uložené v (inodes), ako je čas úpravy, veľkosť, pevné odkazy, vlastník, sa zvyčajne menia zriedkavo pre bežné súbory a ešte menej často pre adresáre. Mnohé programy, ako napríklad ls, pristupujú k súborom iba na čítanie a nemenia atribúty alebo obsah súborov, ale plytvajú systémovými zdrojmi na drahé sieťové operácie. Aby ste predišli plytvaniu zdrojmi, môžete cache tieto atribúty. Jadro používa čas úpravy súboru na určenie, či je vyrovnávacia pamäť zastaraná, porovnaním času úpravy vo vyrovnávacej pamäti a času úpravy samotného súboru. Vyrovnávacia pamäť atribútov sa pravidelne aktualizuje v súlade so špecifikovanými parametrami:

  • ac (noac) (vyrovnávacia pamäť atribútov- ukladanie atribútov do vyrovnávacej pamäte) - Umožňuje ukladanie atribútov do vyrovnávacej pamäte (predvolené). Aj keď možnosť noac spomaľuje server, zabraňuje zastaraniu atribútov, keď viacerí klienti aktívne zapisujú informácie do spoločnej hierarchie.
  • acdirmax=n (maximálny súbor adresára vyrovnávacej pamäte atribútov- maximálny počet atribútov ukladania do vyrovnávacej pamäte pre súbor adresára) - Maximálny počet sekúnd, ktoré NFS čaká pred aktualizáciou atribútov adresára (predvolené 60 sekúnd)
  • acdirmin=n (minimálny súbor adresára vyrovnávacej pamäte atribútov- minimálne ukladanie atribútov do vyrovnávacej pamäte pre súbor adresára) - Minimálny počet sekúnd, počas ktorých NFS čaká pred aktualizáciou atribútov adresára (predvolené 30 sekúnd)
  • acregmax=n (atribút cache bežného súboru maximum- maximum ukladania atribútov pre bežný súbor) - Maximálny počet sekúnd, ktoré NFS čaká pred aktualizáciou atribútov bežného súboru (predvolené 60 sekúnd)
  • akregmin=n (atribút cache bežného súboru minimum- minimálne ukladanie atribútov do vyrovnávacej pamäte pre bežný súbor) - Minimálny počet sekúnd, ktoré NFS čaká pred aktualizáciou atribútov bežného súboru (predvolené 3 sekundy)
  • actimeo=n (časový limit vyrovnávacej pamäte atribútov- časový limit ukladania atribútov do vyrovnávacej pamäte) - Nahrádza hodnoty pre všetky vyššie uvedené možnosti. Ak nie je zadané actimeo, vyššie uvedené hodnoty nadobudnú predvolené hodnoty.

Možnosti spracovania chýb NFS

Nasledujúce možnosti určujú, čo robí NFS, keď server neodpovedá alebo keď sa vyskytnú chyby I/O:

  • fg(bg) (popredia- popredie, pozadie- background) - Pokusy o pripojenie neúspešného NFS na popredie/pozadie.
  • tvrdá mäkká)- po dosiahnutí časového limitu zobrazí konzole správu "server neodpovedá" a pokračuje v pokuse o pripojenie. S danou možnosťou mäkké- počas časového limitu informuje program, ktorý volal operáciu, o I/O chybe. (odporúča sa nepoužívať mäkkú možnosť)
  • nointr (intr) (žiadne prerušenie- neprerušovať) - Nedovoľuje signálom prerušiť operácie so súbormi v pevne pripojenej hierarchii adresárov, keď sa dosiahne veľký časový limit. intr- umožňuje prerušenie.
  • retrans=n (hodnotu retransmisie- hodnota opakovaného prenosu) - Po n malých časových limitoch NFS vygeneruje veľký časový limit (predvolené 3). Veľký časový limit zastaví operácie alebo vytlačí na konzolu správu „server neodpovedá“ v závislosti od toho, či je zadaná možnosť hard/soft.
  • opakovať=n (hodnotu opätovného pokusu- hodnota opakovania) - Počet minút, počas ktorých bude služba NFS opakovať operácie pripojenia, kým sa vzdá (predvolená hodnota je 10 000).
  • timeo=n (hodnota časového limitu- hodnota časového limitu) - Počet desatín sekundy, ktoré služba NFS čaká pred opätovným odoslaním v prípade RPC alebo malého časového limitu (predvolené 7). Táto hodnota sa zvyšuje s každým časovým limitom až na maximálne 60 sekúnd alebo kým nedôjde k veľkému časovému limitu. Ak je sieť zaneprázdnená, server je pomalý alebo požiadavka prechádza viacerými smerovačmi alebo bránami, zvýšenie tejto hodnoty môže zlepšiť výkon.

Automatické pripojenie NFS pri zavádzaní (popis súborových systémov v /etc/fstab)

Optimálny čas pre konkrétnu hodnotu prenášaného paketu (hodnoty rsize/wsize) môžete vybrať pomocou príkazu ping:

SÚBORY ~ # ping -s 32768 archiv PING archiv.DOMAIN.local (10.0.0.6) 32768(32796) bajtov dát. 32776 bajtov z archiv.domain.local (10.0.0.6): icmp_req=1 ttl=64 čas=0,931 ms 32776 bajtov z archiv.domain.local (10.0.0.6): icmp_req=2 ttl=64 ms7 358 časov=0,958 z archiv.domena.miestne (10.0.0.6): icmp_req=3 ttl=64 čas=1,03 ms 32776 bajtov z archiv.domena.miestne (10.0.0.6): icmp_req=4 ttl=64 čas=1,00 ms z 32776 bajtov .domain.local (10.0.0.6): icmp_req=5 ttl=64 čas=1,08 ms ^C --- archív.DOMAIN.local štatistiky ping --- 5 paketov odoslaných, 5 prijatých, 0 % strata paketov, čas 4006 ms rtt min/avg/max/mdev = 0,931/1,002/1,083/0,061 ms

Ako vidíte, pri odosielaní paketu s veľkosťou 32768 (32Kb) sa jeho čas cesty z klienta na server a späť pohybuje okolo 1 milisekúnd. Ak tento čas presiahne 200 ms, potom by ste mali zvážiť zvýšenie hodnoty timeo tak, aby prekračovalo hodnotu výmeny troj- až štvornásobne. Preto je vhodné vykonať tento test pri veľkom zaťažení siete.

Spustenie NFS a nastavenie brány firewall

Poznámka bola skopírovaná z blogu http://bog.pp.ru/work/NFS.html, za čo veľká vďaka!!!

Spustite server NFS, pripojte, zablokujte, kvótu a stav so „správnymi“ portami (pre bránu firewall)

  • Odporúča sa najskôr odpojiť všetky prostriedky na klientoch
  • zastavte a zakážte spustenie rpcidmapd, ak neplánujete používať NFSv4: chkconfig --level 345 rpcidmapd off service rpcidmapd stop
  • ak je to potrebné, povoľte spustenie služieb portmap, nfs a nfslock: chkconfig --levels 345 portmap/rpcbind na chkconfig --levels 345 nfs na chkconfig --levels 345 nfslock on
  • ak je to potrebné, zastavte služby nfslock a nfs, spustite portmap/rpcbind, uvoľnite službu modulov nfslock stop službu nfs stop službu portmap štart # služba rpcbind štart umount /proc/fs/nfsd služba rpcidmapd stop rmmod nfsd služba autofs stop # niekde neskôr to musí byť spustený rmmod nfs rmmod nfs_acl rmmod lockd
  • otvorené porty v
    • pre RPC: UDP/111, TCP/111
    • pre NFS: UDP/2049, TCP/2049
    • pre rpc.statd: UDP/4000, TCP/4000
    • pre uzamknuté: UDP/4001, TCP/4001
    • pre namontované: UDP/4002, TCP/4002
    • pre rpc.rquota: UDP/4003, TCP/4003
  • pre server rpc.nfsd pridajte riadok RPCNFSDARGS="--port 2049" do /etc/sysconfig/nfs
  • pre mount server pridajte riadok MOUNTD_PORT=4002 do /etc/sysconfig/nfs
  • ak chcete nakonfigurovať rpc.rquota pre nové verzie, musíte pridať riadok RQUOTAD_PORT=4003 do /etc/sysconfig/nfs
  • pre konfiguráciu rpc.rquota je potrebné pre staršie verzie (musíte však mať balík kvót 3.08 alebo novší) pridať do /etc/services rquotad 4003/tcp rquotad 4003/udp
  • skontroluje primeranosť /etc/exports
  • spustiť služby rpc.nfsd, mountd a rpc.rquota (rpcsvcgssd a rpc.idmapd sa spustia súčasne, ak si ich pamätáte vymazať) služba nfsd štart alebo v nových verziách služba nfs start
  • pre blokovací server pre nové systémy pridajte riadky LOCKD_TCPPORT=4001 LOCKD_UDPPORT=4001 do /etc/sysconfig/nfs
  • pre lock server pre staršie systémy pridajte priamo do /etc/modprobe[.conf]: options lockd nlm_udpport=4001 nlm_tcpport=4001
  • naviazať stavový server rpc.statd na port 4000 (pre staršie systémy spustite rpc.statd s prepínačom -p 4000 v /etc/init.d/nfslock) STATD_PORT=4000
  • spustiť službu lockd a rpc.statd službu nfslock spustiť
  • uistite sa, že všetky porty sú normálne viazané pomocou "lsof -i -n -P" a "netstat -a -n" (niektoré porty používajú moduly jadra, ktoré lsof nevidí)
  • ak pred „prestavbou“ server používali klienti a nebolo možné ich odpojiť, budete musieť reštartovať služby automatického pripájania na klientoch (am-utils, autofs)

Príklad konfigurácie servera a klienta NFS

Konfigurácia servera

Ak chcete, aby bol váš zdieľaný adresár NFS verejný a zapisovateľný, môžete použiť túto možnosť all_squash v kombinácii s možnosťami anonuid A anongid. Ak chcete napríklad nastaviť povolenia pre používateľa „nikto“ v skupine „nikto“, môžete urobiť nasledovné:

ARCHIV ~ # cat /etc/exports # Prístup na čítanie a zápis pre klienta na 192.168.0.100, s prístupom rw pre používateľa 99 s gid 99 /súbory 192.168.0.100(rw,sync,all_squash,anonuid=99,anongid=99) # Prístup na čítanie a zápis pre klienta na 192.168.0.100, s prístupom rw pre používateľa 99 s gid 99 /súbory 192.168.0.100(rw,sync,all_squash,anonuid=99,anongid=99))

To tiež znamená, že ak chcete povoliť prístup k zadanému adresáru, nikto. nikto nesmie byť vlastníkom zdieľaného adresára:

man mount
človek vyváža
http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.prftungd/doc/prftungd/nfs_perf.htm - Výkon NFS od IBM.

S pozdravom, McSim!

Pri správe serverov založených na OS Linux v prostredí, kde sa Windows používa ako hlavný klientsky OS, sa z času na čas musíte vysporiadať s potrebou skopírovať niečo z klientskeho systému Windows do systému Linux alebo naopak z počítača. Systém Linux na Windows. Najčastejšie sa na to využívajú možnosti protokolov SSH/SCP pomocou nástrojov, ako je utilita pscp.exe. Ale keď sa musíte zaoberať súborovými servermi Linux, ktoré vám umožňujú využívať možnosti protokolu NFS, môžeme klásť otázky ako „môže klientsky operačný systém Windows fungovať ako klient NFS?“, „existuje nejaký druh vstavanej implementácie klienta NFS v klientskom OS Windows?“ Toto boli otázky, ktoré som mal v období, ktoré sa zhodovalo s obdobím, keď sme prechádzali z Windows 8.1 na prvé vydanie Windows 10. Informácie, ktoré som v tom čase o tomto probléme našiel, boli, že iba „senior " edície klientskych operačných systémov Windows, ako napr Windows 7 Ultimate/Enterprise, Windows 8/8.1 Podnik A Windows 10 Enterprise. V našom prípade bol však použitý OS Windows 10 redakcie Profesionálny, tak som tieto myšlienky musel zahodiť.

Nedávno som pri čítaní diskusií na fórach TechNet narazil na informáciu, že v určitom okamihu v edícii Windows 10 Professional bolo možné používať funkcie klienta NFS. Podľa informácií z niektorých zdrojov sa takáto možnosť objavila v r Windows 10 verzií 1607 (10.0.14393 / aktualizácia k výročiu).

Rozhodol som sa skontrolovať tieto informácie o tom, čo mám po ruke Windows 10 1803(10.0.17134 / Aktualizácia apríl 2018) redakcia Profesionálny, zistil som, že teraz máme skutočne možnosť používať túto funkciu.

Na povolenie klienta NFS môžeme použiť modul Správa programov a funkcií appwiz.cpl. Tu v zozname "súčiastok systému Windows" nájdete tie, ktoré sú k dispozícii na zaradenie " Služby pre NFS".

Po dokončení inštalácie sa komponent nachádza v ovládacom paneli pod " Administrácia"objaví sa záber" Služby pre NFS" (nfsmgmt.msc), v ktorom môžeme spravovať niektoré parametre klienta NFS.

Predpokladáme, že na strane servera NFS sú už nakonfigurované oprávnenia na prístup z klientskeho systému, napríklad je explicitne povolený prístup k IP adrese klienta. Najjednoduchší príklad inštalácie a konfigurácie servera NFS na strane CentOS Linux možno nájsť v článku Wiki „Inštalácia a konfigurácia servera a klienta NFS v CentOS Linux 7.2“.

Po nastavení prístupových práv na strane servera NFS prejdite na Windows 10 a pripojte sieťový adresár pomocou „ namontovať". Najjednoduchší príklad anonymného pripojenia k sieťovému adresáru vyzerá takto:

namontovať-o anon \\KOM-FS01\mnt\vdo-vd1\ovirt-iso-doména I:
  • "-o anon" - pripojenie s anonymnými používateľskými právami;
  • "KOM-FS01" - názov servera NFS;
  • "mnt\vdo-vd1\ovirt-iso-domain" - lokálna cesta k adresáru na serveri NFS;
  • "I" je písmeno jednotky Windows

Ďalšie dostupné parametre a pomocné klávesy je možné zobraziť pomocou príkazu " namontovať/?". Napríklad pri pripájaní môžeme explicitne zadať meno používateľa a heslo na serveri NFS.

Pri otváraní vlastností adresárov a súborov v pripojenom adresári NFS sa nám zobrazí špeciálna karta " Atribúty NFS“ s príslušnými atribútmi vrátane informácií o aktuálnych povoleniach k adresáru/súboru, ktoré, ak máme dostatočné práva, vieme spravovať.

Pri opätovnom spustení príkazu namontovať bez zadania parametrov dostaneme informácie o aktuálnych pripojeniach klienta NFS a vlastnostiach týchto pripojení:

Tu môžeme vidieť s čím UID A GUID, pripojenie dokončené. Pre anonymné pripojenia je to predvolené nastavenie -2 /-2 . Ak z nejakého dôvodu potrebujeme zmeniť tieto identifikátory pre všetky pripojenia anonymných klientov, môžeme pridať niekoľko chýbajúcich predvolených nastavení registra, ako napr. DWORD(32-bit):

  • AnonymousUid
  • AnonymousGid

do kľúča registra:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default

Do hodnôt vytvorených parametrov môžete zapísať požadované UID a GUID, ktoré budú použité pre všetky anonymné pripojenia. Snímka obrazovky nižšie používa príklad s hodnotami 1000 :1000 (desatinné).

Ak chceme, aby sa používali všetky anonymné pripojenia koreň- nové identifikátory, potom v zodpovedajúcich parametroch registra musíte zadať AnonymousUid = 0 a AnonymousGid = 0 . Zadanie koreňových identifikátorov môže byť užitočné, ak napríklad potrebujeme nielen čítať, ale aj zapisovať do pripojeného adresára NFS a vzdialený server NFS umožňuje zapisovať iba užívateľovi root a/alebo členom koreňovej skupiny.

Aby sa zmeny prejavili, budete musieť zastaviť a reštartovať službu NFS Client z vyššie uvedeného modulu Services for NFS (nfsmgmt.msc).

Alebo ak reštartovanie počítača nie je problémom, potom môžete reštartovať klientsky počítač, aby sa zmeny prejavili.

Moje pokusy o reštartovanie systémovej služby" Klient pre NFS" (NfsClnt) prostredníctvom štandardných mechanizmov, ako je napríklad modul Service Control services.msc alebo užitočnosť" net", ukázali, že to z nejakého dôvodu vedie k nemožnosti spustenia služby po jej zastavení. Preto je na reštart klienta NFS lepšie použiť natívny modul snap-in. Aj keď sa opäť zistilo, že opakované zastavenie /spustenie služby v module snap-in " Služby pre NFS" môže tiež spôsobiť, že klient NFS nebude správne fungovať. V dôsledku toho napríklad obslužný program " namontovať" môže zastaviť pripájanie adresárov NFS, čo spôsobí chybu siete:

V takýchto prípadoch pomáha iba reštartovanie klientskeho počítača, po ktorom všetko začne znova fungovať.

Po vykonaní potrebných zmien v registri a úspešnom reštarte klientskej služby NFS sa znova pokúsime pripojiť adresár NFS a pozrieť sa pomocou príkazu " namontovať"informácie o pripojení.

Ako vidíte, teraz sú bezpečnostné identifikátory presne tie, ktoré sme predtým špecifikovali v registri.

Zakázanie sieťových prostriedkov pripojených cez protokol NFS je také jednoduché ako pripojenie, iba pomocou iného nástroja - " umount"

Vo všeobecnosti je dobré, že teraz majú používatelia edície Windows 10 Professional štandardnú možnosť pracovať so sieťovými súborovými prostriedkami pomocou protokolu NFS. Toto využijeme v našej práci.

Každý vie, že na systémoch UNIX je súborový systém logicky súborom fyzických súborových systémov pripojených k jednému bodu. Jednou z hlavných výhod takejto organizácie je podľa mňa možnosť dynamicky upravovať štruktúru existujúceho súborového systému. Aj vďaka úsiliu vývojárov máme dnes možnosť pripojiť súborový systém takmer akéhokoľvek typu a akýmkoľvek pohodlným spôsobom. Pri „metóde“ chcem v prvom rade zdôrazniť schopnosť jadra OS pracovať so súborovými systémami prostredníctvom sieťových pripojení.

Mnoho sieťových protokolov nám poskytuje možnosť pracovať so vzdialenými súbormi, či už ide o FTP, SMB, Telnet alebo SSH. Vďaka schopnosti jadra v konečnom dôsledku nezávisieť od typu pripojeného súborového systému máme možnosť pripojiť čokoľvek a akokoľvek chceme pomocou programu mount.

Dnes by som chcel hovoriť o NFS - Network File System. Táto technológia umožňuje pripojiť jednotlivé body systému súborov na vzdialenom počítači k systému súborov lokálneho počítača. Samotný protokol NFS vám umožňuje vykonávať operácie so súbormi pomerne rýchlo, bezpečne a spoľahlivo. Čo ešte potrebujeme? :-)

Čo je potrebné, aby to fungovalo

Aby sme sa dlho nerozpisovali na tému verzií NFS a ich podpory v rôznych jadrách, hneď budeme predpokladať, že vaša verzia jadra nie je nižšia ako 2.2.18. V oficiálnej dokumentácii vývojári sľubujú plnú podporu funkcionality NFS verzie 3 v tomto jadre a novších verziách.

Inštalácia

Na spustenie servera NFS v mojom Ubuntu 7.10 - Gutsy Gibbon som potreboval nainštalovať balíky nfs-common a nfs-kernel-server. Ak potrebujete iba klienta NFS, potom nie je potrebné inštalovať nfs-kernel-server.

Ladenie servera

Po úspešnej inštalácii všetkých balíkov musíte skontrolovať, či je spustený démon NFS:

/etc/init.d/nfs-kernel-server status

Ak démon nebeží, musíte ho spustiť príkazom

/etc/init.d/nfs-kernel-server štart

Po úspešnom spustení všetkého môžete začať exportovať systém súborov. Samotný proces je veľmi jednoduchý a zaberie minimum času.

Hlavný konfiguračný súbor servera NFS sa nachádza v /etc/exports a má nasledujúci formát:

Adresár stroj1(možnosť11,možnosť12) stroj2(možnosť21,možnosť22)

adresár— absolútna cesta k adresáru FS servera, ku ktorému potrebujete udeliť prístup

strojX— DNS názov alebo IP adresa klientskeho počítača, z ktorého je povolený prístup

možnosťXX— exportné parametre FS, z nich najčastejšie používané:

  • ro- prístup k súborom je len na čítanie
  • rw— je udelený prístup na čítanie/zápis
  • no_root_squash— v predvolenom nastavení, ak sa pripojíte k zdroju NFS ako root, server na svojej strane bude v záujme bezpečnosti pristupovať k súborom ako používateľ nikto. Ak však povolíte túto možnosť, k súborom na strane servera bude pristupovať ako root. Pri tejto možnosti buďte opatrní.
  • no_subtree_check— štandardne, ak exportujete nie celý oddiel na serveri, ale iba časť súborového systému, démon skontroluje, či sa požadovaný súbor fyzicky nachádza na rovnakom oddiele alebo nie. Ak exportujete celý oddiel alebo bod pripojenia exportovaného súborového systému neovplyvňuje súbory z iných fyzických nosičov, môžete povoliť túto možnosť. To vám umožní zvýšiť rýchlosť servera.
  • synchronizácia— povoľte túto možnosť, ak existuje možnosť náhlej straty spojenia alebo výpadku napájania servera. Ak táto možnosť nie je povolená, existuje veľmi vysoké riziko straty údajov, ak sa server NFS náhle zastaví.

Povedzme teda, že potrebujeme poskytnúť prístup k počítaču ashep-desktop do adresára /var/backups počítača ashep-laptop. Na kopírovanie záložných súborov z ashep-desktop je potrebný prístup k adresáru. Môj súbor dopadol takto:

/var/backups ashep-desktop(rw,no_subtree_check,sync)

Po pridaní riadku do /etc/exports musíte reštartovať server NFS, aby sa zmeny prejavili.

/etc/init.d/nfs-kernel-server reštart

To je všetko. Exportovaný FS môžete začať pripájať na klientskom počítači.

Nastavenie klienta

Na strane klienta sa vzdialený súborový systém pripája rovnakým spôsobom ako všetky ostatné – pomocou príkazu mount. Tiež vám nikto nezakazuje používať /etc/fstab, ak potrebujete pripojiť FS automaticky pri zavádzaní OS. Takže možnosť pripojenia bude vyzerať takto:

Mount -t nfs ashep-laptop:/var/backups/ /mnt/ashep-laptop/backups/

Ak všetko prebehlo v poriadku a potrebujete sa pripojiť k vzdialenému FS automaticky pri bootovaní, stačí pridať riadok do /etc/fstab:

Ashep-laptop:/var/backups /mnt/ashep-laptop/backups nfs auto 0 0

Čo ešte

Takže máme praktický, malý prehľad o možnostiach NFS. Samozrejme, toto je len malá časť toho, čo NFS dokáže. To stačí na použitie doma alebo v malej kancelárii. Ak vám to nestačí, odporúčam najskôr prečítať

Keď je zapnuté NFS-na serveri je jeden hlavný používateľ a na počítači, ktorý vystupuje ako NFS-klient, tiež jeden používateľ a tiež zahrnutý v zozname sudousers -: NFS oddiel je pripojený pomocou sudo, UID a GID na serveri NFS a klientovi NFS sú rovnaké, nie sú žiadne problémy s právami na čítanie a zápis.

Mal som situáciu, že klient NFS mal bežného používateľa bez prístupu k sudo a musel vedieť čítať a zapisovať na pripojený oddiel NFS. Nazvime tohto používateľa reguser. Na tomto počítači bol aj ďalší užívateľ (NFS klient), ktorý mal sudo prístup. Nazvime ho: admuser.

Takže som mal dve úlohy:

  1. Uistite sa, že reguser môže zapisovať do súborov a adresárov na serveri NFS.
  2. Urobte to tak, aby reguser mohol sám pripojiť a odpojiť oddiel NFS.

Ako povoliť zápis na server NFS používateľom z klienta NFS, ktorý má iné UID ako UID používateľa, ktorý vlastní súbory na serveri NFS

Akcie sa vykonávajú na serveri NFS ako užívateľ root.
Upravte /etc/exports:
nano /etc/exports
Vložíme alebo zmeníme riadok, ktorý označuje, ktorý adresár bude prístupný (exportovaný) cez NFS:

/home/nfs 192.168.1.1/24(rw,async,no_subtree_check,all_squash,anonuid=1000,anongid=1000)

Kde:

  • /home/nfs— adresár, ktorý bude prístupný (exportovaný) pre klienta NFS;
  • 192.168.1.1/24 — IP adresa alebo, ako v tomto prípade, rozsah adries, z ktorých sa môžete pripojiť k NFS;
  • rw— povolenie čítať a písať;
  • async— asynchrónny režim prevádzky, v ktorom sa odpovede na požiadavky vyskytnú okamžite, bez čakania na zápis na disk. V tomto prípade je spoľahlivosť nižšia, ale výkon je vyšší;
  • no_subtree_check- Keď povolíte prístup do podadresára súborového systému, a nie do celého súborového systému, server skontroluje, či sa požadovaný súbor nachádza v exportovanom podadresári alebo nie. no_subtree_check túto kontrolu zakáže, čo znižuje bezpečnosť, ale zvyšuje rýchlosť prenosu dát;
  • all_squash— táto možnosť zaisťuje, že všetci klienti NFS budú považovaní za anonymných na serveri NFS alebo tí používatelia servera NFS, ktorých identifikátory sú špecifikované v anonuid a anongid;
  • anonuid— ID užívateľa OS na serveri NFS. Prevzaté z /etc/passwd. Napríklad, ak potrebujete prvého nesystémového používateľa (toho, ktorého prihlasovacie meno bolo zadané pri inštalácii OS, v mojom prípade nfs) a v súbore /etc/passwd je tam čiara" nfs:x:1000:1000:NFS:/home/nfs:/bin/bash» hodnota pre anonuid bude prvé číslo 1000;
  • anongid— Identifikátor skupiny OS na serveri NFS. Prevzaté z /etc/group. Napríklad, ak potrebujete skupinu www-údaje a v súbore /etc/group je tam čiara" www-data:x:33:» hodnota pre anongid bude 33;

Ak potrebujete presnejšie určiť, ktorí používatelia na klientovi NFS zodpovedajú používateľom na serveri NFS, môžete povoliť mapovanie používateľov pridaním možnosti map_static=/etc/file_maps_users. Súbor /etc/file_maps_users by mal vyzerať takto:

# Mapovanie používateľov # vzdialený lokálny komentár uid 0-33 1002 # mapovanie používateľov so vzdialeným UID 0-50 na lokálne UID 1002 gid 0-33 1002 # mapovanie používateľov so vzdialeným GID 0-50 na lokálne GID 1002

Reštartujeme démona nfs a tým sa dokončí nastavenie servera:
/etc/init.d/nfs-kernel-server reštart

Ako povoliť bežnému používateľovi pripojiť a odpojiť oddiel NFS

Vytvorte adresár, do ktorého sa pripojíme:
sudo mkdir /media/nfs

Pridať k /etc/fstab montážne pravidlo. Otvorte súbor:
sudo nano /etc/fstab
Pridajte pravidlo:
192.168.1.50:/home/nfs /media/nfs nfs rw,noauto,user 0 0
Kde:

  • 192.168.1.50 — IP adresa servera NFS;
  • /home/nfs— adresár na serveri NFS, ktorý pripájame. Mal by byť na zozname /etc/exports na serveri NFS;
  • /media/nfs— adresár na klientovi NFS, do ktorého pripájame oddiel NFS;
  • nfs— typ systému súborov;
  • rw- s právom písať;
  • noauto— možnosť označujúca, že oddiel nie je potrebné pripájať automaticky pri zavádzaní systému;
  • užívateľ— možnosť, ktorá umožňuje každému používateľovi pripojiť a odpojiť tento oddiel.

Ak chcete vypnúť NFS:
nano ~/nfs.umount
S kódom:
#!/bin/bash
umount/media/nfs

Povoliť spúšťanie skriptov:
chmod ug+x ~/nfs.mount ~/nfs.umount

A nakoniec pripojenie zdroja NFS:
~/nfs.mount

Zakázanie prostriedku NFS:
~/nfs.umount

To je všetko, všetky úlohy sú splnené.

Keď sa hovorí o počítačových sieťach, často môžete počuť zmienku o NFS. Čo znamená táto skratka?

Ide o protokol distribuovaného súborového systému pôvodne vyvinutý spoločnosťou Sun Microsystems v roku 1984, ktorý umožňuje používateľovi na klientskom počítači pristupovať k súborom cez sieť, podobne ako prístup k lokálnemu úložisku. NFS, podobne ako mnohé iné protokoly, je založený na systéme ONC RPC (Open Network Computing Remote Procedure Call).

Inými slovami, čo je NFS? Je to otvorený štandard, definovaný Request for Comments (RFC), ktorý umožňuje komukoľvek implementovať protokol.

Verzie a variácie

Vynálezca použil iba prvú verziu na vlastné experimentálne účely. Keď vývojársky tím pridal významné zmeny do pôvodného NFS a vydal ho mimo autorstva Sun, označil novú verziu ako v2, aby mohol otestovať interoperabilitu medzi distribúciami a vytvoriť záložnú verziu.

NFS v2

Verzia 2 spočiatku fungovala iba cez User Datagram Protocol (UDP). Jeho vývojári chceli zachovať serverovú stranu bez blokovania implementovaného mimo hlavného protokolu.

Rozhranie virtuálneho súborového systému umožňuje modulárnu implementáciu premietnutú do jednoduchého protokolu. Do februára 1986 boli predvedené riešenia pre operačné systémy ako System V vydanie 2, DOS a VAX/VMS využívajúce Eunice. NFS v2 umožňoval čítanie iba prvých 2 GB súboru kvôli 32-bitovým obmedzeniam.

NFS v3

Prvý návrh na vývoj NFS verzie 3 v Sun Microsystems bol oznámený krátko po vydaní druhej distribúcie. Hlavnou motiváciou bolo pokúsiť sa zmierniť výkonnostný problém synchrónneho nahrávania. Do júla 1992 praktické vylepšenia vyriešili mnohé nedostatky NFS verzie 2 a zostala len nedostatočná podpora súborov (64-bitové veľkosti súborov a posuny súborov).

  • podpora pre 64-bitové veľkosti súborov a posuny na spracovanie údajov väčších ako 2 gigabajty (GB);
  • podpora asynchrónneho nahrávania na serveri na zlepšenie výkonu;
  • ďalšie atribúty súboru v mnohých odpovediach, aby ste sa vyhli ich opätovnému načítaniu;
  • operácia READDIRPLUS na získanie údajov a atribútov spolu s názvami súborov pri skenovaní adresára;
  • mnoho ďalších vylepšení.

Počas uvedenia verzie 3 sa podpora TCP ako protokolu transportnej vrstvy začala zvyšovať. Použitie TCP ako prostriedku na prenos údajov, vykonávané pomocou NFS cez WAN, začalo umožňovať prenos veľkých veľkostí súborov na prezeranie a zápis. Vďaka tomu boli vývojári schopní prekonať 8 KB limity, ktoré ukladá User Datagram Protocol (UDP).

Čo je NFS v4?

Verzia 4, ovplyvnená Endres File System (AFS) a Server Message Block (SMB, tiež nazývaná CIFS), zahŕňa vylepšenia výkonu, poskytuje lepšie zabezpečenie a zavádza protokol zhody.

Verzia 4 bola prvou distribúciou vyvinutou organizáciou Internet Engineering Task Force (IETF) po tom, čo Sun Microsystems outsourcoval vývoj protokolu.

NFS verzie 4.1 sa zameriava na poskytovanie podpory protokolov pre využitie klastrových serverových nasadení, vrátane schopnosti poskytovať škálovateľný paralelný prístup k súborom distribuovaným na viacerých serveroch (rozšírenie pNFS).

Najnovší protokol súborového systému, NFS 4.2 (RFC 7862), bol oficiálne vydaný v novembri 2016.

Ďalšie rozšírenia

S vývojom štandardu sa objavili zodpovedajúce nástroje na prácu s ním. Napríklad WebNFS, rozšírenie pre verzie 2 a 3, umožňuje protokolu Network File System Access Protocol ľahšiu integráciu do webových prehliadačov a umožňuje prácu cez brány firewall.

K NFS sa pridružili aj rôzne protokoly tretích strán. Najznámejšie z nich sú:

  • Network Lock Manager (NLM) s podporou bajtového protokolu (pridaný na podporu API na uzamknutie súborov UNIX System V);
  • Vzdialená kvóta (RQUOTAD), ktorá umožňuje používateľom NFS zobraziť kvóty úložiska na serveroch NFS;
  • NFS over RDMA je adaptáciou NFS, ktorá používa ako prenosové médium vzdialený priamy prístup do pamäte (RDMA);
  • NFS-Ganesha je NFS server, ktorý beží v užívateľskom priestore a podporuje CephFS FSAL (File System Abstraction Layer) pomocou libcephfs.

Platformy

Network File System sa často používa s operačnými systémami Unix (napríklad Solaris, AIX, HP-UX), MacOS od Apple a operačnými systémami podobnými Unixu (napríklad Linux a FreeBSD).

Je tiež dostupný pre platformy ako Acorn RISC OS, OpenVMS, MS-DOS, Microsoft Windows, Novell NetWare a IBM AS/400.

Alternatívne protokoly vzdialeného prístupu k súborom zahŕňajú Server Message Block (SMB, tiež nazývaný CIFS), Apple Transfer Protocol (AFP), NetWare Core Protocol (NCP) a OS/400 Server File System (QFileSvr.400).

Je to kvôli požiadavkám NFS, ktoré sú zamerané väčšinou na „shell“ podobné Unixu.

V systémoch so systémom Microsoft Windows sa však protokoly SMB a NetWare (NCP) používajú častejšie ako NFS. AFP je najbežnejší na platformách Apple Macintosh a QFileSvr.400 je najbežnejší na OS/400.

Typická implementácia

Za predpokladu typického scenára v štýle Unix, v ktorom jeden počítač (klient) potrebuje prístup k údajom uloženým na inom (server NFS):

  • Server implementuje procesy Network File System, ktoré štandardne bežia ako nfsd, aby boli jeho údaje verejne dostupné klientom. Administrátor servera určuje, ako exportovať názvy adresárov a nastavenia, zvyčajne pomocou konfiguračného súboru /etc/exports a príkazu exportfs.
  • Správa zabezpečenia servera zaisťuje, že dokáže rozpoznať a schváliť overeného klienta. Jeho sieťová konfigurácia zabezpečuje, že oprávnení klienti s ním môžu vyjednávať cez akýkoľvek firewallový systém.
  • Klientsky počítač požaduje prístup k exportovaným údajom, zvyčajne vydaním príkazu. Dotazuje sa na server (rpcbind), ktorý používa port NFS a následne sa k nemu pripojí.
  • Ak všetko prebehne bez chýb, používatelia na klientskom počítači budú môcť prezerať a pracovať s nainštalovanými súborovými systémami na serveri v rámci povolených parametrov.

Treba tiež poznamenať, že môže dôjsť aj k automatizácii procesu Network File System – možno pomocou etc/fstab a/alebo iných podobných nástrojov.

Doterajší vývoj

V 21. storočí nedosiahli konkurenčné protokoly DFS a AFS žiadny väčší komerčný úspech v porovnaní so sieťovým súborovým systémom. IBM, ktorá predtým získala všetky komerčné práva na vyššie uvedené technológie, darovala väčšinu zdrojového kódu AFS komunite slobodného softvéru v roku 2000. Projekt Open AFS existuje dodnes. Začiatkom roka 2005 IBM oznámila ukončenie predaja AFS a DFS.

V januári 2010 Panasas navrhol NFS v 4.1 založený na technológii, ktorá zlepšuje možnosti paralelného prístupu k dátam. Protokol Network File System v 4.1 definuje metódu na oddelenie metadát systému súborov od umiestnenia špecifických súborov. Takže to presahuje jednoduché oddelenie názvu/údajov.

Čo je NFS tejto verzie v praxi? Vyššie uvedená vlastnosť ho odlišuje od tradičného protokolu, ktorý obsahuje názvy súborov a ich dáta pod jedným pripojením k serveru. S Network File System v 4.1 môžu byť niektoré súbory zdieľané cez viacuzlové servery, ale zapojenie klienta do zdieľania metadát a údajov je obmedzené.

Pri implementácii štvrtej distribúcie protokolu je server NFS súborom serverových prostriedkov alebo komponentov; predpokladá sa, že sú riadené serverom metadát.

Klient stále kontaktuje jeden server metadát, aby mohol prejsť alebo interagovať s priestorom názvov. Pri presúvaní súborov na server a zo servera môže priamo interagovať so súborom údajov, ktoré vlastní skupina NFS.