Instalacija i konfiguracija NFS poslužitelja. Postavljanje NFS poslužitelja Uklanjanje NFS montiranja


Dobar dan, čitatelji i gosti. Bila je jako duga pauza između postova, ali opet sam u akciji). U današnjem članku ću pogledati Rad NFS protokola, i postavljanje NFS poslužitelja i NFS klijenta na Linuxu.

Uvod u NFS

NFS (Mrežni datotečni sustav - mrežni datotečni sustav) po mom mišljenju - idealno rješenje na lokalnoj mreži, gdje je potrebna brza (brža u usporedbi sa SAMBA-om i manje resursno intenzivna u usporedbi s udaljenim datotečnim sustavima s enkripcijom - sshfs, SFTP, itd...) razmjena podataka koja nije na prva sigurnost prenesenih informacija. NFS protokol dopušta montirati udaljene sustave datoteka preko mreže u stablo lokalnog imenika, kao da je datotečni sustav montiranog diska. To omogućuje lokalnim aplikacijama da rade s udaljenim datotečnim sustavom kao da su lokalni. Ali morate biti oprezni (!) s postavljanje NFS-a, jer je uz određenu konfiguraciju moguće zamrznuti operativni sustav klijenta čekajući beskrajne I/O. NFS protokol na temelju rada RPC protokol, što je još uvijek izvan mog razumijevanja)) pa će materijal u članku biti malo nejasan... Prije nego što možete koristiti NFS, bilo da se radi o poslužitelju ili klijentu, morate provjeriti ima li vaša jezgra podršku za NFS datoteku sustav. Možete provjeriti podržava li jezgra NFS datotečni sustav gledajući prisutnost odgovarajućih redaka u datoteci /proc/datotečni sustavi:

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

Ako navedeni redovi u datoteci /proc/datotečni sustavi ne pojavljuje, tada trebate instalirati pakete opisane u nastavku. To će vam najvjerojatnije omogućiti da instalirate ovisne module jezgre za podršku potrebnim datotečnim sustavima. Ako nakon instaliranja paketa NFS podrška nije prikazana u navedenoj datoteci, morat ćete omogućiti ovu funkciju.

Priča Mrežni datotečni sustav

NFS protokol razvio Sun Microsystems i ima 4 verzije u svojoj povijesti. NFSv1 razvijen je 1989. i bio je eksperimentalni, radio je na UDP protokolu. Verzija 1 je opisana u . NFSv2 objavljen je iste 1989., opisan istim RFC1094 i također temeljen na UDP protokolu, dok nije dopuštao čitanje više od 2 GB iz datoteke. NFSv3 finaliziran 1995. i opisan u . Glavne inovacije treće verzije bile su podrška za velike datoteke, dodana podrška za TCP protokol i veliki TCP paketi, što je značajno ubrzalo performanse tehnologije. NFSv4 finaliziran 2000. i opisan u RFC 3010, revidiran 2003. i opisan u . Četvrta verzija uključivala je poboljšanja performansi, podršku za različita sredstva provjere autentičnosti (osobito, Kerberos i LIPKEY koristeći RPCSEC GSS protokol) i popise kontrole pristupa (i POSIX i Windows vrste). NFS verzija v4.1 odobren od strane IESG 2010. godine i dobio je broj . Važna novost u verziji 4.1 je specifikacija pNFS - Parallel NFS, mehanizma za paralelni pristup NFS klijenta podacima s više distribuiranih NFS poslužitelja. Prisutnost takvog mehanizma u standardu mrežnog datotečnog sustava pomoći će u izgradnji distribuiranih sustava za pohranu podataka i informacija u "oblaku".

NFS poslužitelj

Budući da imamo NFS- Ovo mreža datotečni sustav, tada je potrebno. (Također možete pročitati članak). Sljedeće je potrebno. Na Debianu ovo je paket nfs-kernel-poslužitelj I nfs-zajednički, u RedHatu ovo je paket nfs-utils. Također, morate dopustiti demonu da radi na potrebnim razinama izvršavanja OS-a (naredba u RedHatu - /sbin/chkconfig nfs uključen, u Debianu - /usr/sbin/update-rc.d nfs-kernel-server zadane postavke).

Instalirani paketi u Debianu pokreću se sljedećim redoslijedom:

ARHIVA ~ # ls -la /etc/rc2.d/ | grep nfs lrwxrwxrwx 1 root root 20. listopad 18 15:02 S15nfs-common -> ../init.d/nfs-common lrwxrwxrwx 1 root root 27. listopad 22 01:23 S16nfs-kernel-server -> ../init.d /nfs-kernel-server

Odnosno, prvo počinje nfs-zajednički, zatim sam poslužitelj nfs-kernel-poslužitelj. U RedHatu je situacija slična, s jedinom iznimkom što se poziva prva skripta nfslock, a poslužitelj se zove jednostavno nfs. Oko nfs-zajednički Debianova web stranica govori nam ovo doslovno: zajedničkih datoteka za NFS klijent i poslužitelj, ovaj paket mora biti instaliran na stroju koji će raditi kao NFS klijent ili poslužitelj. Paket uključuje programe: lockd, statd, showmount, nfsstat, gssd i idmapd. Pregled sadržaja skripte za pokretanje /etc/init.d/nfs-common možete pratiti sljedeći redoslijed rada: skripta provjerava prisutnost izvršne binarne datoteke /sbin/rpc.statd, provjerava prisutnost u datotekama /etc/default/nfs-common, /etc/fstab I /etc/exports parametri koji zahtijevaju pokretanje demona idmapd I gssd , pokreće demon /sbin/rpc.statd , zatim prije lansiranja /usr/sbin/rpc.idmapd I /usr/sbin/rpc.gssd provjerava prisutnost ovih izvršnih binarnih datoteka, zatim za demon /usr/sbin/rpc.idmapd provjerava dostupnost sunrpc,nfs I nfsd, kao i podršku za datotečni sustav rpc_pipefs u kernelu (to jest, imajući ga u datoteci /proc/datotečni sustavi), ako je sve uspješno, počinje /usr/sbin/rpc.idmapd . Dodatno, za demona /usr/sbin/rpc.gssd provjere kernel modul rpcsec_gss_krb5 i pokreće demona.

Ako pogledate sadržaj Skripta za pokretanje NFS poslužitelja na Debianu ( /etc/init.d/nfs-kernel-server), tada možete slijediti sljedeći redoslijed: pri pokretanju, skripta provjerava postojanje datoteke /etc/exports, Dostupnost nfsd, dostupnost podrške NFS datotečni sustav u (odnosno u datoteci /proc/datotečni sustavi), ako je sve na mjestu, tada se demon pokreće /usr/sbin/rpc.nfsd , zatim provjerava je li parametar naveden POTREBNO_SVCGSD(postavite u datoteci postavki poslužitelja /etc/default/nfs-kernel-server) i, ako je dano, pokreće demon /usr/sbin/rpc.svcgssd , posljednji pokreće demona /usr/sbin/rpc.mountd . Iz ovog scenarija je jasno da Rad NFS poslužitelja sastoji se od demoni rpc.nfsd, rpc.mountd i ako se koristi Kerberos autentifikacija, onda demon rcp.svcgssd. U crvenom šeširu, demoni rpc.rquotad i nfslogd još uvijek rade (Iz nekog razloga u Debianu nisam našao informacije o ovom demonu i razlozima njegovog izostanka, očito je izbrisan...).

Iz ovoga postaje jasno da Poslužitelj mrežnog datotečnog sustava sastoji se od sljedećih procesa (čitaj: demona), koji se nalazi u direktorijima /sbin i /usr/sbin:

U NFSv4, kada se koristi Kerberos, pokreću se dodatni demoni:

  • rpc.gssd- NFSv4 demon pruža metode provjere autentičnosti putem GSS-API-ja (Kerberos autentifikacija). Radi na klijentu i serveru.
  • rpc.svcgssd- NFSv4 poslužiteljski demon koji pruža autentifikaciju klijenta na strani poslužitelja.

portmap i RPC protokol (Sun RPC)

Uz gore navedene pakete, potreban je dodatni paket za ispravan rad NFSv2 i v3 portmap(zamijenjeno u novijim distribucijama s preimenovano u rpcbind). Ovaj paket se obično instalira automatski s NFS-om kao ovisnim paketom i implementira rad RPC poslužitelja, odnosno odgovoran je za dinamičku dodjelu portova za neke usluge registrirane na RPC poslužitelju. Doslovno, prema dokumentaciji, radi se o poslužitelju koji pretvara brojeve programa RPC (Remote Procedure Call) u brojeve TCP/UDP portova. portmap radi na nekoliko entiteta: RPC pozivi ili zahtjevi, TCP/UDP portovi,verzija protokola(tcp ili udp), brojevi programa I verzije softvera. Portmap demon se pokreće /etc/init.d/portmap skriptom prije pokretanja NFS servisa.

Ukratko, posao RPC (Remote Procedure Call) poslužitelja je obrada RPC poziva (tzv. RPC procedura) od lokalnih i udaljenih procesa. Korištenjem RPC poziva, servisi se registriraju ili uklanjaju na/iz port mappera (aka port mapper, aka portmap, aka portmapper, aka, u novim verzijama, rpcbind), a klijenti koriste RPC pozive za slanje zahtjeva portmapperu za primanje potrebnih informacija . U datoteci /etc/rpc definirani su korisni nazivi programskih usluga i njihovi odgovarajući brojevi. Čim bilo koja usluga pošalje odgovarajući zahtjev i registrira se na RPC poslužitelju u port mapperu, RPC poslužitelj dodjeljuje, mapira usluzi TCP i UDP priključke na kojima je usluga pokrenuta i pohranjuje u kernelu odgovarajuće informacije o pokrenutu uslugu (naziv), jedinstveni broj usluge (u skladu s /etc/rpc), o protokolu i portu na kojem se usluga izvodi i o verziji usluge te pruža navedene informacije klijentima na zahtjev. Sam pretvarač portova ima broj programa (100000), broj verzije - 2, TCP port 111 i UDP port 111. Gore, prilikom određivanja sastava demona NFS poslužitelja, naveo sam glavne brojeve RPC programa. Vjerojatno sam vas malo zbunio ovim odlomkom, pa ću reći osnovnu frazu koja bi trebala razjasniti stvari: glavna funkcija port mappera je vraćanje, na zahtjev klijenta koji je dao broj RPC programa ( ili RPC broj programa) i verzija njemu (klijentu) port na kojem se izvodi traženi program. U skladu s tim, ako klijent treba pristupiti RPC-u s određenim programskim brojem, prvo mora kontaktirati proces mapiranja portova na stroju poslužitelja i odrediti broj komunikacijskog porta s RPC uslugom koja mu je potrebna.

Rad RPC poslužitelja može se predstaviti sljedećim koracima:

  1. Pretvarač portova trebao bi se prvi pokrenuti, obično kada se sustav podigne. Ovo stvara TCP krajnju točku i otvara TCP port 111. Također stvara UDP krajnju točku koja čeka da UDP datagram stigne na UDP port 111.
  2. Prilikom pokretanja, program koji radi preko RPC poslužitelja stvara TCP krajnju točku i UDP krajnju točku za svaku podržanu verziju programa. (RPC poslužitelj može podržavati više verzija. Klijent specificira potrebnu verziju kada upućuje RPC poziv.) Dinamički dodijeljeni broj porta dodjeljuje se svakoj verziji usluge. Poslužitelj bilježi svaki program, verziju, protokol i broj porta upućivanjem odgovarajućeg RPC poziva.
  3. Kada RPC klijentski program treba pribaviti potrebne informacije, on poziva rutinu razrješavača porta da dobije dinamički dodijeljeni broj porta za navedeni program, verziju i protokol.
  4. Kao odgovor na ovaj zahtjev, sjever vraća broj porta.
  5. Klijent šalje poruku RPC zahtjeva na broj porta dobiven u koraku 4. Ako se koristi UDP, klijent jednostavno šalje UDP datagram koji sadrži poruku RPC izazova na broj UDP porta na kojem se izvodi tražena usluga. Kao odgovor, usluga šalje UDP datagram koji sadrži RPC odgovor. Ako se koristi TCP, klijent aktivno otvara broj TCP porta željene usluge i zatim šalje RPC poruku izazova preko uspostavljene veze. Poslužitelj odgovara porukom RPC odgovora na vezi.

Za dobivanje informacija s RPC poslužitelja koristite uslužni program rpcinfo. Prilikom zadavanja parametara -p domaćin program prikazuje popis svih registriranih RPC programa na glavnom računalu. Bez navođenja hosta, program će prikazati usluge na lokalnom hostu. Primjer:

ARCHIV ~ # rpcinfo -p prog-ma vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 59451 status 100024 1 tcp 60872 status 100021 1 udp 44310 nlockmgr 10 0 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 tcp 2049 nfs 100003 4 tcp 2049 nf s 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100005 1 udp 51306 mountd 100005 1 tcp 41405 mountd 100005 2 udp 51306 mountd 100005 2 tcp 41405 mountd 100005 3 udp 51306 mountd 100005 3 tcp 41405 mountd

Kao što vidite, rpcinfo prikazuje (u stupcima s lijeva na desno) registrirani broj programa, verziju, protokol, port i naziv. Pomoću rpcinfo možete ukloniti registraciju programa ili dobiti informacije o određenoj RPC usluzi (više opcija u man rpcinfo). Kao što možete vidjeti, portmapper demoni verzije 2 registrirani su na udp i tcp portovima, rpc.statd verzija 1 na udp i tcp portovima, NFS upravitelj zaključavanja verzija 1,3,4, nfs poslužitelj demon verzija 2,3,4, također kao mount daemon verzije 1,2,3.

NFS poslužitelj (točnije, rpc.nfsd daemon) prima zahtjeve od klijenta u obliku UDP datagrama na portu 2049. Iako NFS radi s port resolverom, koji poslužitelju omogućuje korištenje dinamički dodijeljenih portova, UDP port 2049 je tvrdo kodiran na NFS u većini implementacija.

Rad protokola mrežnog datotečnog sustava

Montiranje udaljenog NFS-a

Proces montiranja udaljenog NFS datotečnog sustava može se prikazati sljedećim dijagramom:

Opis NFS protokola pri montiranju udaljenog direktorija:

  1. RPC poslužitelj se pokreće na poslužitelju i klijentu (obično pri dizanju), servisira portmapper proces i registrira na tcp/111 i udp/111 portu.
  2. Pokreću se servisi (rpc.nfsd, rpc.statd itd.) koji se registriraju na RPC poslužitelju i registriraju na proizvoljnim mrežnim portovima (ako u postavkama servisa nije naveden statički port).
  3. naredba montiranja na klijentskom računalu šalje zahtjev kernelu za montiranje mrežnog direktorija, naznačujući vrstu datotečnog sustava, hosta i samog direktorija; kernel šalje i oblikuje RPC zahtjev procesu portmap na NFS poslužitelju na portu udp /111 (ako na klijentu nije postavljena opcija rada preko tcp-a)
  4. Kernel NFS poslužitelja postavlja upit RPC-u za prisutnost demona rpc.mountd i vraća jezgri klijenta mrežni port na kojem demon radi.
  5. mount šalje RPC zahtjev na port na kojem se izvodi rpc.mountd. NFS poslužitelj sada može potvrditi valjanost klijenta na temelju njegove IP adrese i broja porta kako bi vidio može li klijent montirati navedeni sustav datoteka.
  6. Demon montiranja vraća opis traženog datotečnog sustava.
  7. Klijentova naredba za montiranje izdaje sistemski poziv za montiranje kako bi povezala oznaku datoteke dobivenu u koraku 5 s lokalnom točkom montiranja na klijentovom glavnom računalu. Oznaka datoteke pohranjena je u NFS kodu klijenta i od sada svaki pristup korisničkih procesa datotekama na datotečnom sustavu poslužitelja koristit će opredjeljak datoteke kao početnu točku.

Komunikacija između klijenta i NFS poslužitelja

Tipičan pristup udaljenom datotečnom sustavu može se opisati na sljedeći način:

Opis procesa pristupa datoteci koja se nalazi na NFS poslužitelju:

  1. Klijent (korisnički proces) ne mari pristupa li lokalnoj datoteci ili NFS datoteci. Kernel komunicira s hardverom putem kernel modula ili ugrađenih sistemskih poziva.
  2. Kernel modul kernel/fs/nfs/nfs.ko, koji obavlja funkcije NFS klijenta, šalje RPC zahtjeve NFS poslužitelju preko TCP/IP modula. NFS obično koristi UDP, no novije implementacije mogu koristiti TCP.
  3. NFS poslužitelj prima zahtjeve od klijenta kao UDP datagrame na portu 2049. Iako NFS može raditi s razrješavačem portova, koji poslužitelju omogućuje korištenje dinamički dodijeljenih portova, UDP port 2049 je tvrdo kodiran za NFS u većini implementacija.
  4. Kada NFS poslužitelj primi zahtjev od klijenta, prosljeđuje se lokalnoj rutini pristupa datoteci, koja omogućuje pristup lokalnom disku na poslužitelju.
  5. Rezultat pristupa disku vraća se klijentu.

Postavljanje NFS poslužitelja

Podešavanje poslužitelja općenito se sastoji od specificiranja lokalnih direktorija koje je dopušteno montirati udaljenim sustavima u datoteku /etc/exports. Ova radnja se zove izvozna hijerarhija imenika. Glavni izvori informacija o izvezenim katalozima su sljedeće datoteke:

  • /etc/exports- glavna konfiguracijska datoteka koja pohranjuje konfiguraciju izvezenih direktorija. Koristi se prilikom pokretanja NFS-a i pomoćnog programa exportfs.
  • /var/lib/nfs/xtab- sadrži popis direktorija montiranih od strane udaljenih klijenata. Koristi ga demon rpc.mountd kada klijent pokuša montirati hijerarhiju (stvara se unos za montiranje).
  • /var/lib/nfs/etab- popis direktorija koje mogu montirati udaljeni sustavi, navodeći sve parametre izvezenih direktorija.
  • /var/lib/nfs/rmtab- popis imenika koji trenutno nisu neizvezeni.
  • /proc/fs/nfsd- poseban datotečni sustav (kernel 2.6) za upravljanje NFS poslužiteljem.
    • izvozi- popis aktivnih izvezenih hijerarhija i klijenata kojima su izvezene te parametara. Kernel dobiva ove informacije iz /var/lib/nfs/xtab.
    • niti- sadrži broj niti (također se može promijeniti)
    • koristeći filehandle možete dobiti pokazivač na datoteku
    • i tako dalje...
  • /proc/net/rpc- sadrži “sirovu” statistiku, koja se može dobiti pomoću nfsstata, kao i razne predmemorije.
  • /var/run/portmap_mapping- informacije o uslugama registriranim u RPC

Bilješka: Općenito, na internetu ima puno tumačenja i formulacija namjene datoteka xtab, etab, rmtab, ne znam kome vjerovati. Čak i na http://nfs.sourceforge.net/ tumačenje je nije jasno.

Postavljanje datoteke /etc/exports

U najjednostavnijem slučaju, /etc/exports datoteka je jedina datoteka koja zahtijeva uređivanje za konfiguraciju NFS poslužitelja. Ova datoteka kontrolira sljedeće aspekte:

  • Kakve mušterije može pristupiti datotekama na poslužitelju
  • Koje hijerarhije? imenicima na poslužitelju može pristupiti svaki klijent
  • Kako će biti prilagođena imena kupaca biti prikazan na lokalna korisnička imena

Svaki red datoteke za izvoz ima sljedeći format:

točka izvoza klijent1 (opcije) [klijent2(opcije) ...]

Gdje točka_izvoza apsolutna staza izvezene hijerarhije imenika, klijent1 - n ime jednog ili više klijenata ili IP adresa, odvojenih razmacima, kojima je dopušteno montiranje točka_izvoza . Mogućnosti opišite pravila montaže za klijent, navedeno prije opcije .

Evo jednog tipičnog primjer konfiguracije izvozne datoteke:

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

U ovom primjeru datotekama računala i 10.0.0.1 dopušten je pristup točki izvoza /archiv1, dok datoteke glavnog računala imaju pristup za čitanje/pisanje, a host 10.0.0.1 i podmreža 10.0.230.1/24 imaju pristup samo za čitanje.

Opisi glavnog računala u /etc/exports dopušteni su u sljedećem formatu:

  • Imena pojedinačnih čvorova opisuju se kao datoteke ili datoteke.DOMAIN.local.
  • Maska domene je opisana u sljedećem formatu: *DOMAIN.local uključuje sve čvorove domene DOMAIN.local.
  • Podmreže su navedene kao parovi IP adresa/maska. Na primjer: 10.0.0.0/255.255.255.0 uključuje sve čvorove čije adrese počinju s 10.0.0.
  • Određivanje naziva @myclients mrežne grupe koja ima pristup resursu (kada se koristi NIS poslužitelj)

Opće opcije za izvoz hijerarhija imenika

Datoteka za izvoz koristi sljedeće opće opcije(opcije koje se koriste prema zadanim postavkama u većini sustava navedene su prve, one koje nisu zadane u zagradama):

  • auth_nlm (nema_auth_nlm) ili sigurne_brave (nesigurne_brave)- navodi da poslužitelj treba zahtijevati provjeru autentičnosti zahtjeva za zaključavanje (koristeći NFS Lock Manager protokol).
  • nohide (sakrij)- ako poslužitelj izvozi dvije hijerarhije direktorija, s jednom ugniježđenom (montiranom) unutar druge. Klijent treba eksplicitno montirati drugu (podređenu) hijerarhiju, inače će se točka montiranja podređene hijerarhije pojaviti kao prazan direktorij. Opcija nohide rezultira drugom hijerarhijom direktorija bez eksplicitnog montiranja. ( Bilješka: Nisam mogao pokrenuti ovu opciju...)
  • ro(rw)- Omogućuje samo zahtjeve za čitanje (pisanje). (U konačnici, je li moguće čitati/pisati ili ne određuje se na temelju prava datotečnog sustava, a poslužitelj nije u stanju razlikovati zahtjev za čitanje datoteke od zahtjeva za izvršenje, pa dopušta čitanje ako je korisnik pročitao ili izvršiti prava.)
  • siguran (nesiguran)- zahtijeva da NFS zahtjevi dolaze sa sigurnih portova (< 1024), чтобы программа без прав root не могла монтировать иерархию каталогов.
  • provjera_podstabla (nema provjere_podstabla)- Ako se izvozi poddirektorij datotečnog sustava, ali ne cijeli datotečni sustav, poslužitelj provjerava nalazi li se tražena datoteka u izvezenom poddirektoriju. Onemogućivanje provjere smanjuje sigurnost, ali povećava brzinu prijenosa podataka.
  • sinkronizacija (asinkronizacija)- specificira da poslužitelj treba odgovoriti na zahtjeve samo nakon što su promjene napravljene tim zahtjevima zapisane na disk. Opcija async govori poslužitelju da ne čeka da se informacije zapišu na disk, što poboljšava performanse, ali smanjuje pouzdanost jer U slučaju prekida veze ili kvara opreme, podaci se mogu izgubiti.
  • wkašnjenje (bez_wkašnjenja)- nalaže poslužitelju da odgodi izvršavanje zahtjeva za pisanje ako je sljedeći zahtjev za pisanje na čekanju, pisanje podataka u većim blokovima. Ovo poboljšava performanse prilikom slanja velikih redova naredbi za pisanje. no_wdelay navodi da se ne odgađa izvršenje naredbe pisanja, što može biti korisno ako poslužitelj primi veliki broj nepovezanih naredbi.

Izvoz simboličkih veza i datoteka uređaja. Prilikom izvoza hijerarhije direktorija koja sadrži simboličke veze, objekt veze mora biti dostupan klijentskom (udaljenom) sustavu, odnosno jedno od sljedećih pravila mora biti istinito:

Datoteka uređaja pripada sučelju. Kada izvozite datoteku uređaja, izvozi se ovo sučelje. Ako sustav klijenta nema uređaj iste vrste, izvezeni uređaj neće raditi. Na klijentskom sustavu, kada montirate NFS objekte, možete koristiti opciju nodev tako da se datoteke uređaja u montiranim direktorijima ne koriste.

Zadane opcije mogu se razlikovati od sustava do sustava i mogu se pronaći u /var/lib/nfs/etab. Nakon opisa izvezenog direktorija u /etc/exports i ponovnog pokretanja NFS poslužitelja, sve opcije koje nedostaju (čitaj: zadane opcije) odrazit će se u datoteci /var/lib/nfs/etab.

Opcije prikaza (podudaranja) ID-a korisnika

Za bolje razumijevanje sljedećeg, savjetovao bih vam da pročitate članak. Svaki korisnik Linuxa ima svoj UID i glavni GID, koji su opisani u datotekama /etc/passwd I /etc/group. NFS poslužitelj pretpostavlja da je operativni sustav udaljenog glavnog računala autentificirao korisnike i dodijelio im ispravan UID i GID. Izvoz datoteka daje korisnicima klijentskog sustava isti pristup tim datotekama kao da su prijavljeni izravno na poslužitelj. Sukladno tome, kada NFS klijent pošalje zahtjev poslužitelju, poslužitelj koristi UID i GID za identifikaciju korisnika na lokalnom sustavu, što može dovesti do nekih problema:

  • korisnik možda nema iste identifikatore na oba sustava i stoga može pristupiti datotekama drugog korisnika.
  • jer Ako je ID korijenskog korisnika uvijek 0, tada se ovaj korisnik preslikava na lokalnog korisnika ovisno o navedenim opcijama.

Sljedeće opcije postavljaju pravila za prikaz udaljenih korisnika u lokalnim:

  • root_squash (bez_root_squash)- Uz navedenu opciju korijen_tikve, zahtjevi root korisnika preslikavaju se na anonimni uid/gid ili na korisnika navedenog u parametru anonuid/anongid.
  • no_all_squash (all_squash)- Ne mijenja UID/GID korisnika koji se povezuje. Opcija sve_squash postavlja prikaz SVIH korisnika (ne samo roota) kao anonimne ili navedene u parametru anonuid/anongid.
  • anonuid= UID I anongid= GID - Eksplicitno postavlja UID/GID za anonimnog korisnika.
  • map_static= /etc/file_maps_users - Određuje datoteku u kojoj možete postaviti mapiranje udaljenog UID/GID-a u lokalni UID/GID.

Primjer korištenja datoteke mapiranja korisnika:

ARCHIV ~ # cat /etc/file_maps_users # Mapiranje korisnika # daljinski lokalni komentar uid 0-50 1002 # mapiranje korisnika s udaljenim UID-om 0-50 na lokalni UID 1002 gid 0-50 1002 # mapiranje korisnika s/span udaljenim GID-om 0-50 na lokalni GID 1002

Upravljanje NFS poslužiteljem

NFS poslužiteljem se upravlja pomoću sljedećih pomoćnih programa:

  • nfsstat
  • showmsecure (nesigurno) montiranje

nfsstat: NFS i RPC statistika

Pomoćni program nfsstat omogućuje pregled statistike RPC i NFS poslužitelja. Opcije naredbe mogu se pronaći u man nfsstat.

showmount: Prikaz informacija o statusu NFS-a

showmount pomoćni program postavlja upit demonu rpc.mountd na udaljenom hostu o montiranim sustavima datoteka. Prema zadanim postavkama vraća se sortirani popis klijenata. Tipke:

  • --svi- prikazuje se popis klijenata i točaka montiranja koji pokazuju gdje je klijent montirao direktorij. Ova informacija možda nije pouzdana.
  • --imenici- prikazuje se popis točaka montiranja
  • -- izvozi- prikazuje se popis izvezenih datotečnih sustava sa stajališta nfsd-a

Kada pokrenete showmount bez argumenata, informacije o sustavima kojima je dopušteno montiranje bit će ispisane na konzoli lokalni katalozima. Na primjer, host ARCHIV daje nam popis izvezenih direktorija s IP adresama hostova kojima je dopušteno montirati navedene direktorije:

DATOTEKE ~ # showmount --exports archive Popis za izvoz za arhivu: /archiv-big 10.0.0.2 /archiv-small 10.0.0.2

Ako u argumentu navedete naziv hosta/IP, prikazat će se informacije o ovom hostu:

ARCHIV ~ # showmount datoteke clnt_create: RPC: Program nije registriran # ova poruka nam govori da NFSd demon ne radi na hostu FILES

exportfs: upravljanje izvezenim imenicima

Ova naredba poslužuje izvezene direktorije navedene u datoteci /etc/exports, točnije bi bilo napisati da ne služi, već se sinkronizira s datotekom /var/lib/nfs/xtab i uklanja nepostojeće iz xtab. exportfs se izvršava kada se nfsd demon pokrene s -r argumentom. Uslužni program exportfs u načinu rada jezgre 2.6 komunicira s demonom rpc.mountd putem datoteka u direktoriju /var/lib/nfs/ i ne komunicira izravno s jezgrom. Bez parametara, prikazuje popis trenutno izvezenih datotečnih sustava.

exportfs parametri:

  • [klijent: ime-direktorija] - dodajte ili uklonite navedeni sustav datoteka za navedenog klijenta)
  • -v - prikazati više informacija
  • -r - ponovno eksportiraj sve direktorije (sinkroniziraj /etc/exports i /var/lib/nfs/xtab)
  • -u - ukloniti s popisa izvezenih
  • -a - dodati ili ukloniti sve datotečne sustave
  • -o - opcije odvojene zarezima (slično opcijama koje se koriste u /etc/exports; tj. možete promijeniti opcije već montiranih datotečnih sustava)
  • -i - ne koristi /etc/exports prilikom dodavanja, samo trenutne opcije naredbenog retka
  • -f - poništi popis izvezenih sustava u kernelu 2.6;

NFS klijent

Prije pristupa datoteci na udaljenom datotečnom sustavu, klijent (OS klijenta) mora montirati ga i primati od poslužitelja pokazivač na to. NFS montiranje može se izvršiti s ili korištenjem jednog od rasprostranjenih automatskih montera (amd, autofs, automount, supermount, superpupermount). Postupak instalacije dobro je prikazan na gornjoj slici.

Na NFS klijenti nema potrebe za pokretanjem demona, klijentske funkcije izvršava kernel modul kernel/fs/nfs/nfs.ko, koji se koristi prilikom montiranja udaljenog datotečnog sustava. Izvezeni direktoriji s poslužitelja mogu se montirati na klijentu na sljedeće načine:

  • ručno pomoću naredbe mount
  • automatski pri dizanju, prilikom montiranja datotečnih sustava opisanih u /etc/fstab
  • automatski pomoću autofs demona

Neću razmatrati treću metodu s autofs u ovom članku, zbog opsežne informacije. Možda će u budućim člancima biti poseban opis.

Montiranje sustava mrežnih datoteka pomoću naredbe mount

Primjer korištenja naredbe mount predstavljen je u postu. Ovdje ću pogledati primjer naredbe montiranja za montiranje NFS datotečnog sustava:

DATOTEKE ~ # mount -t nfs arhiva:/archiv-small /archivs/archiv-small DATOTEKE ~ # mount -t nfs -o ro arhiva:/archiv-big /archivs/archiv-big DATOTEKE ~ # montiranje ..... .. archiv:/archiv-small na /archivs/archiv-small type nfs (rw,addr=10.0.0.6) archiv:/archiv-big na /archivs/archiv-big type nfs (ro,addr=10.0.0.6)

Prva naredba montira izvezeni direktorij /arhiva-mala na poslužitelju arhiva na lokalnu točku montiranja /arhiv/arhiv-mali sa zadanim opcijama (tj. čitanje i pisanje). Iako naredba montiranja u najnovijim distribucijama može razumjeti koja se vrsta datotečnog sustava koristi čak i bez navođenja vrste, ali i dalje ukazuje na parametar -t nfs poželjan. Druga naredba montira izvezeni direktorij /arhiva-velika na poslužitelju arhiva u lokalni imenik /archivs/archiv-big s opcijom samo za čitanje ( ro). naredba montiranja bez parametara, jasno nam pokazuje rezultat montaže. Osim opcije samo za čitanje (ro), moguće je odrediti i drugu Osnovne opcije pri montiranju NFS-a:

  • nosuid- Ova opcija zabranjuje izvršavanje programa iz montiranog direktorija.
  • čvor dev(nema uređaja - nije uređaj) - Ova opcija zabranjuje korištenje znakova i blokira posebne datoteke kao uređaje.
  • zaključati (nolock)- Omogućuje NFS zaključavanje (zadano). nolock onemogućuje NFS zaključavanje (ne pokreće lockd daemon) i koristan je pri radu sa starijim poslužiteljima koji ne podržavaju NFS zaključavanje.
  • mounthost=ime- Ime glavnog računala na kojem je pokrenut demon NFS montiranja - mountd.
  • mountport=n - Port koji koristi demon mountd.
  • port=n- port koji se koristi za povezivanje s NFS poslužiteljem (zadano je 2049 ako demon rpc.nfsd nije registriran na RPC poslužitelju). Ako je n=0 (zadano), tada NFS postavlja upit portmapu na poslužitelju kako bi odredio port.
  • rsveličina=n(veličina bloka za čitanje - veličina bloka za čitanje) - Broj bajtova koji se istovremeno čitaju s NFS poslužitelja. Standard - 4096.
  • wsize=n(veličina bloka pisanja - veličina bloka pisanja) - Broj bajtova koji su istovremeno upisani na NFS poslužitelj. Standard - 4096.
  • tcp ili udp- Za montiranje NFS-a koristite TCP odnosno UDP protokol.
  • bg- Ako izgubite pristup poslužitelju, pokušajte ponovo u pozadini kako ne biste blokirali proces pokretanja sustava.
  • fg- Ako izgubite pristup poslužitelju, pokušajte ponovno u prioritetnom načinu rada. Ova opcija može blokirati proces pokretanja sustava ponavljanjem pokušaja montiranja. Iz tog razloga, fg parametar se prvenstveno koristi za otklanjanje pogrešaka.

Opcije koje utječu na predmemoriju atributa na NFS montiranjima

Atributi datoteke, pohranjeni u (inode), kao što su vrijeme izmjene, veličina, tvrde veze, vlasnik, obično se rijetko mijenjaju za obične datoteke, a još rjeđe za direktorije. Mnogi programi, kao što je ls, pristupaju datotekama samo za čitanje i ne mijenjaju atribute datoteke ili sadržaj, već troše resurse sustava na skupe mrežne operacije. Da biste izbjegli rasipanje resursa, možete predmemorirati ove atribute. Kernel koristi vrijeme izmjene datoteke kako bi utvrdio je li predmemorija zastarjela uspoređujući vrijeme izmjene u predmemorij i vrijeme izmjene same datoteke. Predmemorija atributa povremeno se ažurira u skladu s navedenim parametrima:

  • ac (noac) (predmemorija atributa- predmemoriranje atributa) - Omogućuje predmemoriranje atributa (zadano). Iako opcija noac usporava poslužitelj, izbjegava zastarjelost atributa kada više klijenata aktivno upisuje informacije u zajedničku hijerarhiju.
  • acdirmax=n (atribut predmemorija datoteka imenika maksimum- maksimalno predmemoriranje atributa za datoteku direktorija) - Maksimalni broj sekundi koje NFS čeka prije ažuriranja atributa direktorija (zadano 60 sekundi)
  • acdirmin=n (atribut cache datoteka imenika minimum- minimalno predmemoriranje atributa za datoteku direktorija) - Minimalni broj sekundi koje NFS čeka prije ažuriranja atributa direktorija (zadano 30 sekundi)
  • acregmax=n (atribut cache regularna datoteka maksimum- maksimum predmemoriranja atributa za običnu datoteku) - Maksimalan broj sekundi koje NFS čeka prije ažuriranja atributa regularne datoteke (zadano 60 sek.)
  • acregmin=n (atribut predmemorija regular file minimum- minimalno predmemoriranje atributa za običnu datoteku) - Minimalni broj sekundi koje NFS čeka prije ažuriranja atributa regularne datoteke (zadano 3 sekunde)
  • actimeo=n (istek predmemorije atributa- vremensko ograničenje predmemoriranja atributa) - Zamjenjuje vrijednosti za sve gore navedene opcije. Ako actimeo nije naveden, gornje vrijednosti preuzimaju zadane vrijednosti.

NFS opcije rukovanja pogreškama

Sljedeće opcije kontroliraju što NFS radi kada nema odgovora s poslužitelja ili kada se pojave I/O pogreške:

  • fg(bg) (prvi plan- prvi plan, pozadina- pozadina) - Pokušava montirati neuspjeli NFS u prednjem planu/pozadini.
  • tvrdo (meko)- prikazuje poruku "server not responding" (poslužitelj ne odgovara) na konzoli kada je dosegnuto vremensko ograničenje i nastavlja s pokušajima montiranja. Uz danu opciju mekan- tijekom vremenskog ograničenja obavještava program koji je pozvao operaciju o I/O pogrešci. (preporuča se ne koristiti soft opciju)
  • nointr (unutar) (nema prekida- ne prekidaj) - Ne dopušta signalima da prekinu operacije datoteka u tvrdo postavljenoj hijerarhiji direktorija kada se dostigne veliko vremensko ograničenje. intr- omogućuje prekid.
  • retrans=n (vrijednost retransmisije- vrijednost ponovnog prijenosa) - Nakon n malih vremenskih ograničenja, NFS generira veliko vremensko ograničenje (zadano 3). Veliko vremensko ograničenje zaustavlja operacije ili ispisuje poruku "poslužitelj ne odgovara" na konzoli, ovisno o tome je li navedena hard/soft opcija.
  • ponovi=n (vrijednost ponovnog pokušaja- vrijednost ponovnog pokušaja) - Broj minuta tijekom kojih će NFS servis ponavljati operacije montiranja prije nego odustane (zadano 10000).
  • timeo=n (vrijednost isteka vremena- vrijednost isteka) - Broj desetinki sekunde koje NFS usluga čeka prije ponovnog slanja u slučaju RPC-a ili malog vremenskog ograničenja (zadano 7). Ova se vrijednost povećava sa svakim vremenskim ograničenjem do maksimalno 60 sekundi ili dok ne nastupi veliko vremensko ograničenje. Ako je mreža zauzeta, poslužitelj je spor ili zahtjev prolazi kroz više usmjerivača ili pristupnika, povećanje ove vrijednosti može poboljšati performanse.

Automatsko montiranje NFS-a pri dizanju (opis datotečnih sustava u /etc/fstab)

Možete odabrati optimalno vrijeme za određenu vrijednost poslanog paketa (vrijednosti rsize/wsize) pomoću naredbe ping:

DATOTEKE ~ # ping -s 32768 arhiva PING arhiva.DOMAIN.local (10.0.0.6) 32768(32796) bajtova podataka. 32776 bajtova iz archiv.domain.local (10.0.0.6): icmp_req=1 ttl=64 vrijeme=0,931 ms 32776 bajtova iz archiv.domain.local (10.0.0.6): icmp_req=2 ttl=64 vrijeme=0,958 ms 32776 bajtova iz archiv.domain.local (10.0.0.6): icmp_req=3 ttl=64 time=1.03 ms 32776 bajtova iz archiv.domain.local (10.0.0.6): icmp_req=4 ttl=64 time=1.00 ms 32776 bajtova iz arhive .domain.local (10.0.0.6): icmp_req=5 ttl=64 time=1.08 ms ^C --- archive.DOMAIN.local ping statistika --- 5 paketa poslano, 5 primljeno, 0% gubitka paketa, vrijeme 4006ms rtt min/prosj/maks/mdev = 0,931/1,002/1,083/0,061 ms

Kao što možete vidjeti, prilikom slanja paketa veličine 32768 (32 Kb), njegovo vrijeme putovanja od klijenta do poslužitelja i natrag kreće se oko 1 milisekunde. Ako ovo vrijeme premašuje 200 ms, tada biste trebali razmisliti o povećanju timeo vrijednosti tako da premašuje vrijednost razmjene za tri do četiri puta. U skladu s tim, preporučljivo je napraviti ovaj test tijekom velikog opterećenja mreže.

Pokretanje NFS-a i postavljanje vatrozida

Bilješka je kopirana s bloga http://bog.pp.ru/work/NFS.html, na čemu veliko hvala!!!

Pokretanje NFS poslužitelja, montiranje, blokiranje, kvota i status s "ispravnim" portovima (za vatrozid)

  • Preporučljivo je prvo demontirati sve resurse na klijentima
  • zaustavite i onemogućite pokretanje rpcidmapda ako ne planirate koristiti NFSv4: chkconfig --level 345 rpcidmapd isključena usluga rpcidmapd stop
  • ako je potrebno, dopustite pokretanje usluga portmap, nfs i nfslock: chkconfig --levels 345 portmap/rpcbind na chkconfig --levels 345 nfs na chkconfig --levels 345 nfslock na
  • ako je potrebno, zaustavite usluge nfslock i nfs, pokrenite portmap/rpcbind, istovarite uslugu modula nfslock zaustavite uslugu nfs zaustavite uslugu portmap start # usluga rpcbind pokrenite umount /proc/fs/nfsd uslugu rpcidmapd zaustavite rmmod nfsd uslugu autofs zaustavite # negdje kasnije mora se pokrenuti rmmod nfs rmmod nfs_acl rmmod lockd
  • otvorene luke u
    • za RPC: UDP/111, TCP/111
    • za NFS: UDP/2049, TCP/2049
    • za rpc.statd: UDP/4000, TCP/4000
    • za zaključavanje: UDP/4001, TCP/4001
    • za montiranje: UDP/4002, TCP/4002
    • za rpc.rquota: UDP/4003, TCP/4003
  • za rpc.nfsd poslužitelj dodajte redak RPCNFSDARGS="--port 2049" u /etc/sysconfig/nfs
  • za poslužitelj montiranja dodajte redak MOUNTD_PORT=4002 u /etc/sysconfig/nfs
  • da konfigurirate rpc.rquota za nove verzije, trebate dodati red RQUOTAD_PORT=4003 u /etc/sysconfig/nfs
  • za konfiguraciju rpc.rquota potrebno je za starije verzije (međutim, morate imati paket kvota 3.08 ili noviji) dodajte u /etc/services rquotad 4003/tcp rquotad 4003/udp
  • provjerit će adekvatnost /etc/exports
  • pokrenite servise rpc.nfsd, mountd i rpc.rquota (rpcsvcgssd i rpc.idmapd pokreću se istovremeno, ako ih se sjetite izbrisati) servis nfsd start ili u novim verzijama servis nfs start
  • za blokirajući poslužitelj za nove sustave dodajte retke LOCKD_TCPPORT=4001 LOCKD_UDPPORT=4001 u /etc/sysconfig/nfs
  • za poslužitelj za zaključavanje za starije sustave, dodajte izravno u /etc/modprobe[.conf]: opcije lockd nlm_udpport=4001 nlm_tcpport=4001
  • povežite statusni poslužitelj rpc.statd na port 4000 (za starije sustave pokrenite rpc.statd s prekidačem -p 4000 u /etc/init.d/nfslock) STATD_PORT=4000
  • pokretanje usluga lockd i rpc.statd usluga nfslock pokretanje
  • provjerite jesu li svi portovi vezani normalno koristeći "lsof -i -n -P" i "netstat -a -n" (neke od portova koriste moduli kernela koje lsof ne vidi)
  • ako su prije "ponovne izgradnje" poslužitelj koristili klijenti i nisu se mogli odmontirati, tada ćete morati ponovno pokrenuti usluge automatskog montiranja na klijentima (am-utils, autofs)

Primjer konfiguracije NFS poslužitelja i klijenta

Konfiguracija poslužitelja

Ako želite svoj NFS dijeljeni direktorij učiniti javnim i u njega moguće pisati, možete koristiti opciju sve_squash u kombinaciji s opcijama anonuid I anongid. Na primjer, da postavite dopuštenja za korisnika "nitko" u grupi "nitko", možete učiniti sljedeće:

ARCHIV ~ # cat /etc/exports # Pristup za čitanje i pisanje za klijenta na 192.168.0.100, s rw pristupom za korisnika 99 s gid 99 /files 192.168.0.100(rw,sync,all_squash,anonuid=99,anongid=99) ) # Pristup za čitanje i pisanje za klijenta na 192.168.0.100, s rw pristupom za korisnika 99 s gid 99 /datoteke 192.168.0.100(rw,sync,all_squash,anonuid=99,anongid=99))

Ovo također znači da ako želite dopustiti pristup navedenom direktoriju, nobody.nobody mora biti vlasnik dijeljenog direktorija:

čovjek montirati
čovjek izvozi
http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.prftungd/doc/prftungd/nfs_perf.htm - NFS izvedba od IBM-a.

Srdačan pozdrav, McSim!

Prilikom administriranja poslužitelja temeljenih na Linux OS-u u okruženju u kojem se Windows koristi kao glavni klijentski OS, s vremena na vrijeme morate se suočiti s potrebom kopiranja nečega s klijentskog Windows sustava na Linux sustav ili obrnuto, s Linux sustava na Windows. Najčešće se za to koriste mogućnosti SSH/SCP protokola pomoću alata poput uslužnog programa pscp.exe. Ali kada se morate nositi s Linux poslužiteljima datoteka koji vam omogućuju korištenje mogućnosti protokola NFS, možemo postavljati pitanja poput "može li Windows klijent OS djelovati kao NFS klijent?", "postoji li neka vrsta ugrađene implementacije NFS klijenta u Windows klijent OS?" To su bila pitanja koja sam imao u razdoblju koje se poklopilo s razdobljem kada smo prelazili s Windowsa 8.1 na prvo izdanje Windowsa 10. Informacija koju sam u to vrijeme mogao pronaći o ovom pitanju bila je da samo "stariji " izdanja klijentskih operacijskih sustava Windows, kao što su Windows 7 Ultimate/Poduzeće, Windows 8/8.1 Poduzeće I Windows 10 Enterprise. Međutim, u našem slučaju korišten je OS Windows 10 redakcija Profesionalni, pa sam morao odbaciti ove misli.

Nedavno sam, čitajući rasprave na TechNet forumima, naišao na informaciju da je u jednom trenutku u izdanju Windows 10 Professional postalo moguće koristiti funkcionalnost NFS klijenta. Prema informacijama iz nekih izvora, takva se prilika pojavila u Windows 10 verzije 1607 (10.0.14393 / ažuriranje godišnjice).

Odlučujući provjeriti ovu informaciju na onome što mi je pri ruci Windows 10 1803(10.0.17134 / ažuriranje iz travnja 2018.) uredništvo Profesionalni, otkrio sam da sada zapravo imamo mogućnost korištenja ove funkcije.

Da bismo omogućili NFS klijent, možemo koristiti dodatak za upravljanje programima i značajkama appwiz.cpl. Ovdje na popisu "Windows komponenti" možete pronaći one dostupne za uključivanje " Usluge za NFS".

Nakon završetka instalacije, komponenta se nalazi na upravljačkoj ploči pod " administracija"pojavit će se snimak" Usluge za NFS" (nfsmgmt.msc), u kojem možemo upravljati nekim parametrima NFS klijenta.

Pretpostavljamo da su na strani NFS poslužitelja dopuštenja za pristup s klijentskog sustava već konfigurirana, na primjer, pristup IP adresi klijenta je izričito dopušten. Najjednostavniji primjer instaliranja i konfiguriranja NFS poslužitelja na strani CentOS Linuxa može se pronaći u Wiki članku “Instaliranje i konfiguriranje NFS poslužitelja i klijenta u CentOS Linux 7.2”.

Nakon postavljanja prava pristupa na strani NFS poslužitelja, prijeđite na Windows 10 i povežite mrežni direktorij koristeći " montirati". Najjednostavniji primjer anonimne veze s mrežnim imenikom izgleda ovako:

montirati-o odmah \\KOM-FS01\mnt\vdo-vd1\ovirt-iso-domena I:
  • "-o anon" - povezivanje s pravima anonimnog korisnika;
  • "KOM-FS01" - naziv NFS poslužitelja;
  • "mnt\vdo-vd1\ovirt-iso-domain" - lokalni put do direktorija na NFS poslužitelju;
  • "I" je slovo Windows pogona

Ostali dostupni parametri i pomoćni ključevi mogu se vidjeti naredbom " montirati/?". Na primjer, prilikom povezivanja možemo eksplicitno odrediti korisničko ime i lozinku na NFS poslužitelju.

Prilikom otvaranja svojstava direktorija i datoteka u povezanom NFS direktoriju, vidjet ćemo posebnu karticu " NFS atributi" s odgovarajućim atributima, uključujući podatke o trenutnim dozvolama za direktorij/datoteku, kojima, ako imamo dovoljna prava, možemo upravljati.

Prilikom ponovnog pokretanja naredbe montirati bez navođenja parametara, primit ćemo informacije o trenutnim NFS klijentskim vezama i svojstvima tih veza:

Ovdje možemo vidjeti s čime UID I vodič, veza završena. Za anonimne veze ovo je zadana postavka -2 /-2 . Ako iz nekog razloga trebamo promijeniti ove identifikatore za sve veze anonimnih klijenata, tada možemo dodati nekoliko nedostajućih zadanih postavki registra kao što su DWORD(32-bitni):

  • AnonymousUid
  • AnonymousGid

na ključ registra:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default

U vrijednostima kreiranih parametara možete napisati traženi UID i GUID koji će se koristiti za sve anonimne veze. Snimka zaslona u nastavku koristi primjer s vrijednostima 1000 :1000 (decimal).

Ako želimo koristiti sve anonimne veze korijen- novi identifikatori, tada u odgovarajućim parametrima registra trebate navesti AnonymousUid = 0 i AnonymousGid = 0 . Određivanje root identifikatora može biti korisno ako, na primjer, ne trebamo samo čitanje, već i pisanje u povezani NFS direktorij, a udaljeni NFS poslužitelj dopušta pisanje samo root korisniku i/ili članovima root grupe.

Da bi promjene stupile na snagu, morat ćete zaustaviti i ponovno pokrenuti uslugu NFS klijenta iz prethodno spomenutog dodatka za usluge za NFS (nfsmgmt.msc).

Ili, ako ponovno pokretanje računala ne predstavlja problem, možete ponovno pokrenuti klijentsko računalo kako bi promjene stupile na snagu.

Moji pokušaji ponovnog pokretanja usluge sustava" Klijent za NFS" (NfsClnt) putem standardnih mehanizama kao što je dodatak Service Control usluge.msc ili uslužni program" neto", pokazalo je da iz nekog razloga to dovodi do nemogućnosti pokretanja usluge nakon što je zaustavljena. Stoga je za ponovno pokretanje NFS klijenta bolje koristiti nativni snap-in. Iako je, opet, primijećeno da opetovano zaustavljanje /pokretanje usluge u snap-in-u "Services for NFS" također može uzrokovati da NFS klijent ne radi ispravno. Kao rezultat toga, na primjer, uslužni program " montirati" može zaustaviti montiranje NFS direktorija, dajući mrežnu pogrešku:

U takvim slučajevima jedino pomaže ponovno podizanje sustava klijentskog računala, nakon čega sve ponovno radi.

Nakon što su promjene koje su nam potrebne u registru napravljene i usluga NFS klijenta uspješno ponovno pokrenuta, ponovno ćemo pokušati spojiti NFS direktorij i pogledati naredbom " montirati" informacije o vezi.

Kao što vidite, sada su sigurnosni identifikatori upravo oni koje smo prethodno naveli u registru.

Onemogućavanje mrežnih resursa povezanih putem NFS protokola jednostavno je poput povezivanja, samo pomoću drugog uslužnog programa - " umount"

Općenito, dobro je što sada korisnici izdanja Windows 10 Professional imaju standardnu ​​mogućnost rada s resursima mrežnih datoteka pomoću NFS protokola. Ovo ćemo koristiti u našem radu.

Svi znaju da je na UNIX sustavima datotečni sustav logično skup fizičkih datotečnih sustava povezanih u jednu točku. Jedna od glavnih prednosti takve organizacije, po mom mišljenju, je mogućnost dinamičke izmjene strukture postojećeg datotečnog sustava. Također, zahvaljujući naporima programera, danas imamo priliku povezati datotečni sustav gotovo bilo koje vrste i na bilo koji prikladan način. Pod “metodom”, prije svega želim naglasiti sposobnost jezgre OS-a da radi sa sustavima datoteka putem mrežnih veza.

Mnogi mrežni protokoli pružaju nam mogućnost rada s udaljenim datotekama, bilo da se radi o FTP-u, SMB-u, Telnetu ili SSH-u. Zahvaljujući mogućnosti kernela da u konačnici ne ovisi o vrsti datotečnog sustava koji se povezuje, imamo mogućnost povezivanja bilo čega i kako god želimo pomoću programa za montiranje.

Danas bih želio govoriti o NFS - Network File System. Ova tehnologija vam omogućuje povezivanje pojedinih točaka datotečnog sustava na udaljenom računalu sa datotečnim sustavom lokalnog računala. Sam NFS protokol vam omogućuje vrlo brzo, sigurno i pouzdano izvođenje operacija s datotekama. Što nam još treba? :-)

Što je potrebno da ovo funkcionira

Kako ne bismo dugo lupetali na temu verzija NFS-a i njihove podrške u raznim kernelima, odmah ćemo pretpostaviti da vaša verzija kernela nije niža od 2.2.18. U službenoj dokumentaciji programeri obećavaju punu podršku za funkcionalnost NFS verzije 3 u ovoj jezgri i kasnijim verzijama.

Montaža

Za pokretanje NFS poslužitelja u mom Ubuntu 7.10 - Gutsy Gibbon, morao sam instalirati pakete nfs-common i nfs-kernel-server. Ako trebate samo NFS klijent, tada nfs-kernel-server ne treba biti instaliran.

Podešavanje poslužitelja

Nakon što su svi paketi uspješno instalirani, trebate provjeriti radi li NFS demon:

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

Ako demon ne radi, morate ga pokrenuti naredbom

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

Nakon što je sve uspješno pokrenuto, možete započeti s izvozom datotečnog sustava. Sam proces je vrlo jednostavan i traje minimalno vremena.

Glavna konfiguracijska datoteka NFS poslužitelja nalazi se u /etc/exports i ima sljedeći format:

Imenik stroj1(opcija11,opcija12) stroj2(opcija21,opcija22)

imenik— apsolutni put do direktorija FS poslužitelja kojem trebate dati pristup

strojX— DNS naziv ili IP adresa klijentskog računala s kojeg je dopušten pristup

opcijaXX— FS izvozni parametri, najčešće korišteni od njih:

  • ro- pristup datoteci je samo za čitanje
  • rw— odobren je pristup za čitanje/pisanje
  • no_root_squash— prema zadanim postavkama, ako se povežete na NFS resurs kao root, poslužitelj će, radi sigurnosti, sa svoje strane pristupati datotekama kao korisnik nitko. Međutim, ako omogućite ovu opciju, datotekama na strani poslužitelja pristupat će se kao root. Budite oprezni s ovom opcijom.
  • nema_provjere_podstabla— prema zadanim postavkama, ako ne izvozite cijelu particiju na poslužitelju, već samo dio datotečnog sustava, demon će provjeriti nalazi li se tražena datoteka fizički na istoj particiji ili ne. Ako izvozite cijelu particiju ili točka montiranja izvezenog datotečnog sustava ne utječe na datoteke s drugih fizičkih jedinica, tada možete omogućiti ovu opciju. To će vam omogućiti povećanje brzine poslužitelja.
  • sinkronizacija— uključite ovu opciju ako postoji mogućnost iznenadnog gubitka veze ili nestanka struje poslužitelja. Ako ova opcija nije uključena, postoji vrlo visok rizik od gubitka podataka ako se NFS poslužitelj iznenada zaustavi.

Dakle, recimo da ashep-stolnom računalu trebamo dati pristup direktoriju /var/backups ashep-laptop računala. Pristup direktoriju potreban je za kopiranje datoteka sigurnosne kopije s ashep-desktop. Moja datoteka je ispala ovako:

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

Nakon dodavanja retka u /etc/exports, morate ponovno pokrenuti NFS poslužitelj kako bi promjene stupile na snagu.

/etc/init.d/nfs-kernel-server ponovno pokretanje

To je sve. Možete započeti povezivanje izvezenog FS-a na klijentskom računalu.

Postavljanje klijenta

Na strani klijenta, udaljeni datotečni sustav se montira na isti način kao i svi ostali - naredbom mount. Također, nitko vam ne brani koristiti /etc/fstab ako trebate automatski spojiti FS kada se OS podigne. Dakle, opcija montiranja izgledat će ovako:

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

Ako je sve prošlo dobro i trebate se automatski spojiti na udaljeni FS pri dizanju, samo dodajte red u /etc/fstab:

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

Što drugo

Dakle, imamo praktičan, mali pregled mogućnosti NFS-a. Naravno, ovo je samo mali dio onoga što NFS može. Ovo je dovoljno za korištenje kod kuće ili u malom uredu. Ako vam ovo nije dovoljno, preporučam prvo čitanje

Kada je uključen NFS-na poslužitelju postoji jedan glavni korisnik i na računalu koje djeluje kao NFS-client, također jedan korisnik, i također uključen u sudousers listu -: NFS particija je povezana pomoću sudo, UID i GID na NFS poslužitelju i NFS klijentu su isti, nema problema s pravima čitanja i pisanja.

Imao sam situaciju u kojoj je NFS klijent imao običnog korisnika bez pristupa sudou i on je morao moći čitati i pisati na povezanu NFS particiju. Nazovimo ovog korisnika reguser. Također je postojao još jedan korisnik na ovom računalu (NFS klijent) koji je imao sudo pristup. Nazovimo ga: admuser.

Dakle, imao sam dva zadatka:

  1. Uvjerite se da reguser može pisati u datoteke i direktorije na NFS poslužitelju.
  2. Učinite to tako da reguser može spojiti i isključiti samu NFS particiju.

Kako dopustiti pisanje na NFS poslužitelj korisnicima s NFS klijenta koji ima drugačiji UID od UID-a korisnika koji posjeduje datoteke na NFS poslužitelju

Radnje se izvode na NFS poslužitelju kao root korisnik.
Uredi /etc/exports:
nano /etc/exports
Umećemo ili mijenjamo redak koji označava koji direktorij će biti dostupan (izvezen) putem NFS-a:

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

Gdje:

  • /početna/nfs— direktorij koji će biti dostupan (izvezen) NFS klijentu;
  • 192.168.1.1/24 — IP adresa ili, kao u ovom slučaju, raspon adresa s kojih vam je dopušteno spajanje na NFS;
  • rw— dopuštenje za čitanje i pisanje;
  • asinkroni— asinkroni način rada, u kojem će se odgovori na zahtjeve pojaviti odmah, bez čekanja na pisanje na disk. U ovom slučaju, pouzdanost je niža, ali je učinak veći;
  • nema_provjere_podstabla- Kada dopušta pristup poddirektoriju datotečnog sustava, umjesto cijelom datotečnom sustavu, poslužitelj provjerava nalazi li se tražena datoteka u izvezenom poddirektoriju ili ne. no_subtree_check onemogućuje ovu provjeru, što smanjuje sigurnost, ali povećava brzinu prijenosa podataka;
  • sve_squash— ova opcija osigurava da će se svi korisnici NFS klijenta smatrati anonimnima na NFS poslužitelju ili oni korisnici NFS poslužitelja čiji su identifikatori navedeni u anonuid i anongid;
  • anonuid— ID korisnika OS-a na NFS poslužitelju. Preuzeto iz /etc/passwd. Na primjer, ako vam treba prvi korisnik koji nije sustav (onaj čija je prijava navedena prilikom instaliranja OS-a, u mom slučaju nfs) i u datoteci /etc/passwd postoji linija " nfs:x:1000:1000:NFS:/home/nfs:/bin/bash» vrijednost za anonuid će biti prvi broj 1000;
  • anongid— Identifikator OS grupe na NFS poslužitelju. Preuzeto iz /etc/group. Na primjer, ako vam je potrebna grupa www-podaci i u datoteku /etc/group postoji linija " www-podaci:x:33:» vrijednost za anongid će biti 33;

Ako trebate točnije naznačiti koji korisnici na NFS klijentu odgovaraju korisnicima na NFS poslužitelju, možete omogućiti mapiranje korisnika dodavanjem opcije map_static=/etc/file_maps_users. Datoteka /etc/file_maps_users trebao bi izgledati ovako:

# Mapiranje korisnika # daljinski lokalni komentar uid 0-33 1002 # mapiranje korisnika s udaljenim UID-om 0-50 na lokalni UID 1002 gid 0-33 1002 # mapiranje korisnika s udaljenim GID-om 0-50 na lokalni GID 1002

Ponovno pokrećemo nfs daemon i time se dovršava postavljanje poslužitelja:
/etc/init.d/nfs-kernel-server ponovno pokretanje

Kako dopustiti običnom korisniku da montira i demontira NFS particiju

Napravite direktorij u koji ćemo montirati:
sudo mkdir /media/nfs

Dodaj u /etc/fstab pravilo montaže. Otvori datoteku:
sudo nano /etc/fstab
Dodajte pravilo:
192.168.1.50:/home/nfs /media/nfs nfs rw,noauto,korisnik 0 0
Gdje:

  • 192.168.1.50 — IP adresa NFS poslužitelja;
  • /početna/nfs— direktorij na NFS poslužitelju koji montiramo. Trebao bi biti na popisu /etc/exports na NFS poslužitelju;
  • /mediji/nfs— direktorij na NFS klijentu u koji montiramo NFS particiju;
  • nfs— vrsta datotečnog sustava;
  • rw- s pravom pisanja;
  • noauto— opcija koja pokazuje da se particija ne mora automatski montirati pri dizanju;
  • korisnik— opcija koja svakom korisniku omogućuje montiranje i demontažu ove particije.

Da biste onemogućili NFS:
nano ~/nfs.umount
s kodom:
#!/bin/bash
umount/mediji/nfs

Dopusti izvršavanje skripti:
chmod ug+x ~/nfs.mount ~/nfs.umount

I na kraju, povezivanje NFS resursa:
~/nfs.mount

Onemogućavanje NFS resursa:
~/nfs.umount

To je to, svi zadaci su obavljeni.

Kada govorimo o računalnim mrežama, često se spominje NFS. Što znači ova kratica?

To je protokol distribuiranog datotečnog sustava koji je izvorno razvio Sun Microsystems 1984. godine, omogućavajući korisniku na klijentskom računalu pristup datotekama preko mreže, slično pristupu lokalnoj pohrani. NFS, kao i mnogi drugi protokoli, temelji se na Open Network Computing Remote Procedure Call (ONC RPC) sustavu.

Drugim riječima, što je NFS? To je otvoreni standard, definiran zahtjevom za komentare (RFC), koji svakome omogućuje implementaciju protokola.

Verzije i varijacije

Izumitelj je koristio samo prvu verziju za vlastite eksperimentalne svrhe. Kada je razvojni tim dodao značajne promjene izvornom NFS-u i objavio ga izvan Sunovog autorstva, označili su novu verziju kao v2 kako bi mogli testirati interoperabilnost između distribucija i stvoriti zamjenu.

NFS v2

Verzija 2 u početku je radila samo preko protokola korisničkog datagrama (UDP). Njegovi programeri željeli su zadržati stranu poslužitelja bez blokiranja implementiranu izvan glavnog protokola.

Sučelje virtualnog datotečnog sustava omogućuje modularnu implementaciju koja se ogleda u jednostavnom protokolu. Do veljače 1986. demonstrirana su rješenja za operativne sustave kao što je System V izdanje 2, DOS i VAX/VMS koristeći Eunice. NFS v2 dopušta čitanje samo prvih 2 GB datoteke zbog 32-bitnih ograničenja.

NFS v3

Prvi prijedlog za razvoj NFS verzije 3 u tvrtki Sun Microsystems najavljen je ubrzo nakon izlaska druge distribucije. Glavna motivacija bila je pokušati ublažiti problem izvedbe sinkronog snimanja. Do srpnja 1992. praktična poboljšanja su riješila mnoge nedostatke NFS verzije 2, ostavljajući samo nedovoljnu podršku za datoteke (64-bitne veličine datoteka i odmaci datoteka).

  • podrška za 64-bitne veličine datoteka i pomake za rukovanje podacima većim od 2 gigabajta (GB);
  • podrška za asinkrono snimanje na poslužitelju radi poboljšanja performansi;
  • dodatni atributi datoteka u mnogim odgovorima kako bi se izbjeglo njihovo ponovno dohvaćanje;
  • READDIRPLUS operacija za dobivanje podataka i atributa zajedno s nazivima datoteka prilikom skeniranja direktorija;
  • mnoga druga poboljšanja.

Tijekom uvođenja verzije 3, počela je rasti podrška za TCP kao protokol prijenosnog sloja. Korištenje TCP-a kao sredstva prijenosa podataka, izvedeno korištenjem NFS-a preko WAN-a, počelo je dopuštati prijenos velikih datoteka za pregled i pisanje. Zahvaljujući tome, programeri su uspjeli prevladati ograničenja od 8 KB koja nameće User Datagram Protocol (UDP).

Što je NFS v4?

Verzija 4, pod utjecajem Endres File System (AFS) i Server Message Block (SMB, također nazvan CIFS), uključuje poboljšanja performansi, pruža bolju sigurnost i uvodi protokol usklađenosti.

Verzija 4 bila je prva distribucija koju je razvila Internet Engineering Task Force (IETF) nakon što je Sun Microsystems povjerio razvoj protokola vanjskim suradnicima.

NFS verzija 4.1 ima za cilj pružiti podršku protokola za korištenje klasteriranih poslužiteljskih implementacija, uključujući mogućnost pružanja skalabilnog paralelnog pristupa datotekama distribuiranim na više poslužitelja (pNFS ekstenzija).

Najnoviji protokol datotečnog sustava, NFS 4.2 (RFC 7862), službeno je objavljen u studenom 2016.

Ostala proširenja

S razvojem standarda pojavili su se i odgovarajući alati za rad s njim. Na primjer, WebNFS, proširenje za verzije 2 i 3, omogućuje protokolu za pristup mrežnom datotečnom sustavu da se lakše integrira u web preglednike i omogući rad preko vatrozida.

Razni protokoli trećih strana također su postali povezani s NFS-om. Najpoznatiji od njih su:

  • Network Lock Manager (NLM) s podrškom za bajt protokol (dodan za podršku UNIX System V API za zaključavanje datoteka);
  • Remote Quota (RQUOTAD), koja korisnicima NFS-a omogućuje pregled kvota za pohranu na NFS poslužiteljima;
  • NFS preko RDMA je prilagodba NFS-a koja koristi daljinski izravni pristup memoriji (RDMA) kao prijenosni medij;
  • NFS-Ganesha je NFS poslužitelj koji radi u korisničkom prostoru i podržava CephFS FSAL (File System Abstraction Layer) koristeći libcephfs.

Platforme

Mrežni datotečni sustav često se koristi s Unix operativnim sustavima (kao što su Solaris, AIX, HP-UX), Appleovim MacOS-om i operativnim sustavima sličnim Unixu (kao što su Linux i FreeBSD).

Također je dostupan za platforme kao što su Acorn RISC OS, OpenVMS, MS-DOS, Microsoft Windows, Novell NetWare i IBM AS/400.

Alternativni protokoli za udaljeni pristup datoteci uključuju Server Message Block (SMB, koji se naziva i CIFS), Apple Transfer Protocol (AFP), NetWare Core Protocol (NCP) i OS/400 Server File System (QFileSvr.400).

To je zbog zahtjeva NFS-a, koji su uglavnom usmjereni na Unix-like "ljuske".

Međutim, protokoli SMB i NetWare (NCP) koriste se češće od NFS-a na sustavima s operativnim sustavom Microsoft Windows. AFP je najčešći na Apple Macintosh platformama, a QFileSvr.400 je najčešći na OS/400.

Tipična izvedba

Pretpostavimo tipični scenarij u Unix stilu u kojem jedno računalo (klijent) treba pristup podacima pohranjenim na drugom (NFS poslužitelju):

  • Poslužitelj implementira procese sustava mrežnih datoteka, koji se prema zadanim postavkama izvode kao nfsd, kako bi njegovi podaci bili javno dostupni klijentima. Administrator poslužitelja određuje kako izvoziti imena i postavke direktorija, obično koristeći konfiguracijsku datoteku /etc/exports i naredbu exportfs.
  • Administriranje sigurnosti poslužitelja osigurava da može prepoznati i odobriti autentificiranog klijenta. Njegova mrežna konfiguracija osigurava da kvalificirani klijenti mogu pregovarati s njim putem bilo kojeg sustava vatrozida.
  • Klijentski stroj zahtijeva pristup izvezenim podacima, obično izdavanjem naredbe. Upituje poslužitelj (rpcbind) koji koristi NFS priključak i zatim se na njega povezuje.
  • Ako se sve odvija bez grešaka, korisnici na klijentskom računalu moći će pregledavati i komunicirati s instaliranim datotečnim sustavima na poslužitelju unutar dopuštenih parametara.

Također treba napomenuti da se također može dogoditi automatizacija procesa mrežnog datotečnog sustava - možda pomoću etc/fstab i/ili drugih sličnih alata.

Razvoj do danas

Do 21. stoljeća konkurentski protokoli DFS i AFS nisu postigli veći komercijalni uspjeh u usporedbi s mrežnim datotečnim sustavom. IBM, koji je prethodno stekao sva komercijalna prava na gore navedene tehnologije, donirao je većinu AFS izvornog koda zajednici slobodnog softvera 2000. godine. Projekt Open AFS postoji i danas. Početkom 2005. IBM je najavio kraj prodaje AFS i DFS.

Zauzvrat, u siječnju 2010., Panasas je predložio NFS v 4.1 temeljen na tehnologiji koja poboljšava mogućnosti paralelnog pristupa podacima. Protokol Network File System v 4.1 definira metodu za odvajanje metapodataka datotečnog sustava od lokacije određenih datoteka. Dakle, nadilazi jednostavno odvajanje imena/podataka.

Što je NFS ove verzije u praksi? Gornja značajka razlikuje ga od tradicionalnog protokola koji sadrži nazive datoteka i njihove podatke pod jednom vezom s poslužiteljem. S mrežnim datotečnim sustavom v. 4.1, neke se datoteke mogu dijeliti između poslužitelja s više čvorova, ali uključenost klijenta u dijeljenje metapodataka i podataka je ograničena.

Kod implementacije četvrte distribucije protokola, NFS poslužitelj je skup poslužiteljskih resursa ili komponenti; pretpostavlja se da ih kontrolira poslužitelj metapodataka.

Klijent i dalje kontaktira jedan poslužitelj metapodataka kako bi prešao ili stupio u interakciju s prostorom imena. Dok premješta datoteke na poslužitelj i s njega, može izravno komunicirati sa skupom podataka u vlasništvu NFS grupe.