Network File System
Network File System (NFS) je internetový protokol pro vzdálený přístup k souborům přes počítačovou síť. Protokol byl původně vyvinut společností Sun Microsystems v roce 1984, v současné době má jeho další vývoj na starosti organizace Internet Engineering Task Force (IETF). Funguje především nad transportním protokolem UDP, avšak od verze 3 je možné ho provozovat také nad protokolem TCP.
V praxi si můžete prostřednictvím NFS klienta připojit disk ze vzdáleného serveru a pracovat s ním jako s lokálním. V prostředí Linuxu se jedná asi o nejpoužívanější protokol pro tyto účely.
Za kolegu NFS lze považovat protokol NIS (Network Information Service), který slouží k distribuci nejrůznějších konfiguračních dat v počítačové síti (např. uživatelé, doménová jména aj.).
Konfigurace serveru
NFS server se nastavuje pomocí konfiguračního souboru /etc/exports
, který na jednotlivých řádcích obsahuje definice sdílených adresářů. Jako první je název adresáře a pak seznam povolených klientů (zde jsou uvedeny názvy server, stanice a IP adresa) s přidanými volitelnými parametry:
/usr 10.1.2.3(ro) stanice(ro) /home 10.1.2.3(rw,no_root_squash) stanice(rw)
Parametry
- ro (read-only) – pouze pro čtení
- rw (read-write) – povoleno čtení i zápis
- no_root_squash – nemapovat požadavky uživatele root na běžného uživatele (obvykle nobody) (server tak bere id uživatele od klienta, což může být bezpečnostní riziko)
Konfigurace klienta
Klient připojuje adresář ze serveru do svého adresářového stromu stejným způsobem, jako jsou připojovány jednotlivé systémy souborů. V současné době je obvykle nutné na klientovi spustit též démona portmap:
mount -t nfs server:/home /home mount -t nfs server:/usr /mnt/usr-from-server
Od této chvíle může klient s daty v adresáři /home
a /mnt/usr-from-server
pracovat stejně, jako kdyby byly umístěny na lokálním počítači.
NFS verze 4
V dnešních moderních distribucích se téměř výhradně setkáme s nástupcem NFS verze 4, který se, ačkoli z uživatelského hlediska vypadá téměř totožně, přece jen od svého předchůdce hodně liší. Základní odlišnosti jsou:
- Pseudo file systém - NFSv4 vyžaduje exportovat nějaký adresář jako kořen. To se provádí dodatečným parametrem fsid=0
- Stavový protokol - na rozdíl od svého předchůdce, který byl v jádru bezestavový (démony rpclockd a spol., mu sice dodávají stavovost, ale nejsou definovány v RFC a nejsou součástí protokolu NFS) je NFSv4 protokol stavový, což mu dodává, kromě nevýhody větší složitosti i pár výhod, jako například delegování čtení nebo zápisu na klienta, nebo například zamykání souborů. NFSv4 nepotřebuje portmapper.
- Přenos ACL - NFSv3 přenos přístupových práv neřeší. Naproti tomu jsou ACL nedílnou součástí protokolu NFSv4. Nutno ale říci, že protokol NFSv4 definuje vlastní formát ACL, který je odlišný (lepší) od formátu Posix ACL, který ale nebyl nikdy standardizován.
- Jednodušší tunelování přes firewall - na rozdíl od svého předchůdce vyžaduje NFSv4 pro svůj běh mezi klientem a serverem otevřen jen jediný, předem definovaný port.
- mapování uživatelů - NFSv4 byl vyvíjen primárně jako multiplatformní síťový souborový systém, takže na rozdíl od svého předchůdce nepřenáší User ID (UID, typické pro unix), ale doménové jméno ve formátu username@doména. Z tohoto důvodu je nutné, aby na Unixových systémech (klientu i serveru) běžel pomocný program starající se o překlad jmen na UID - obvykle je to démon rpc.idmapd
- větší bezpečnost - kromě klasické "systémové" bezpečnosti, kdy autentikaci zajistuje NFS klient a server ji nijak dále nekontroluje (tzn root na klientu má de-facto plný přístup i na server), protokol NFSv4 umožňuje využití i silnějších bezpečnostních mechanismů, jakým je např. Kerberos.
Vývoj protokolů a soupeřící protokoly
80. léta
Souborové systémy NFS a ONC (Sun RPC) se objevovaly v síťově-výpočetních válkách mezi Sun Microsystems a Apollo Computer a později i v Unixových válkách (1987-1996) mezi AT&T Corporation a Sun na jedné straně a Digital Equipment Corporation, Hewlett-Packard a IBM na straně druhé.
Během vývoje ONC protokolu (tehdy zvaného Sun RPC) nabízel podobnou funkcionalitu pouze Apollův síťový souborový systém (NCS). Vznikly tedy dvě soupeřící strany, které se lišily základními rozdíly v těchto dvou RPC systémech (vzdálené volání procedur). Metoda ONC pro kódování dat — Externí Datová Reprezentace (XDR), vždy renderovala čísla v big-endian pořadí a to i v případě, že oba účastníci spojení měli little-endian strojové architektury. Zatímco metoda od NCS se snažila vyhnout prohození bajtů kdykoli dva účastníci sdíleli stejnou architekturu. Průmyslová společnost zvaná Network Computing Forum byla vytvořena (Březen 1987) při pokusu o sloučení těchto dvou síťově-výpočetních prostředí.
Později Sun a AT&T prohlásili, že budou spolupracovat na vývoji Unixového systému V verze 4 od AT&T. Kvůli tomu mnoho držitelů AT&T licence Unixového systému V začalo mít obavy, že toto postaví Sun do výhodnější pozice. Ultimátně to vedlo k vytvoření Open Software Foundation (OSF) v roce 1988 (podílelo se na tom Digital Equipment, HP, IBM a ostatní). Ač Sun a AT&T předtím vedli souboj NFS vs. RFS, tak následná rychlá adopce NFS přes RFS od Digital Equipment, HP, IBM (a mnoho dalších počítačových prodejců), přetáhla většinu uživatelů k používání NFS. Popularita NFS byla navíc podpořena i událostí zvanou „Connectathons“ počínající v roce 1986, která umožnila neutrálním prodejcům testovat implementace mezi sebou.
OSF si vyžádal návrhy na různé technologie, mezi nimiž byl i systém vzdáleného volaní procedur (RPC) a protokol vzdáleného přístupu k souborům. Čímž vznikly dvě nové technologie, a to Distribuované výpočetní prostředí (DCE) a Distribuovaný souborový systém (DFS) respektive, které vyhrály nad ONC a NFS co navrhoval Sun. DCE bylo odvozeno od několika technologií, včetně NCS a Kerberos a DFS použilo DCE jako RPC a bylo odvozeno z Andrewova souborového systému (AFS).
90. léta
Sun Microsystems a Internet Society (ISOC) povolili ONC RPC přístup ke správě změn tak, aby zaměstnanci inženýrských standardů od ISOC a Internet Engineering Task Force (IETF) mohli vydat dokumentace standardů (zvané RFC), které se vztahovaly k ONC RPC protokolům a mohly tak rozšířit ONC RPC. OSF se pokusilo vytvořit DCE RPC jako IETF standard, ale nakonec nebyli ochotni vzdát se správy změn. Později se IETF rozhodla rozšířit ONC RPC přidáním nového typu autentifikace, založeného na GSSAPI a RPCSEC GSS, aby to souhlasilo s požadavky IETF na adekvátní bezpečnost protokolových standardů.
Později Sun a ISOC dosáhli podobné dohody o předání ISOC pravomocí ke správě změn u NFS, avšak smlouva byla napsaná opatrně, aby neobsahovala NFS verzi 2 a 3. Místo toho ISOC dostal pravomoci pro přidávání nových verzí do NFS protokolu, což způsobilo, že IETF bylo schopno specifikovat NFS verzi 4 v roce 2003.
Léta kolem roku 2000
Příchodem 21. století nedosáhl ani DFS ani AFS žádných hlavních komerčních úspěchů ve srovnání s CIFS nebo NFS. Firma IBM, která předtím získala hlavního komerčního prodejce technologií DFS a AFS, Transarc, otevřela v roce 2000 většinu zdrojového kódu AFS jako otevřený software (open source software), díky čemuž vznikl projekt OpenAFS. A na začátku roku 2005 IBM prohlásila konec prodeje technologií AFS a DFS.
V lednu 2010 Panasas nabídnul NFSv4.1, založený na jejich paralelní NFS (pNFS) technologii, o které tvrdili, že zlepší schopnost paralelního přístupu k datům. Protokol NFSv4.1 definuje metodu separace systémových metadat od lokace souborových dat. Liší se od tradičního NFS serveru, který uchovává jména souborů i jejich data u sebe, tím, že jsou separované. Některé produkty jsou v podstatě více-uzlové NFS servery, ale účast klienta v separaci metadat a dat je omezena.
Server NFSv4.1 pNFS je kolekcí serverových prostředků nebo komponent, které jsou ovládány serverem metadat.
Ačkoli klient pNFS pořád přistupuje k jedinému serveru metadat při interakci s daty, může se stát, že když přesouvá data z a na server, přímo pracuje se skupinou data serverů náležícím k pNFS kolekci serverů. Klientovi FNSv4.1 může být umožněno zadávání přesné lokace souborových dat.
RFC dokumenty
- RFC 1094: NFS: Network File System Protocol specification.
- RFC 1813: NFS Version 3 Protocol Specification.
- RFC 2224: NFS URL Scheme.
- RFC 2339: An Agreement Between the Internet Society, the IETF, and Sun Microsystems, Inc. in the matter of NFS V.4 Protocols.
- RFC 2623: NFS Version 2 and Version 3 Security Issues and the NFS Protocol's Use of RPCSEC_GSS and Kerberos V5.
- RFC 2624: NFS Version 4 Design Considerations.
- RFC 3010: NFS version 4 Protocol.
- RFC 3530: Network File System (NFS) version 4 Protocol.
Reference
V tomto článku byl použit překlad textu z článku Network File System na anglické Wikipedii.