Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • Windows 8
  • NFS protokol. Network File System (NFS) - mrežni datotečni sustav

NFS protokol. Network File System (NFS) - mrežni datotečni sustav

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.

Za distribuciju datoteka unutar lokalne mreže mogu se razlikovati sljedeće tehnologije (razmatraju se sustavi temeljeni na Linuxu):

  • Network File System (NFS) - mrežni pristupni protokol za datotečne sustave;
  • Datoteke koje se prenose preko Shell protokola (FISH) je mrežni protokol koji koristi ili RSH za prijenos datoteka između računala;
  • Secure SHell FileSystem (SSHFS) - klijent datotečnog sustava za montiranje diskovnih uređaja na udaljenim sustavima, koji se koristi za interakciju s udaljenim sustavom SFTP;
  • Samba je programski paket koji vam omogućuje pristup mrežnim pogonima i pisačima na različitim operativnim sustavima putem SMB/CIFS protokola;

U ovoj bilješci ćemo govoriti o NFS.

NFS (mrežni datotečni sustav) korisno kada trebate distribuirati datoteke/direktorije svima na mreži. Transparentnost pristupa sa NFS omogućuje klijentima montiranje udaljenog datotečnog sustava kao lokalnog direktorija, a datotečni sustavi mogu biti različitih vrsta. To znači da svaka klijentska aplikacija koja može raditi s lokalnom datotekom može jednako lako raditi s datotekom povezanom putem NFS, bez ikakvih izmjena na samom programu.

Na dobrobiti NFS može se pripisati:

  • smanjenje opterećenja na procesoru;
  • prikazivanje zajedničkih resursa kao redovnih direktorija u sustavu;
  • Trenutno dostupan NFS v4.1, koji je uveo novu značajku pNFS omogućujući vam da paralelizirate implementaciju dijeljenja datoteka. Postoji i proširenje za NFS 2 i 3 - WebNFS, koji omogućuju lakšu integraciju u web preglednike i mogućnost rada kroz firewall.

    Shema rada NFS protokol.

    Instalacija i konfiguracija NFS poslužitelja pod Linuxom

    Provjerimo podržava li sustav NFS

    Cat /proc/datotečni sustavi | grep nfs

    Pod, ispod Arch Linux server i klijent su u istom paketu

    Yaourt -S nfs-utils

    Za instaliranje poslužitelja ( nfs-kernel-poslužitelj) i klijent ( nfs-zajednički) pod, ispod Ubuntu potrebni paketi

    Sudo apt-get install nfs-kernel-server nfs-common portmap

    Dalje u ovoj bilješci, IP će se koristiti za poslužitelj 192.168.1.100 . Kako bi poslužitelju uvijek bio dodijeljen isti IP, potrebno je u DHCP poslužitelju (obično routeru) odrediti raspodjelu određenog IP-a na određenu MAC adresu. Ili podignite svoj lokalni DNS poslužitelj. Na primjer ili.

    MAC adresa se može pronaći pomoću ifconfig (polje eter V Arch Linux).

    NFSv4 pretpostavlja da postoji korijenski direktorij unutar kojeg se već nalaze datoteke za distribuciju. Na primjer, /srv/nfs- korijen, /srv/nfs/audio- imenik za distribuciju glazbe. Ako ne slijedite ove nove smjernice u verziji 4 , tada možete dobiti pogrešku prilikom povezivanja od strane klijenta:

    Mount.nfs: pristup odbijen od strane poslužitelja tijekom montiranja 192.168.1.100:/home/proft/torrents

    Ako i dalje želite koristiti pristup na poslužitelju bez korijenskog direktorija za NFS, tada kada montirate od strane klijenta, morate izričito navesti verziju 3

    # za naredbu montiranja mount -o "vers=3" 192.168.1.100:/home/proft/torrents /home/proft/nfs/torrents # za fstab 192.168.1.100:/home/proft/torrents /home/proft/nfs / torrenti nfs soft,nfsvers=3 0 0

    koristiti ću NFSv4 s korijenskim imenikom u /srv/nfs/ i montiranje poddirektorija pomoću mount --bind.

    Pretpostavimo da želimo

    • distribuirati imenik ~/torrenti S rw pristup za svatko unutar lokalne mreže;
    • distribuirati imenik ~/fotografije S ro pristup za host s IP-om 192.168.1.101 ;

    Najprije stvorimo korijenski direktorij i potrebne poddirektorije.

    Sudo mkdir -p /srv/nfs/(torrenti,fotografije)

    Montirajte postojeće direktorije torrenti, fotografije V /srv/nfs.

    # sudo vim /etc/fstab /home/proft/torrents /srv/nfs/torrents none bind 0 0 /home/proft/photos /srv/nfs/photos none bind 0 0

    Uredimo /etc/exports, koji opisuje sve zajedničke imenike

    # sudo vim /etc/exports # format datoteke: direktorij dozvoljen-hosts(opcije) /srv/nfs/torrents 192.168.1.1/24(rw,async) /srv/nfs/photos 192.168.1.101(ro,async)

    Imajte na umu da nema razmaka između dopušteni-domaćini I (opcije). Prisutnost prostora uvodi drugačije tumačenje pravila.

    Dostupne opcije:

    • ro (rw) - dopustiti pristup samo za čitanje (čitanje/pisanje);
    • subtree_check (no_subtree_check) - u nekim slučajevima potrebno je izvesti ne cijeli odjeljak, već samo njegov dio. U ovom slučaju, poslužitelj NFS mora izvršiti dodatne provjere zahtjeva klijenata kako bi osigurao da oni samo pokušavaju pristupiti datotekama koje se nalaze u odgovarajućim poddirektorijima. Ova kontrola podstabla ( provjere podstabla) donekle usporava interakciju s klijentima, ali ako ga odbijete, to može uzrokovati probleme sa sigurnošću sustava. Možete otkazati kontrolu nad podstablom pomoću opcije nema_provjere_podstabla. Opcija provjera_podstabla, koji uključuje takvu kontrolu, pretpostavlja se prema zadanim postavkama. Provjera podstabla može se izostaviti ako je izvezeni direktorij isti kao particija diska;
    • sinkronizacija (asinkronizacija) - određuje da poslužitelj treba odgovoriti na zahtjeve tek nakon što su promjene napravljene tim zahtjevima zapisane na disk. Opcija asinkroni govori poslužitelju da ne čeka da se informacije zapišu na disk, što poboljšava performanse, ali smanjuje pouzdanost jer u slučaju kvara veze ili kvara opreme može doći do gubitka podataka;
    • noaccess - odbija pristup navedenom direktoriju. Može biti korisno ako ste prethodno odredili pristup za sve korisnike mreže određenom direktoriju, a sada želite ograničiti pristup poddirektoriju samo na neke korisnike;
    • no_root_squash – zadani korisnik korijen na stroju klijenta neće imati ista prava na direktorij na poslužitelju. Ova opcija uklanja ovo ograničenje;
    • nohide- NFS ne prikazuje automatski ne-lokalne resurse (na primjer, montirane pomoću mount --bind), ova opcija omogućuje prikaz takvih resursa;
    • nesigurno - korištenje neprivilegiranih portova (> 1024);

    Pokretanje NFS poslužitelja

    # pod archlinux sudo systemctl pokrenite rpc-idmapd.service rpc-mountd.service # pod ubuntu sudo /etc/init.d/nfs-kernel-server pokrenite

    Ubuduće, kada mijenjate konfiguracijsku datoteku, samo je ponovno pročitajte naredbom:

    Sudo exportfs -rav

    Naredba rpcinfo -p | grep nfs omogućuje vam da provjerite je li poslužitelj uspješno pokrenut.

    Linux klijent

    Montaža

    # pod archlinux yaourt -S nfs-utils # pod ubuntu sudo apt-get instaliraj portmap nfs-common

    Kreirajmo direktorije za montiranje mrežnih resursa bujice I fotografije

    Mkdir -p ~/nfs/(torrenti,fotografije)

    Za ručnu montažu ćemo učiniti

    Sudo mount -t nfs -o rw,soft 192.168.1.100:/srv/nfs/torrenti /home/proft/nfs/torrenti sudo mount -t nfs -o rw,soft 192.168.1.100:/srv/nfs/photos /home /proft/nfs/fotografije

    Opcija mekan određuje tiho otkazivanje pokušaja povezivanja dijeljenja nakon određenog vremena (vrijeme je određeno opcijom retrans). Više detalja u čovjek nfs.

    Ova metoda nije baš prikladna, jer ćete svaki put nakon ponovnog pokretanja morati izvršiti ove naredbe. Učinimo instalaciju automatskom.

    Za automatsko montiranje uredite datoteku /etc/fstab

    # sudo vim /etc/fstab 192.168.1.100:/srv/nfs/torrents /home/proft/net/torrents nfs rw,soft 0 0 192.168.1.100:/srv/nfs/photos /home/proft/net/photos nfs ro,meko 0 0

    Ali ova metoda također ima svoje nedostatke, na primjer, ako poslužitelj nije dostupan, učitavanje klijenta može se zamrznuti zbog pokušaja povezivanja s NFS poslužiteljem. Da biste to popravili, pogledajte dolje o tome AutoFS.

    AutoFS - automatsko povezivanje mrežnih resursa

    Moguće je montirati udaljeni resurs pomoću AutoFS pri prvom pristupu i automatski se demontira kada nema aktivnosti.

    AutoFS koristi predloške koji se nalaze u /etc/autofs. Glavni predložak se zove auto.majstor, može ukazivati ​​na jedan ili više drugih uzoraka za određene vrste medija.

    Montaža

    # pod archlinux yaourt -S autofs # pod ubuntu sudo apt-get install autofs

    Postoji nekoliko načina za određivanje metoda automatskog montiranja. Koristim ovaj: in /home/proft/nfs Automatski se kreira direktorij s nazivom NFS poslužitelja, u kojem se automatski kreiraju dostupni direktoriji na poslužitelju.

    # sudo vim /etc/autofs/auto.master /home/proft/nfs /etc/autofs/auto.nfs --timeout=60

    Dodatni parametar pauza postavlja broj sekundi nakon kojih će se uređaj isključiti. Parametar duh specificira da će konfigurirani resursi uvijek biti prikazani, a ne samo kada su dostupni (ova je opcija omogućena prema zadanim postavkama u AutoFS 5)

    Opisat ćemo u /etc/autofs/auto.nfs NFS poslužitelj i korijenski direktorij.

    # sudo vim /etc/autofs/auto.nfs nfsserver 192.168.1.100:/srv/nfs

    Sada na prvi poziv /home/proft/nfs/torrenti NFS resurs će se automatski montirati.

    Ponovno pokrenimo uslugu autofs:

    # pod archlinux sudo systemctl restart autofs # pod ubuntu sudo /etc/init.d/autofs restart

    Također možete odrediti vrijeme čekanja da NFS resurs postane dostupan. Da biste to učinili, morate promijeniti vrijednosti MOUNT_WAIT.

    # pod archlinuxom # sudo vim /etc/conf.d/autofs MOUNT_WAIT=5 # pod ubuntuom sudo /etc/default/autofs MOUNT_WAIT=5

    Prisilno korištenje NFS v3

    U nekim slučajevima NFSv4 može raditi sporo. Da biste to popravili, možete ga prisiliti da koristi treću verziju.

    Zgodno rješenje za pristup distribuiranom datotečnom sustavu

    Datotečni sustav je neophodan. Radimo na računalima koja omogućuju pristup pisačima, kamerama, bazama podataka, daljinskim senzorima, teleskopima, kompajlerima i mobilnim telefonima. Ovi uređaji imaju malo toga zajedničkog - posebice mnogi od njih postali su stvarnost nakon što je Internet postao sveprisutan (na primjer, elektroničke kamere i mobilni uređaji koji djeluju kao mala računala). Međutim, svi oni trebaju datotečni sustav za pohranu i siguran pristup informacijama.

    Općenito nas nije briga kako su podaci, aplikacije koje ih koriste i sučelja koja nam ih prikazuju pohranjeni u samim računalima. Većina korisnika željela bi promatrati (i to s pravom) datotečni sustav kao zid koji ih dijeli od golog metala koji pohranjuje bitove i bajtove. Stoga skupovi protokola koji povezuju datotečne sustave obično ostaju crne kutije za većinu korisnika i, doista, programera. No, na kraju se organiziranje mrežne interakcije svih ovih uređaja svodi na omogućavanje razmjene podataka između datotečnih sustava.

    Mrežni datotečni sustavi i drugi sveti obredi

    Na mnogo načina, razmjena podataka nije ništa drugo nego kopiranje informacija na velike udaljenosti. Mrežni protokoli nisu bili jedino sredstvo pomoću kojeg je univerzalna razmjena podataka postala moguća. Uostalom, svaki računalni sustav mora pretvoriti datagrame u nešto što je razumljivo operativnom sustavu s druge strane. TCP je vrlo učinkovit prijenosni protokol, ali nije optimiziran za brz pristup datotekama ili za daljinsko upravljanje aplikacijskim softverom.

    Distribuirano naspram mrežnog računarstva

    Tradicionalni mrežni protokoli imaju malo toga za ponuditi za organiziranje izračuna raspodijeljenih između računala i, posebice, između mreža. Samo bi se nesmotreni programeri oslanjali na protokole za prijenos podataka i optičke kabele kako bi omogućili paralelno računanje. Obično se oslanjamo na serijski model, u kojem, nakon što je veza uspostavljena, protokoli sloja veze počinju raditi, izvršavajući prilično složenu proceduru pozdrava između mrežnih kartica. Paralelno računalstvo i distribuirani datotečni sustavi više se ne oslanjaju na IP ili Ethernet. Trenutno ih možemo jednostavno zanemariti kada govorimo o performansama. Međutim, pitanja zaštite su druga stvar.

    Jedan dio slagalice je kako se pristupa datotekama u računalnom sustavu. U današnje vrijeme za sustav koji pristupa datotekama nije bitno nalaze li se potrebne datoteke na jednom računalu ili se iz nekog razloga nalaze na više računala. Trenutno su semantika datotečnog sustava i strukture podataka datotečnog sustava dvije vrlo različite teme. Semantika datotečnog sustava Plan 9 ili distribuiranog datotečnog sustava u stilu AFS-a (Andrew File System) skriva način na koji su datoteke organizirane ili način na koji je datotečni sustav preslikan na hardver i umrežavanje. NFS ne mora nužno skrivati ​​način na koji su datoteke i direktoriji pohranjeni na udaljenim datotečnim sustavima, ali također ne otkriva stvarni hardverski način na koji su datotečni sustavi, direktoriji i datoteke pohranjeni.

    NFS: Rješavanje UNIX problema

    Pristup distribuiranom datotečnom sustavu, međutim, zahtijeva nešto više od nekoliko naredbi da bi se korisnicima omogućilo montiranje direktorija koji se nalazi na drugom računalu na mreži. Sun Microsystems je naišao na ovaj problem prije nekoliko godina kada je počeo distribuirati nešto tzv Udaljeni pozivi procedura(RPC) i NFS.

    Glavni problem koji je Sun pokušavao riješiti bio je način povezivanja više UNIX računala kako bi se stvorilo jedno distribuirano radno okruženje bez potrebe za prepisivanjem semantike UNIX datotečnog sustava i dodavanja previše struktura podataka specifičnih za distribuirane datotečne sustave - integritet svaki je sustav morao biti sačuvan, dok je korisnicima omogućen rad s katalogom na drugom računalu bez izazivanja neželjenih kašnjenja ili ograničenja u njihovom tijeku rada.

    Naravno, NFS čini više od pružanja pristupa tekstualnim datotekama. Također možete distribuirati "pokrenute" aplikacije preko NFS-a. Sigurnosni postupci koriste se za zaštitu mreže od zlonamjernog uplitanja izvršnih datoteka. Ali kako se to točno događa?

    NFS je RPC

    NFS se tradicionalno definira kao RPC aplikacija koja zahtijeva TCP za NFS poslužitelj i TCP ili neki drugi mrežni protokol za NFS klijenta. Internet Engineering Task Force (IETF) objavila je Zahtjev za komentare (RFC) za RPC u RFC-u 1832. Još jedan standard od vitalnog značaja za funkcioniranje NFS implementacije opisuje formate podataka koje koristi NFS; objavljen je u RFC 1831 kao dokument "Vanjski prikaz podataka" (XDR).

    Ostali RFC-ovi bave se algoritmima sigurnosti i enkripcije koji se koriste za razmjenu autentifikacijskih informacija tijekom NFS sesija, ali mi ćemo prvo pokriti osnovne mehanizme. Jedan od protokola koji nas zanima je Protokol montiranja, opisano u Dodatku 1 RFC-a 1813.

    Ovaj RFC opisuje koji protokoli omogućuju rad NFS-a, ali ne opisuje kako NFS funkcionira u sadašnjost. Već ste naučili nešto važno, naime da su NFS protokoli dokumentirani kao IETF standardi. Nakon što je najnovija verzija NFS-a zapela na 3, RPC protokoli nisu evoluirali dalje od RFC informacijske faze i smatralo se da su uglavnom izvan interesa (navodno) ogromne inženjerske radne grupe Sun Microsystemsa i vlasničkih inačica UNIX-a. Od 1985. Sun je izdao nekoliko verzija NFS-a, koji je nekoliko godina stariji od većine modernih sustava datoteka. Sun Microsystems je 1998. prenio kontrolu nad NFS-om na IETF, a većina rada na NSF verziji 4 (NFSv4) obavljena je pod pokroviteljstvom IETF-a.

    To jest, kada danas radite s RPC-om i NFS-om, radite s verzijom koja odražava interese tvrtki i grupa izvan Sun-a. Međutim, mnogi Sunovi inženjeri i dalje su duboko zainteresirani za razvoj NFS-a.

    NFS verzija 3

    NFS u svojoj inkarnaciji kao verzija 3 (NFSv3) ne zadržava svoje stanje (nije sa stanjem), ali NFSv4 zadržava. Ovaj temeljni izraz jedva da ikoga danas iznenađuje, iako je TCP/IP svijet na kojem je izgrađen NFS u velikoj mjeri bez statusa - činjenica koja pomaže tvrtkama za analizu prometa i sigurnosni softver da se osjećaju prilično dobro.

    Protokol NFSv3 morao se oslanjati na nekoliko dodatnih protokola za transparentno montiranje direktorija na udaljenim računalima, kako ne bi ovisio o mehanizmima datotečnog sustava koji se na njima koriste. NFS nije uvijek bio uspješan u tome. Dobar primjer je da je protokol Mount pozvao početni ID datoteke, dok se protokol Network Lock Manager pobrinuo za zaključavanje datoteke. Obje operacije zahtijevaju trenutno stanje, koje NFSv3 nije omogućio. Posljedično, postojale su složene interakcije između slojeva protokola koje nisu odražavale slične mehanizme protoka podataka. Dodatno, kada dodate činjenicu da se kreiranje datoteka i direktorija u Microsoft® Windows® radi potpuno drugačije nego u UNIX-u, situacija postaje još kompliciranija.

    Protokol NFSv3 je trebao koristiti portove za pružanje nekih svojih protokola za podršku; ovo stvara prilično složenu sliku portova, razina protokola i sigurnosnih problema koji dolaze sa svim tim. Danas je ovaj operativni model napušten, a sve operacije koje su prije obavljale implementacije pomoćnog protokola kroz pojedinačne portove upravlja NFSv4 protokol kroz jedan, dobro poznati port.

    Protokol NFSv3 također je bio spreman za rad s datotečnim sustavima koji podržavaju Unicode, prednost koja je ostala donekle teoretska sve do kasnih 1990-ih. Dobro se uklapao u semantiku UNIX datotečnog sustava i bio je razlog za stvaranje konkurentskih implementacija datotečnog sustava kao što su AFS i Samba. Nije iznenađujuće da je podrška za Windows bila loša, ali Samba poslužitelji datoteka omogućili su dijeljenje datoteka za UNIX i Windows sustave.

    NFS verzija 4

    Protokol NFSv4 je, kao što smo primijetili, protokol sa statusom. Nekoliko radikalnih promjena omogućilo je takvo ponašanje. Već smo spomenuli da se pomoćni protokoli moraju pozvati budući da su procesi na razini korisnika eliminirani. Umjesto toga, sve operacije otvaranja datoteka i dosta RPC poziva implementirano je kao operacije datotečnog sustava na razini jezgre.

    Sve verzije NFS-a definirale su svaku jedinicu rada u smislu operacija RPC klijenta i poslužitelja. Svaki NFSv3 zahtjev zahtijevao je prilično značajan broj RPC poziva i poziva otvorenog porta da bi proizveo rezultat. Verzija 4 je to pojednostavila uvođenjem koncepta tzv kompozitni(složena) operacija, koja uključuje velik broj operacija nad objektima datotečnog sustava. Izravni učinak je, naravno, bio da je bilo znatno manje RPC poziva i manje podataka koje je trebalo prenijeti preko mreže, iako je svaki RPC poziv u biti nosio više podataka, obavljajući znatno više posla. Procijenjeno je da RPC pozivi u NFSv3 zahtijevaju pet puta više interakcija klijent-poslužitelj u usporedbi sa složenim RPC procedurama.

    RPC zapravo više nema tu važnost i u biti služi kao omotač preko nekoliko operacija enkapsuliranih u NFSv4 stog. Ova je promjena također učinila stog protokola mnogo manje ovisnim o semantici korištenog datotečnog sustava. Ali to ne znači da su operacije datotečnog sustava drugih operativnih sustava zanemarene: na primjer, dijeljenje resursa u sustavu Windows zahtijeva postojanost stanja kroz pozive za otvaranje resursa. Postojanost stanja ne samo da čini analizu prometa lakšom, već kada se implementira na semantičkoj razini datotečnog sustava, čini operacije datotečnog sustava puno pristupačnijim za kontrolu. Otvoreni pozivi resursa s podacima o stanju omogućuju klijentima da predmemoriraju podatke datoteke i stanje - nešto što bi se inače dogodilo na poslužitelju. U stvarnom životu (gdje su Windows klijenti sveprisutni), omogućavanje transparentnog i jednolikog rada NFS poslužitelja s dijeljenim resursima Windowsa vrijedi vremena koje potrošite na postavljanje NFS konfiguracije.

    Korištenje NFS-a

    Instaliranje NFS-a općenito je slično instaliranju Sambe. Na strani poslužitelja definirate datotečne sustave ili direktorije za izvoz ili dijeljenje; strana klijenta postavlja te direktorije. Jednom kada udaljeni klijent montira NFS direktorij, direktorij postaje dostupan kao i bilo koji drugi direktorij na lokalnom datotečnom sustavu. Postavljanje NFS-a na poslužitelj jednostavan je postupak. Najmanje biste trebali stvoriti ili urediti datoteku /etc/exports i pokrenuti NFS demon. Da biste konfigurirali sigurniju NFS uslugu, trebali biste također urediti datoteke /etc/hosts.allow i /etc/hosts.deny. NFS klijent zahtijeva samo naredbu montiranja. Dodatne informacije i opcije opisane su u Linux® online dokumentaciji (man stranica).

    NFS poslužitelj

    Unosi u datoteci /etc/exports imaju jasan format. Za dijeljenje datotečnog sustava uredite datoteku /etc/exports i opišite datotečni sustav (s parametrima) u sljedećem općem formatu:

    direktorij (ili datotečni sustav) klijent1 (opcija1, opcija2) klijent2 (opcija1, opcija2)

    Uobičajeni parametri

    Postoji nekoliko dostupnih općih opcija za konfiguriranje vaše NFS implementacije. To uključuje:

    • siguran: Ova opcija (zadano) za NFS vezu koristi dostupni TCP/IP port manji od 1024. Određivanje nesigurnog to onemogućuje.
    • rw: Ova postavka omogućuje NFS klijentima pristup za čitanje/pisanje. Zadani pristup je samo za čitanje.
    • asinkroni: Ova opcija može poboljšati performanse, ali također može uzrokovati gubitak podataka ako ponovno pokrenete NFS poslužitelj bez prethodnog zaustavljanja NFS demona. Zadana postavka je sinkronizacija.
    • no_wdelay: Ova opcija onemogućuje odgodu snimanja. Ako je postavljen asinkroni način, NFS zanemaruje ovu postavku.
    • nohide: Ako montirate jedan direktorij na drugi, stari direktorij je obično skriven ili se čini prazan. Kako biste spriječili ovo ponašanje, omogućite parametar skrivanja.
    • bez_provjere_podstabla: Ova opcija onemogućuje nadzor poddirektorija za neke sigurnosne provjere koje možda ne želite zanemariti. Zadana postavka dopušta kontrolu poddirektorija.
    • no_auth_nlm: Ovaj parametar, kada je postavljen na insecure_locks, upućuje NFS demon da ne provodi provjeru autentičnosti tijekom zahtjeva za zaključavanjem. Zadana postavka je auth_nlm ili secure_locks.
    • mp (mountpoint=put) : Kada je ova opcija eksplicitno deklarirana, NSF zahtijeva da se izvezeni direktorij montira.
    • fsid=broj: Ova se opcija obično koristi prilikom postavljanja sustava za oporavak nakon kvara NFS-a. Ako želite implementirati failover za NFS, pogledajte NFS dokumentaciju.

    Mapiranje korisnika

    Kroz NFS mapiranje korisnika, možete identificirati pseudo-korisnika ili stvarnog korisnika i grupu s korisnikom koji pokreće NFS volumen. NFS korisnik ima korisnička ili grupna prava koja mapiranje dopušta. Korištenje jednog (generičkog) korisnika i grupe za NFS volumene pruža razinu sigurnosti i fleksibilnosti bez značajnih administrativnih napora.

    Kada koristite datoteke na NFS-montiranom datotečnom sustavu, korisnički pristup je obično onemogućen. To znači da korisnik pristupa datotekama kao anonimni korisnik koji ima pristup samo za čitanje tim datotekama. Ovo ponašanje je posebno važno za root korisnika. Međutim, postoje situacije u kojima želite da korisnik pristupa datotekama na udaljenom sustavu kao root ili neki drugi određeni korisnik. NFS vam omogućuje da navedete korisnika (prema identifikacijskom broju korisnika (UID) i identifikacijskom broju grupe (GID)) za pristup udaljenim datotekama, a možete spriječiti normalno zadano ponašanje "potiskivanja".

    Opcije korisničkog prikaza uključuju:

    • root_squash: Ova opcija sprječava root korisnika da pristupi montiranom NFS volumenu.
    • no_root_squash: Ova opcija omogućuje root korisniku pristup montiranom NFS volumenu.
    • all_squash: Ova opcija, korisna za javne NFS jedinice, potiskuje sve UID-ove i GID-ove i koristi samo anonimni korisnički račun. Zadana postavka je no_all_squash.
    • anonuid i anongid: Ove postavke mijenjaju UID i GID anonimnog korisnika na navedeni račun.

    Ispis 1 prikazuje primjere /etc/exports unosa.

    Ispis 1. Primjer /etc/exports unosa
    /opt/files 192.168.0.* /opt/files 192.168.0.120 /opt/files 192.168.0.125(rw, all_squash, anonuid=210, anongid=100) /opt/files *(ro, insecure, all_squash)

    Prvi unos izvozi direktorij /opt/files za sve hostove na 192.168.0 mreži. Sljedeći unos izvozi /opt/datoteke za jedno glavno računalo: 192.168.0.120. Treći unos specificira host 192.168.0.125 i odobrava pristup čitanja/pisanja datotekama s korisničkim pravima koja imaju ID korisnika=210 i ID grupe=100. Posljednji unos koristi se za javni imenik i dopušta pristup samo za čitanje i samo pod anonimnim korisničkim računom.

    NFS klijent

    Opomene

    Nakon što upotrijebite NFS za montiranje udaljenog datotečnog sustava, on će također biti dio bilo koje operacije sigurnosne kopije zajedničkog sustava koju izvodite na klijentskom računalu. Ovo ponašanje može imati potencijalno štetne rezultate ako ne isključite montirane direktorije prilikom izrade sigurnosne kopije.

    Za korištenje NFS-a kao klijenta, rpc.statd i portmap moraju biti pokrenuti na klijentskom računalu. Možete pokrenuti ps -ef da provjerite prisutnost ova dva demona. Ako rade (kako bi trebali), možete montirati izvezeni direktorij poslužitelja pomoću sljedeće opće naredbe:

    poslužitelj montiranja:direktorij lokalna točka montiranja

    Općenito govoreći, trebali biste biti pokrenuti kao root kada montirate datotečni sustav. Na udaljenom računalu možete koristiti sljedeću naredbu (pod pretpostavkom da NFS poslužitelj ima IP adresu 192.168.0.100):

    montiranje 192.168.0.100:/opt/files/mnt

    Vaša distribucija sustava može zahtijevati da navedete vrstu datotečnog sustava kada je montirate. Ako je tako, koristite naredbu:

    montiranje -t nfs 192.168.0.100:/opt/datoteke /mnt

    Udaljeni direktorij trebao bi se montirati bez ikakvih problema ako ste ispravno konfigurirali poslužitelj. Sada pokrenite naredbu cd za promjenu u /mnt direktorij, zatim naredbu ls za pregled datoteka. Da biste ovo montiranje učinili trajnim, morate urediti datoteku /etc/fstab i stvoriti unos sličan sljedećem:

    192.168.0.100:/opt/files /mnt nfs rw 0 0

    Bilješka: Za više informacija o /etc/fstab unosima, pogledajte fstab online pomoć.

    Kritika NFS-a

    Kritika vodi do poboljšanja

    Kritike vezane uz sigurnost NFS-a bile su razlog za mnoga poboljšanja u NSFv4. Tvorci nove verzije poduzeli su stvarne mjere za poboljšanje sigurnosti interakcije klijent-poslužitelj. Naime, odlučili su implementirati potpuno novi model sigurnosnog sustava.

    Da biste razumjeli model sigurnosnog sustava, trebali biste se upoznati sa sučeljem za programiranje aplikacije Generičke sigurnosne usluge (GSS-API) verzija 2, revizija 1. GSS-API je u potpunosti opisan u RFC 2743, koji je, nažalost, jedan od najtežih RFC dokumenata za razumijevanje.

    Iz našeg iskustva s NFSv4 znamo da nije lako napraviti mrežni datotečni sustav neovisan o operativnom sustavu. Ali još je teže sva područja sigurnosnog sustava učiniti neovisnima o operativnom sustavu i mrežnim protokolima. Trebamo oboje, budući da NFS mora biti u stanju nositi se s prilično velikim brojem korisničkih operacija i to bez suočavanja sa specifičnostima komunikacije mrežnog protokola.

    Veze između NFS klijenata i poslužitelja zaštićene su takozvanim (prilično površno) sigurnosnim sustavom snažna RPC. NFSv4 koristi standard Open Network Computing Remote Procedure Call (ONCRPC) definiran u RFC 1831. Sigurnosni sustav je morao biti ojačan, pa je umjesto jednostavne provjere autentičnosti (poznate kao AUTH_SYS) kao obavezni dio protokola NFSv4, vrste sigurnosnog sustava temeljenog na GSS-API poznatom kao RPCSEC_GSS. Najvažniji sigurnosni mehanizmi dostupni u NFSv4 uključuju Kerberos verziju 5 i LIPKEY.

    Dok Kerberos ima ograničenja kada se koristi preko Interneta, LIPKEY ima lijepu prednost jer se ponaša kao Secure Sockets Layer (SSL), traži od korisnika njihova korisnička imena i lozinke dok izbjegava TCP-ovu ovisnost o SSL-u, ovisnost koju NFSv4 ne dijeli. Možete konfigurirati NFS za implementaciju sigurnosnih varijacija ako RPCSEC_GSS nije potreban. Prethodne verzije NFS-a nisu imale ovu mogućnost i stoga nisu mogle pružiti snažnu sigurnost, integritet podataka, zahtjeve za autentifikaciju ili vrste šifriranja.

    Protokol NFSv3 dobio je značajne sigurnosne kritike. Kad bi NFSv3 poslužitelji radili preko TCP-a, bilo bi apsolutno moguće pokrenuti NFSv3 mreže preko Interneta. Nažalost, zahtijevalo je i otvaranje višestrukih portova, što je uvelo nekoliko sigurnosnih rupa u publici. Učinivši port 2049 obaveznim za NFS, postalo je moguće koristiti NFSv4 s vatrozidima bez obraćanja previše pozornosti na to koje portove slušaju drugi protokoli, poput protokola za montiranje. Stoga je uklanjanje protokola Mount imalo nekoliko pozitivnih učinaka:

    • Potrebni jaki mehanizmi provjere autentičnosti: NFSv4 je učinio jake mehanizme provjere autentičnosti obaveznim. Varijacije Kerberosa prilično su česte. Mehanizam javnih ključeva niže infrastrukture (LIPKEY) također mora biti podržan. NFSv3 nikada nije podržavao ništa više od standardne UNIX enkripcije za autentifikaciju pristupa - to je stvorilo velike sigurnosne probleme u velikim mrežama.
    • Obavezne sheme popisa kontrole pristupa (ACL) u stilu Microsoft Windows NT: Iako je NFSv3 dopuštao jaku enkripciju za provjeru autentičnosti, nije koristio ACL pristupne sheme u stilu Windows NT. ACL-ovi u stilu sučelja prijenosnog operativnog sustava (POSIX) ponekad su implementirani, ali nikada nisu bili općenito prihvaćeni. NFSv4 je ACL sheme u stilu Windows NT učinio obaveznim.
    • Ugovorni mehanizmi i stilovi autentifikacije: NFSv4 je uveo mogućnost pregovaranja o mehanizmima i stilovima provjere autentičnosti. U NSFv3 nije bilo moguće učiniti više od ručnog određivanja stila šifriranja koji će se koristiti. Administrator sustava tada bi pregovarao o enkripciji i sigurnosnim protokolima.

    Je li NFS još uvijek bez premca?

    NFSv4 zamjenjuje NFSv3 na većini UNIX i Linux sustava. Kao mrežni datotečni sustav, NSFv4 ima nekoliko konkurenata. Održiv konkurent bio bi Common Internet File System (CIFS)/Server Message Block (SMB), s obzirom da je prisutan u svim verzijama Windowsa i (trenutačno) Linuxa. AFS nikada nije imao veliki komercijalni utjecaj; naglašava elemente distribuiranih datotečnih sustava koji olakšavaju migraciju i replikaciju podataka.

    Verzije NFS-a spremne za Linux objavljene su nakon što je kernel dostigao verziju 2.2, ali jedan od češćih kvarova verzija kernela Linuxa bio je taj što je Linux prilično kasno prihvatio NFSv3. Zapravo, prošlo je dosta vremena prije nego što je Linux u potpunosti podržao NSFv3. S pojavom NSFv4, ovaj nedostatak je brzo eliminiran i puna podrška za NSFv4 implementirana je ne samo u Solarisu, AIX-u i FreeBSD-u.

    NFS se sada smatra zrelom tehnologijom, koja ima značajnu prednost jer je sigurna i praktična - većina korisnika smatra prikladnim korištenje jedne sigurne prijave za pristup mreži i korištenje njezinih mogućnosti, čak i kada se datoteke i aplikacije nalaze na različitim sustavima. Iako se ovo može činiti kao nedostatak u usporedbi s distribuiranim datotečnim sustavima koji skrivaju strukture sustava od korisnika, imajte na umu da mnoge aplikacije koriste datoteke koje se nalaze na različitim operativnim sustavima, a time i na različitim računalima. NFS olakšava rad s različitim operativnim sustavima bez potrebe da se previše brinete o semantici datotečnog sustava i karakteristikama performansi.

    NFS: zgodan i obećavajući mrežni datotečni sustav

    Mrežni datotečni sustav je mrežna apstrakcija na vrhu uobičajenog datotečnog sustava koja omogućuje udaljenom klijentu pristup preko mreže na isti način kao kada pristupa lokalnim datotečnim sustavima. Iako NFS nije bio prvi mrežni datotečni sustav, razvio se u najsposobniji i najpopularniji mrežni datotečni sustav u UNIX®-u danas. NFS omogućuje većem broju korisnika dijeljenje zajedničkog datotečnog sustava i centralizira podatke kako bi se minimalizirao prostor na disku potreban za njihovu pohranu.

    Ovaj članak započinje kratkim pregledom povijesti NFS-a, a zatim prelazi na istraživanje arhitekture NFS-a i načina na koji bi se mogao razvijati u budućnosti.

    Kratka povijest NFS-a

    Prvi mrežni datotečni sustav zvao se FAL (File Access Listener) i razvio ga je 1976. DEC (Digital Equipment Corporation). Bila je to implementacija DAP protokola (Data Access Protocol) i dio je paketa protokola DECnet. Kao i za TCP/IP, DEC je objavio specifikacije za svoje mrežne protokole, uključujući DAP protokol.

    NFS je bio prvi moderni mrežni datotečni sustav izgrađen na vrhu IP protokola. Njegov prototip može se smatrati eksperimentalnim datotečnim sustavom razvijenim u Sun Microsystemsu ranih 80-ih. S obzirom na popularnost ovog rješenja, NFS protokol uveden je kao RFC specifikacija i kasnije se razvio u NFSv2. NFS se brzo etablirao kao standard zahvaljujući svojoj sposobnosti međusobnog rada s drugim klijentima i poslužiteljima.

    Standard je naknadno ažuriran na NFSv3, definiran u RFC 1813. Ova verzija protokola bila je skalabilnija od prethodnih verzija i podržavala je veće veličine datoteka (preko 2 GB), asinkrono pisanje i TCP kao transportni protokol. NFSv3 je postavio smjer razvoja datotečnih sustava za mreže širokog područja (WAN). Godine 2000. RFC 3010 (revidiran kao RFC 3530) uveo je NFS u poslovno okruženje. Sun je predstavio sigurniji NFSv4 s podrškom za praćenje stanja (prethodne verzije NFS-a nisu podržavale pohranu stanja, tj. bile su klasificirane kao bez stanja). Trenutačno je najnovija verzija NFS-a verzija 4.1, definirana u RFC 5661, koja dodaje protokolu proširenjem pNFS dodana je podrška za paralelni pristup za distribuirane poslužitelje.

    Povijest NFS-a, uključujući specifične RFC-ove koji opisuju njegove verzije, prikazana je na slici 1.


    Iznenađujuće, NFS se razvijao gotovo 30 godina. To je iznimno stabilan i prenosiv mrežni datotečni sustav s izvanrednom skalabilnošću, performansama i značajkama kvalitete usluge. Kako se brzine povećavaju, a kašnjenje smanjuje pri komunikaciji unutar mreže, NFS je i dalje popularan način implementacije datotečnog sustava unutar mreže. Čak i u slučaju lokalnih mreža, virtualizacija potiče pohranjivanje podataka na mreži kako bi se virtualnim strojevima pružila dodatna mobilnost. NFS također podržava najnovije modele računalnog okruženja usmjerene na optimizaciju virtualnih infrastruktura.

    NFS arhitektura

    NFS koristi standardni klijent-poslužitelj arhitektonski model (kao što je prikazano na slici 2). Poslužitelj je odgovoran za implementaciju zajedničkog datotečnog sustava i pohranu na koju se klijenti povezuju. Klijent implementira korisničko sučelje na zajednički datotečni sustav montiran unutar klijentovog lokalnog datotečnog prostora.

    Slika 2. Implementacija modela klijent-poslužitelj u NFS arhitekturi

    U Linuxu®, virtualni prekidač sustava datoteka (VFS) pruža sredstva za podršku više sustava datoteka (na primjer, sustav datoteka ISO 9660 na CD-ROM-u i sustav datoteka ext3fs na lokalnom tvrdom disku) istovremeno na jednom glavnom računalu . Virtualna sklopka određuje kojem pogonu je zahtjev upućen i prema tome koji se datotečni sustav treba koristiti za obradu zahtjeva. Stoga NFS ima istu kompatibilnost kao i drugi datotečni sustavi koji se koriste u Linuxu. Jedina razlika s NFS-om je ta što umjesto da se obrađuju lokalno na glavnom računalu, I/O zahtjevi mogu biti poslani mreži na izvršenje.

    VFS utvrđuje da je primljeni zahtjev NFS i prosljeđuje ga NFS rukovatelju koji se nalazi u kernelu. NFS rukovatelj obrađuje I/O zahtjev i prevodi ga u NFS proceduru (OTVORI, PRISTUP, STVORI, ČITAJ, ZATVORI, UKLONI, itd.). Ovi postupci, opisani u zasebnoj RFC specifikaciji, definiraju ponašanje NFS protokola. Potrebna procedura odabire se ovisno o zahtjevu i izvršava se korištenjem RPC (remote procedure call) tehnologije. Kao što mu ime govori, RPC dopušta pozivanje procedura između različitih sustava. RPC usluga spaja NFS zahtjev s njegovim argumentima i šalje rezultat odgovarajućem udaljenom hostu, zatim nadzire primitak i obradu odgovora kako bi ga vratio podnositelju zahtjeva.

    RPC također uključuje važan XDR sloj ( vanjski prikaz podataka- neovisno predstavljanje podataka), osiguravajući da svi korisnici NFS-a koriste isti format za iste tipove podataka. Kada platforma pošalje zahtjev, vrsta podataka koju koristi može se razlikovati od vrste podataka koja se koristi na hostu koji obrađuje zahtjev. XDR tehnologija brine se za posao pretvaranja tipova u standardni prikaz (XDR) tako da platforme koje koriste različite arhitekture mogu međusobno raditi i dijeliti datotečne sustave. XDR definira bitni format za tipove kao što je float i poredak bajtova za tipove kao što su nizovi konstantne i promjenjive duljine. Iako je XDR prvenstveno poznat po svojoj upotrebi u NFS-u, ova specifikacija može biti korisna u svim slučajevima kada morate raditi u istom okruženju s različitim arhitekturama.

    Nakon što je XDR preveo podatke u standardni prikaz, zahtjev se šalje preko mreže koristeći određeni transportni protokol. Rane implementacije NFS-a koristile su UDP, ali danas se za veću pouzdanost koristi TCP.

    Sličan algoritam koristi se na strani NFS poslužitelja. Zahtjev putuje uz mrežni stog kroz RPC/XDR sloj (za pretvorbu tipova podataka u skladu s arhitekturom poslužitelja) i u NFS poslužitelj, koji je odgovoran za obradu zahtjeva. Tamo se zahtjev prosljeđuje NFS demonu da odredi ciljni datotečni sustav kojem je upućen, a zatim ponovno ide VFS-u za pristup tom datotečnom sustavu na lokalnom disku. Kompletan dijagram ovog procesa prikazan je na slici 3. U ovom slučaju, lokalni datotečni sustav poslužitelja je standardni Linux datotečni sustav, na primjer, ext4fs. U biti, NFS nije datotečni sustav u tradicionalnom smislu riječi, već protokol za udaljeni pristup datotečnim sustavima.


    Za mreže s dugom latencijom, NFSv4 nudi poseban složeni postupak ( složeni postupak). Ovaj postupak vam omogućuje postavljanje više RPC poziva unutar jednog zahtjeva kako biste smanjili troškove slanja zahtjeva preko mreže. Ova procedura također implementira mehanizam funkcije povratnog poziva za primanje odgovora.

    NFS protokol

    Kada klijent počne koristiti NFS, prva radnja je izvođenje operacije montiranja, a to je montiranje udaljenog sustava datoteka u prostor lokalnog sustava datoteka. Ovaj proces počinje pozivom procedure montiranja (jedna od funkcija Linux sustava), koja se preusmjerava kroz VFS na NFS komponentu. Zatim, RPC poziv funkciji get_port na udaljenom poslužitelju određuje broj porta koji će se koristiti za montiranje, a klijent šalje zahtjev za montiranje putem RPC-a. Ovaj zahtjev na strani poslužitelja obrađuje poseban demon rpc.mountd, koji je odgovoran za protokol montiranja ( protokol montiranja). Daemon provjerava je li datotečni sustav koji je klijent zatražio na popisu sustava dostupnih na danom poslužitelju. Ako zahtijevani sustav postoji i klijent mu ima pristup, RPC odgovor za montiranje specificira deskriptor datotečnog sustava. Klijent zadržava informacije o lokalnim i udaljenim točkama montiranja i može postavljati I/O zahtjeve. Protokol montiranja nije siguran sa sigurnosnog stajališta, pa NFSv4 umjesto toga koristi interne RPC pozive, koji također mogu upravljati točkama montiranja.

    Da biste pročitali datoteku, prvo je morate otvoriti. Ne postoji OPEN procedura u RPC-u; umjesto toga, klijent jednostavno provjerava da navedena datoteka i direktorij postoje na montiranom datotečnom sustavu. Klijent započinje slanjem GETATTR RPC zahtjeva direktoriju, koji vraća atribute direktorija ili indikator da direktorij ne postoji. Zatim, kako bi provjerio prisutnost datoteke, klijent izdaje LOOKUP RPC zahtjev. Ako datoteka postoji, na njoj se postavlja GETATTR RPC zahtjev kako bi se saznali atributi datoteke. Koristeći informacije dobivene iz uspješnih LOOKUP i GETATTR poziva, klijent stvara rukovanje datotekom koja se daje korisniku za buduće zahtjeve.

    Nakon što je datoteka identificirana na udaljenom datotečnom sustavu, klijent može izdati RPC READ zahtjeve. Ovaj se zahtjev sastoji od deskriptora datoteke, stanja, pomaka i broja bajtova za čitanje. Klijent koristi stanje ( država) kako bi se utvrdilo može li se operacija izvesti u ovom trenutku, tj. Je li datoteka zaključana? Pomak ( pomaknuti) označava na kojoj poziciji započeti čitanje, a brojač bajtova ( računati) određuje koliko bajtova treba pročitati. Kao rezultat poziva RPC READ, poslužitelj ne vraća uvijek onoliko bajtova koliko je zatraženo, ali zajedno s vraćenim podacima uvijek izvještava koliko je bajtova poslano klijentu.

    Inovacije u NFS-u

    Dvije najnovije verzije NFS-a su od najvećeg interesa - 4 i 4.1, kao primjeri kojih možete proučiti najvažnije aspekte evolucije NFS tehnologije.

    Prije nego što je NFSv4 bio dostupan za obavljanje zadataka upravljanja datotekama kao što su montiranje, zaključavanje itd. postojali su posebni dodatni protokoli. U NFSv4, proces upravljanja datotekama je pojednostavljen na jedan protokol; Osim toga, počevši od ove verzije, UDP se više ne koristi kao transportni protokol. NFSv4 uključuje podršku za UNIX i Windows® semantiku pristupa datotekama, omogućujući NFS-u prirodnu integraciju u druge operativne sustave.

    NFSv4.1 uveo je koncept paralelni NFS(paralelni NFS - pNFS). Kako bi pružio veće razine skalabilnosti, NFSv4.1 implementira arhitekturu u kojoj podaci i metapodaci ( obilježava) distribuiraju se po uređajima na sličan način kao što se to radi u klasteriranim datotečnim sustavima. Kao što je prikazano u , pNFS dijeli ekosustav u tri komponente: klijent, poslužitelj i pohrana. U tom slučaju pojavljuju se dva kanala: jedan za prijenos podataka, a drugi za prijenos upravljačkih naredbi. pNFS odvaja podatke od metapodataka koji ih opisuju, pružajući dvokanalnu arhitekturu. Kada klijent želi pristupiti datoteci, poslužitelj mu šalje metapodatke s "markupom". Metapodaci sadrže informacije o lokaciji datoteke na uređajima za pohranu. Jednom kada klijent dobije te informacije, može izravno pristupiti pohrani bez potrebe za interakcijom s poslužiteljem, poboljšavajući skalabilnost i performanse. Kada klijent završi s radom s datotekom, potvrđuje promjene napravljene na datoteci i njezinu "oznaku". Ako je potrebno, poslužitelj može od klijenta zatražiti metapodatke s oznakom.

    S pojavom pNFS-a, NFS protokolu je dodano nekoliko novih operacija koje podržavaju takav mehanizam. Metoda LayoutGet koristi se za dohvaćanje metapodataka s poslužitelja, metoda LayoutReturn "oslobađa" metapodatke koje je "uhvatio" klijent, a metoda LayoutCommit učitava "izgled" primljen od klijenta u pohranu kako bi bio dostupan drugim korisnicima. Poslužitelj može opozvati metapodatke od klijenta pomoću metode LayoutRecall. "Označeni" metapodaci distribuiraju se na više uređaja za pohranu radi pružanja paralelnog pristupa i visokih performansi.


    Podaci i metapodaci pohranjuju se na uređajima za pohranu. Klijenti mogu izvršavati izravne I/O zahtjeve na temelju primljene oznake, a NFSv4.1 poslužitelj pohranjuje i upravlja metapodacima. Ova funkcionalnost sama po sebi nije nova, ali pNFS je dodao podršku za različite metode pristupa uređajima za pohranu. Danas pNFS podržava korištenje blok protokola (Fibre Channel), objektnih protokola i samog NFS-a (čak ni u pNFS obliku).

    Razvoj NFS-a se nastavlja, au rujnu 2010. objavljeni su zahtjevi za NFSv4.2. Neke od inovacija odnose se na stalnu migraciju tehnologija za pohranu podataka prema virtualizaciji. Na primjer, u virtualnim okruženjima s hipervizorom vrlo je vjerojatno da će doći do dupliciranja podataka (više operativnih sustava koji čitaju/zapisuju i spremaju iste podatke). Zbog toga je poželjno da sustav pohrane kao cjelina razumije gdje dolazi do dupliciranja. Ovaj pristup pomoći će uštedjeti prostor predmemorije klijenta i ukupni kapacitet pohrane. NFSv4.2 predlaže korištenje "blok karte zajedničkih blokova" za rješavanje ovog problema. Kako moderni sustavi za pohranu sve više dolaze opremljeni vlastitom internom računalnom snagom, uvodi se kopiranje na strani poslužitelja kako bi se smanjio teret kopiranja podataka preko interne mreže kada se to može učiniti učinkovito na samom uređaju za pohranu. Druge inovacije uključuju predmemoriju pod-datoteka za flash memoriju i preporuke za I/O podešavanje na strani klijenta (kao što je korištenje mapadvise).

    NFS alternative

    Iako je NFS najpopularniji mrežni datotečni sustav u UNIX-u i Linuxu, postoje i drugi mrežni datotečni sustavi. Na Windows® platformi najčešće se koristi SMB, poznat i kao CIFS; međutim, Windows OS također podržava NFS, kao što Linux podržava SMB.

    Jedan od najnovijih distribuiranih datotečnih sustava podržanih u Linuxu, Ceph, osmišljen je od samog početka da bude sustav datoteka koji je tolerantan na greške i koji je kompatibilan s POSIX-om. Više informacija o Cephu možete pronaći u odjeljku.

    Također je vrijedno spomenuti datotečne sustave OpenAFS (Open Source verzija Andrew distribuiranog datotečnog sustava, razvijena na Sveučilištu Carnegie Mellon i IBM Corporation), GlusterFS (distribuirani datotečni sustav opće namjene za organiziranje skalabilne pohrane podataka) i Luster (masivno paralelni mrežni datotečni sustav za cluster rješenja). Svi ovi sustavi otvorenog koda mogu se koristiti za izgradnju distribuirane pohrane.

    Zaključak

    Razvoj NFS datotečnog sustava se nastavlja. Slično operativnom sustavu Linux, koji može podržati i low-end, ugrađena i high-end rješenja, NFS pruža arhitekturu za skalabilna rješenja za pohranu prikladna za pojedince i organizacije. Kada pogledate put koji je NFS već prošao i izglede za njegov budući razvoj, postaje jasno da će ovaj datotečni sustav nastaviti mijenjati način na koji razmišljamo o tome kako se tehnologije za pohranu datoteka implementiraju i koriste.

    NFS ili mrežni datotečni sustav popularan je protokol mrežnog datotečnog sustava koji korisnicima omogućuje montiranje udaljenih mrežnih direktorija na svom računalu i prijenos datoteka između poslužitelja. Možete koristiti prostor na disku na drugom računalu za svoje datoteke i raditi s datotekama koje se nalaze na drugim poslužiteljima. U biti, ovo je alternativa Windows dijeljenju za Linux, za razliku od Sambe, implementirano je na razini kernela i radi stabilnije.

    Ovaj članak će pokriti instaliranje nfs-a na Ubuntu 16.04. Pogledat ćemo instaliranje svih potrebnih komponenti, postavljanje zajedničke mape i povezivanje mrežnih mapa.

    Kao što je već spomenuto, NFS je mrežni datotečni sustav. Za rad vam je potreban poslužitelj koji će ugostiti dijeljenu mapu i klijente koji mogu montirati mrežnu mapu kao običan disk u sustavu. Za razliku od drugih protokola, NFS omogućuje transparentan pristup udaljenim datotekama. Programi će vidjeti datoteke kao u običnom datotečnom sustavu i raditi s njima kao s lokalnim datotekama, nfs vraća samo traženi dio datoteke, umjesto cijele datoteke, tako da će ovaj datotečni sustav savršeno raditi na sustavima s brzim internetom ili na lokalna mreža.

    Instaliranje NFS komponenti

    Prije nego što možemo raditi s NFS-om, morat ćemo instalirati nekoliko programa. Na stroju koji će biti poslužitelj potrebno je instalirati paket nfs-kernel-server koji će se koristiti za otvaranje nfs shareova u ubuntu 16.04. Da biste to učinili, pokrenite:

    sudo apt instalirajte nfs-kernel-server

    Sada provjerimo je li poslužitelj ispravno instaliran. NFS usluga osluškuje veze za TCP i UDP na portu 2049. Možete vidjeti jesu li ti portovi stvarno u upotrebi pomoću naredbe:

    rpcinfo -p | grep nfs

    Također je važno provjeriti je li NFS podržan na razini kernela:

    cat /proc/datotečni sustavi | grep nfs

    Vidimo da radi, ali ako ne radi, morate ručno učitati nfs kernel modul:

    Dodajmo i nfs u pokretanje:

    sudo systemctl omogući nfs

    Morate instalirati paket nfs-common na klijentskom računalu da biste mogli raditi s ovim datotečnim sustavom. Ne morate instalirati komponente poslužitelja, dovoljan je samo ovaj paket:

    sudo apt instalirajte nfs-common

    Postavljanje NFS poslužitelja na Ubuntu

    Možemo otvoriti NFS pristup bilo kojoj mapi, ali napravimo novu za tu svrhu:

    klijentska mapa_adresa (opcije)

    Adresa mape je mapa kojoj treba omogućiti pristup preko mreže. Klijent - IP adresa ili mrežna adresa s koje se ovoj mapi može pristupiti. Ali s opcijama je malo kompliciranije. Pogledajmo neke od njih:

    • rw- dopustiti čitanje i pisanje u ovoj mapi
    • ro- dopustiti samo čitanje
    • sinkronizacija- odgovori na sljedeće zahtjeve samo kada su podaci spremljeni na disk (zadano)
    • asinkroni- nemojte blokirati veze dok se podaci zapisuju na disk
    • siguran- koristite samo portove ispod 1024 za povezivanje
    • nesiguran- koristite bilo koje priključke
    • nohide- nemojte skrivati ​​poddirektorije kada otvarate pristup nekoliko direktorija
    • korijen_tikve- zamijenite zahtjeve od korijena anonimnim
    • sve_squash- pretvorite sve zahtjeve u anonimne
    • anonuid I anongid- specificira uid i gid za anonimnog korisnika.

    Na primjer, za našu mapu ovaj redak može izgledati ovako:

    /var/nfs 127.0.0.1(rw,sync,no_subtree_check)

    Nakon što je sve konfigurirano, sve što je preostalo je ažurirati NFS tablicu izvoza:

    sudo exportfs -a

    To je sve, otvaranje nfs shareova u ubuntu 16.04 je završeno. Pokušajmo sada konfigurirati klijenta i pokušati ga montirati.

    NFS veza

    U današnjem članku nećemo se detaljno baviti ovim pitanjem. Ovo je prilično velika tema koja zaslužuje svoj članak. Ali ipak ću reći nekoliko riječi.

    Za montiranje mrežne mape ne treba vam nikakav Ubuntu nfs klijent, samo koristite naredbu montiranja:

    sudo montiranje 127.0.0.1:/var/nfs/ /mnt/

    Sada možete pokušati stvoriti datoteku u povezanom direktoriju:

    Također ćemo pogledati montirane datotečne sustave pomoću df-a:

    127.0.0.1:/var/nfs 30G 6.7G 22G 24% /mj.

    Da biste onemogućili ovaj datotečni sustav, samo upotrijebite standardni umount:

    sudo umount /mnt/

    zaključke

    U ovom se članku raspravljalo o postavljanju nfs ubuntu 16.04, kao što vidite, sve je učinjeno vrlo jednostavno i transparentno. Povezivanje NFS shareova obavlja se u nekoliko klikova standardnim naredbama, a otvaranje nfs shareova u ubuntu 16.04 nije puno kompliciranije od povezivanja. Ako imate pitanja, napišite u komentarima!

    Povezane objave:


    Najbolji članci na temu