Netværks filsystem
Network File System ( NFS ) er en protokol til netværksadgang til filsystemer , oprindeligt udviklet af Sun Microsystems i 1984 . Protokollen for fjernprocedureopkald ( ONC RPC , engelsk Open Network Computing Remote Procedure Call [1] ) tages som grundlag . Giver dig mulighed for at montere (montere) eksterne filsystemer over et netværk.
NFS er abstraheret fra både server- og klientfilsystemtyper. Der er mange implementeringer af NFS-servere og -klienter til forskellige operativsystemer og hardwarearkitekturer. Den mest modne version af NFS er v.4 [2] , som understøtter forskellige metoder til godkendelse (især Kerberos og LIPKEY , der bruger RPCSEC GSS -protokollen ) og adgangskontrollister (både POSIX- og Windows - typer).
NFS giver klienter gennemsigtig adgang til filer og serverens filsystem. I modsætning til FTP har NFS-protokollen kun adgang til de dele af filen, der tilgås af processen, og dens største fordel er, at den gør denne adgang gennemsigtig. Det betyder, at ethvert klientprogram, der kan arbejde med en lokal fil, lige så godt kan arbejde med en NFS-fil, uden ændringer i selve programmet.
NFS-klienter får adgang til filer på en NFS-server ved at sende RPC -anmodninger til serveren. Dette kan implementeres ved hjælp af normale brugerprocesser, nemlig NFS-klienten kan være en brugerproces, der foretager specifikke RPC-kald til serveren, som også kan være en brugerproces.
En vigtig del af den seneste version af NFS-standarden (v4.1) er pNFS- specifikationen , som har til formål at give en parallel implementering af fildeling, der øger dataoverførselshastighederne i forhold til størrelsen og graden af parallelitet af systemet.
Udviklingsmål
De oprindelige krav til udviklingen af NFS var:
- potentiel support til forskellige operativsystemer (ikke kun UNIX ), så NFS-servere og -klienter kan implementeres på forskellige operativsystemer;
- protokollen bør ikke afhænge af nogen bestemt hardware;
- simple gendannelsesmekanismer bør implementeres i tilfælde af server- eller klientfejl;
- applikationer bør have gennemsigtig adgang til fjernfiler uden brug af specielle stinavne eller biblioteker og uden omkompilering;
- for UNIX-klienter skal UNIX-semantik understøttes;
- NFS-ydelsen bør være sammenlignelig med ydeevnen af lokale drev;
- implementeringen bør ikke være afhængig af køretøjer.
Komponenter af NFS
Implementeringen af NFS består af flere komponenter. Nogle af dem er lokaliseret enten på serveren eller på klienten, og nogle bruges på begge sider af forbindelsen. Nogle komponenter er ikke nødvendige for grundlæggende funktionalitet, men er en del af den udvidede NFS-grænseflade.
NFS-protokollen definerer et sæt anmodninger (operationer), der kan sendes af en klient til en server, samt et sæt argumenter og returværdier for hver af disse anmodninger. Version 1 af denne protokol eksisterede kun i Sun Microsystems tarme og blev aldrig frigivet. Alle NFS-implementeringer (inklusive NFSv3) understøtter NFS version 2 (NFSv2), som først blev udgivet i 1985 med SunOS 2.0. Version 3 af protokollen blev offentliggjort i 1993 og implementeret af flere leverandører.
RPC -protokollen (Remote Procedure Call ) definerer formatet for al kommunikation mellem en klient og en server. Hver NFS-anmodning sendes som en RPC-pakke.
Ekstern datarepræsentation (XDR ) giver en maskinuafhængig metode til kodning af data til transmission over et netværk. Alle RPC-anmodninger bruger XDR-kodning til at overføre data. XDR og RPC bruges til at implementere mange andre tjenester udover NFS.
NFS-serverkoden er ansvarlig for at håndtere alle klientanmodninger og give adgang til eksporterede filsystemer. NFS-klientkoden implementerer al klientsystemadgang til fjernfiler ved at sende en eller flere RPC-anmodninger til serveren.
Monteringsprotokollen definerer semantikken for montering og afmontering af NFS-filsystemer. NFS bruger adskillige baggrundsdæmonprocesser . På serveren lytter et sæt nfsd-dæmoner efter og reagerer på anmodninger fra NFS-klienter. Mountd-dæmonen håndterer monteringsanmodninger. På klienten håndterer et sæt biod-dæmoner asynkron NFS-filblok I/O.
Network Lock Manager (NLM) og Network Status Monitor (NSM) giver sammen midlerne til at låse filer på netværket. Selvom disse faciliteter ikke formelt er forbundet med NFS, kan de findes i de fleste NFS-implementeringer. De leverer tjenester, der ikke er mulige i den underliggende protokol. NLM og NSM implementerer serverfunktionalitet ved hjælp af henholdsvis lockd- og statd-dæmonerne.
Versioner
Den første version [3] blev kun brugt internt hos Sun til eksperimentelle formål.
Version 2 [3] (NFSv2) udgivet i marts 1989, kørte oprindeligt fuldstændig over UDP-protokollen . Udviklerne har valgt ikke at gemme interne tilstandsdata inde i protokollen, såsom låsning implementeret uden for den underliggende protokol. De involverede i skabelsen af NFS version 2 er Rusty Sandberg , Bob Lyon , Bill Joy og Steve Kleiman .
NFSv3 [4] blev udgivet i juni 1995, den tilføjede understøttelse af fildeskriptorer med variabel størrelse op til 64 bytes (i version 2 - en fast størrelse array på 32 bytes), fjernede grænsen på 8192 bytes i RPC læse- og skriveopkald (således, størrelsen af den overførte blok i opkald er kun begrænset af UDP-datagramgrænsen - 65535 bytes), understøttelse af store filer er implementeret, asynkrone opkald til skriveoperationer understøttes, ACCESS (kontrol af filadgangsrettigheder), MKNOD (oprettelse af en speciel Unix fil) tilføjes til READ- og WRITE-procedurerne ), READDIRPLUS (returnerer navnene på filer i en mappe sammen med deres attributter), FSINFO (returnerer statistisk information om filsystemet), FSSTAT (returnerer dynamisk information om filsystemet), PATHCONF (returnerer POSIX.1-information om en fil) og COMMIT (forpligter tidligere lavet asynkrone skrivninger til permanent lager).
På tidspunktet for introduktionen af version 3 var der en stigning i popularitet blandt udviklerne af TCP -protokollen . Nogle uafhængige udviklere har uafhængigt tilføjet understøttelse af TCP til NFS version 2 som en transport, Sun Microsystems har tilføjet TCP-understøttelse til NFS i en af tilføjelserne til version 3. Med TCP-understøttelse blev det muligt at bruge NFS over WAN'er .
NFSv4 [2] blev udgivet i december 2000, påvirket af AFS og CIFS , og inkluderer ydeevne- og sikkerhedsforbedringer. Version 4 var den første version udviklet i samarbejde med Internet Engineering Task Force ( IETF ). NFS version v4.1 blev godkendt af IESG i januar 2010 [5] (den nye specifikation på 612 sider er blevet kendt som det længste dokument godkendt af IETF). En vigtig nyskabelse i version 4.1 er specifikationen pNFS - Parallel NFS, en mekanisme til NFS klient parallel adgang til data fra flere distribuerede NFS-servere. Tilstedeværelsen af en sådan mekanisme i netværksfilsystemstandarden vil hjælpe med at opbygge distribuerede cloud -lagrings- og informationssystemer.
NFS version 4.2 RFC 7862 blev udgivet i november 2016 og inkluderer nye funktioner: kloning og kopiering på serversiden, applikations-I/O-anbefalinger, sparse filer , pladsreservation, applikationsdatablok (ADB) mærket NFS med sec_label-attribut, der tilpasser sig til enhver MAC sikkerhedssystem og to nye operationer til pNFS (LAYOUTERROR og LAYOUTSTATS).
Andre moduler
WebNFS er en udvidelse til NFS version 2 og 3, der muliggør lettere integration i webbrowsere og giver mulighed for at arbejde gennem en firewall . Forskellige tredjepartsprotokoller er blevet forbundet med NFS, herunder:
Network Lock Manager (NLM) og Network Status Monitor (NSM) giver sammen midlerne til at låse filer på netværket. Selvom disse faciliteter ikke formelt er forbundet med NFS, kan de findes i de fleste NFS-implementeringer. De leverer tjenester, der ikke er mulige i den underliggende protokol. NLM og NSM implementerer serverfunktionalitet ved hjælp af henholdsvis lockd- og statd-dæmonerne.
Remote Quota Information Protocol (RQUOTAD) (NFS giver brugerne mulighed for at se diskkvoten på en ekstern NFS-server).
Platforme
Selvom NFS er mest almindeligt brugt på Unix-lignende systemer, kan det også bruges på andre operativsystemer såsom Mac OS Classic , OpenVMS , Microsoft Windows , Novell NetWare og IBM i .
Typiske NFS-klient- og NFS-serverindstillinger
- Lokale og NFS-filer er ligeligt repræsenteret for klienten, kernen bestemmer, hvornår en fil er åben.
- NFS-klienten sender RPC-anmodninger til NFS-serveren gennem TCP/IP-stakken . NFS bruger normalt UDP, men nyere implementeringer kan bruge TCP.
- NFS-serveren modtager anmodninger fra klienten i form af UDP-datagrammer på port 2049. Selvom NFS kan arbejde med en port-resolver, som gør det muligt for serveren at bruge dynamisk tildelte porte, er UDP-port 2049 forbundet til NFS i de fleste implementeringer.
- Når NFS-serveren modtager en anmodning fra klienten, sendes den til den lokale filadgangsrutine, som giver adgang til det lokale drev på serveren.
- Serveren kan tage tid at behandle klientanmodninger. Selv adgang til det lokale filsystem kan tage et stykke tid. I dette tidsrum ønsker serveren ikke at blokere forespørgsler fra andre klienter, som også skal betjenes. For at håndtere denne situation startes de fleste NFS-servere flere gange, hvilket betyder, at der er flere NFS-servere inde i kernen. De specifikke løsningsmetoder afhænger af operativsystemet. De fleste Unix-kerner bruger ikke flere NFS-servere, men kører i stedet flere brugerprocesser (almindeligvis kaldet nfsd), der foretager et enkelt systemkald og forbliver inde i kernen som en kerneproces.
- På samme måde tager NFS-klienten tid at behandle en anmodning fra en brugerproces på klientværten. Der udstedes en RPC til servernoden, hvorefter der forventes et svar. For at brugerprocesser på klientværten til enhver tid kan bruge NFS, er der flere NFS-klienter, der kører inde i klientkernen. Den specifikke implementering afhænger også af operativsystemet. Et Unix-system bruger typisk en teknik, der ligner en NFS-server: en brugerproces kaldet biod foretager et enkelt systemkald og forbliver inde i kernen som en kerneproces.
- De fleste Unix-værter kan fungere som både en NFS-klient og en NFS-server. De fleste IBM-mainframes leverer kun NFS-serverfunktionalitet.
Alternativer til NFS
Alternative filadgangsprotokoller omfatter SMB ( Server Message Block , også kendt som Samba og CIFS ), Apple Filing Protocol (AFP), NetWare Core Protocol (NCP). Under Microsoft Windows-operativsystemet bruges SMB og NetWare Core Protocol (NCP) hyppigere end NFS. På Macintosh-systemer er AFP mere almindeligt end NFS.
Se også
Noter
Links
- Netværksfilsystem version 4 // IETF
- wiki.linux-nfs.org
- Russisk implementering af protokoller for netværksadgang til filsystemer NFS version 2 og NFS version 3 fra Open Virtualization Technologies LLC
- Standarder
- RFC 1094 NFS: Network File System Protocol Specification (marts 1989)
- RFC 1813 NFS Version 3 Protocol Specification (juni 1995)
- RFC 2224 NFS URL-skema
- RFC 2339 En aftale mellem Internet Society, IETF og Sun Microsystems, Inc. i spørgsmålet om NFS V.4-protokoller
- RFC 2623 NFS Version 2 og Version 3 Sikkerhedsproblemer og NFS-protokollens brug af RPCSEC_GSS og Kerberos V5
- RFC 2624 NFS Version 4 Designovervejelser
- RFC 3010 NFS version 4 protokol
- RFC 3530 Network File System (NFS) version 4 protokol
- RFC 5661 Network File System (NFS) Version 4 Minor Version 1 Protocol