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 – mapovat požadavky uživatele root na běžného uživatele (obvykle nobody)
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ě, tak se přece jen hodně od svého předchůdce 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ý mimochodem 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, která ja notoricky nebezpečná protokol NFSv4 vyžaduje i možnost využití silnějších bezpečnostních mechanismů - 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 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 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 dvě soupeřící strany díky základním rozdílům v těchto dvou RPC systémech (vzdálené volání procedur). Argumenty, které byly zaměřeny na metodu pro kódování dat — Externí Datová Reprezentace (XDR) patřící k ONC, vždy renderovala čísla v big-endian pořadí, 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řila (Březen 1987) při pokusu o sloučení 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 ostatních AT&T držitelů licence Unixového systému V začalo mít obavy, že toto postaví Sun do výhodnější pozice a 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í). Ironicky, Sun a AT&T předtím vedli souboj NFS od Sun vs. RFS od AT&T a 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žívatelů ve prospěch NFS. Součinnost NFS byla podpořena událostí zvanou „Connectathons“ počínající v 1986, která umožnila neutrálním prodejcům testovat implementace mezi sebou.
OSF vyžadoval návrhy na různé technologie, včetně systému vzdáleného volaní procedur (RPC) a protokolu vzdáleného přístupu k souborům. Nakonec návrhy pro tyto dva požadavky, zvané Distribuované výpočetní prostředí (DCE) a Distribuovaný souborový systém (DFS) respektive, vyhrály nad ONC a NFS co navrhoval Sun. DCE bylo odvozeno od několika technologií, včetně NCS a Kerberos. 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) dosáhli dohody k připuštění “správy změn” ONC RPC 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 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 IETF se rozhodla rozšířit ONC RPC přidáním nového typu authentifikace založeného na GSSAPI a RPCSEC GSS, aby to souhlasilo s požadavkama IETF na adekvátní bezpečnost protokolových standardů.
Později Sun a ISOC dosáhli podobné dohody o předání ISOC správu změn nad NFS, ikdyž smlouva byla napsaná opatrně aby neobsahovala NFS verzi 2 a 3. Místo toho ISOC dostal pravomoce pro přidávání nových verzí do NFS protokolu, což způsobilo že IETD bylo schopno specifikovat NFS verzi 4 v roce 2003.
Léta kolem roku 2000
Příchodem 21. století, ani DFS ani AFS nedosádly žá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 DFS a AFS, Transarc, darovala většinu zdrojového kódu AFS free software community v roce 2000. Projekt OpenAFS přežívá. Na začátku roku 2005, IBM prohlásila konec prodeje AFS a DFS.
V lednu 2010 Panasas nabídnul NFSv4.1 založený na jejich paralelním NFS (pNFS) technologii, o které tvrdili že zlepší schopnost paralelismu přístupu dat. Protokol NFSv4.1 definuje metodu separace systémových meta dat od lokace souborových dat; jde to dál než jednoduchá separace jmen a dat tím, že odsekli data ze sady datových serverů. Tímto se liší od tradičního NFS serveru, který uchovává jména souborů i jejich data u sebe. Některé produkty jsou více-uzlové NFS servery, ale účast klienta v separaci meta dat a dat je omezena.
Server NFSv4.1 pNFS je kolekcí serverových prostředků nebo komponent; tyto jsou ovládány serverem meta dat.
Klient pNFS pořád přistupuje k jedinému serveru meta dat při interakci s daty, když klient přesouvá data z a na server, může se stát, že to 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.