Síťový souborový systém
| Network File System (NFS) | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Rodina | Protokoly síťového souborového systému | |||||||||||
| Funkce | Přístup k systému souborů přes síť. | |||||||||||
| Poslední verze | NFSv4 | |||||||||||
| porty | 2049 | |||||||||||
| Umístění v zásobníku protokolů * | ||||||||||||
| ||||||||||||
| * podle modelu OSI | ||||||||||||
| standardy | ||||||||||||
|
RFC 1094 (verze 2) RFC 1813 (verze 3) RFC 3530 (verze 4) | ||||||||||||
Network File System neboliNFS je protokol aplikačnípodle modelu OSI . Používá se pro distribuované systémy souborů v prostředí lokální počítačové sítě . Umožňuje různým systémům připojeným ke stejné síti přistupovat ke vzdáleným souborům, jako by byly místní. Původně byl vyvinut v roce 1984 společností Sun Microsystems s cílem být nezávislý na stroji, operačním systému a transportním protokolu, což bylo umožněno implementací nad protokoly XDR (prezentace) a ONC RPC (session). [ 1 ] Protokol NFS je standardně součástí operačních systémů UNIX a většiny distribucí Linuxu .
- Systém NFS je rozdělen minimálně na dvě hlavní části: server a jednoho nebo více klientů . Klienti mají vzdálený přístup k datům uloženým na serveru.
- Místní pracovní stanice využívají méně místa na disku, protože data jsou centralizována na jednom místě, ale mohou k nim přistupovat a upravovat je více uživatelů, takže informace nemusí být replikovány.
- Uživatelé nemusí mít „domovský“ adresář na každém z počítačů v organizaci. Domovské adresáře lze vytvořit na serveru NFS, takže k nim lze později přistupovat z libovolného počítače prostřednictvím síťové infrastruktury.
- Úložná zařízení, jako jsou disketové jednotky, disky CD-ROM a jednotky ZIP , lze také sdílet po síti . To může snížit investice do takových zařízení a zlepšit využití stávajícího hardwaru v organizaci.
Všechny operace se soubory jsou synchronní . To znamená, že operace se vrátí pouze tehdy, když server dokončí všechny související práce pro tuto operaci. V případě požadavku na zápis server fyzicky zapíše data na disk a v případě potřeby aktualizuje adresářovou strukturu, než vrátí klientovi odpověď. To zaručuje integritu souborů.
Architektura
Předpokládejme, že klient síťového systému souborů (NFS) se pokusí připojit adresář převzatý ze serveru NFS do místního adresáře. K tomu budete potřebovat následující příkaz:
$sudo mount -t nfs remote_machine:/home /local_dir
V tomto příkazu určíme typ souborového systému, který se má připojit pomocí -t, vzdálený počítač a adresář, kam jej připojíme.
Tento příkaz je o připojení k démonu připojenému k rpc běžícímu na vzdáleném počítači prostřednictvím RPC. Server zkontroluje oprávnění klienta k adresáři /home , kam bude připojen, a pokud je má, připojení se provede, jako by se jednalo o jakékoli jiné fyzické zařízení. Po dokončení připojení, když přistoupíte k adresáři klienta, budete přistupovat k adresáři vzdáleného serveru.
Když je v adresáři /local_dir již připojen adresář /home vzdáleného počítače, jediné soubory ochrany v tomto adresáři jsou jejich oprávnění.
Při přístupu k souborům v adresáři NFS se na serveru vygeneruje RPC volání démona rpc nfsd , ve kterém jsou zahrnuty parametry odpovídající UID a GID uživatele a deskriptor souboru, pomocí kterého se budou kontrolovat oprávnění.
Typická implementace
Za předpokladu scénáře ve stylu Unixu, kde jeden stroj (klient) potřebuje přistupovat k datům uloženým na jiném stroji (server NFS):
- Server implementuje procesy démona NFS, které ve výchozím nastavení běží jako nfsd, aby byla data obecně dostupná klientům.
- Administrátor serveru určí, co zpřístupní exportem názvů a parametrů adresářů, obvykle pomocí konfiguračního souboru /etc/exports a příkazu exportfs.
- Správa zabezpečení serveru zajišťuje, že dokáže rozpoznat a schválit ověřené klienty.
- Konfigurace sítě serveru zajišťuje, že příslušní klienti s ním mohou vyjednávat prostřednictvím jakéhokoli systému brány firewall.
- Klientský počítač požaduje přístup k exportovaným datům, obvykle vydáním příkazu mount. Klient se zeptá serveru (rpcbind), který port NFS server používá, klient se připojí k NFS serveru (nfsd), nfsd předá požadavek mountd.
- Pokud vše půjde dobře, uživatelé na klientském počítači mohou prohlížet a pracovat se systémy souborů připojenými na serveru v rámci povolených parametrů.
- Všimněte si, že proces připojení NFS může být automatizován, možná pomocí /etc/fstab a/nebo zařízení pro připojení.
Tento systém souborů se používá k tomu, aby v místní síti mohly různé počítače přistupovat k souborům a sdílet je, takže jeden počítač může přistupovat k informacím jiného počítače, jako by to byl pevný disk. NFS se zaměřuje na konzistenci za předpokladu, že těžké operace zápisu, které pravděpodobně nebudou příliš časté.
Jedním z hlavních použití protokolu NFS je možnost mít všechny soubory centralizované na jediném serveru. To umožní obejít se bez paměťových jednotek v ostatních počítačích a mít možnost vzdáleného přístupu ke čtení jakéhokoli souboru nebo jeho stahování.
Je to velmi užitečné, zvláště když se mnoho uživatelů bude muset přihlásit, aby mohli tyto soubory upravit.
Výhoda
- K souborům může přistupovat více klientů
- Snižuje potřebu místa na disku
- Každý uživatel může upravovat a aktualizovat soubory
- Kompatibilita s mnoha zařízeními
Nevýhody
- Zabezpečení: používejte pouze v zabezpečených sítích a za firewallem
- Čtení souborů vyžaduje vysokou režii
- Není snadné blokovat soubory nebo udělovat oprávnění
NFS klient
Klient simuluje funkcionality souborového systému UNIX integrované přímo do jádra. Má na starosti řízení požadavků z VFS na server. Odešlete bloky nebo soubory ze serveru a na server. Pokud je to možné, ukládá bloky místně.
Vyrovnávací paměť
Klientský modul NFS ukládá do mezipaměti výsledky operací <readwritegetattlookup> a readdir. Klienti jsou zodpovědní za dotazování serveru, aby zkontrolovali měnu jejich dat mezipaměti.
Metoda časového razítka pro údržbu mezipaměti:
Každý prvek je označen dvěma různými časy, jedním při posledním ověření prvku a druhým při poslední úpravě na serveru. Záznam mezipaměti je platný v čase t, pokud je t-čas jeho posledního ověření menší než tolerovaný interval obnovení. Pokud vstup není platný, získá se čas, ve kterém byl naposledy změněn na serveru, a pokud je roven času klienta, pak je vstup platný a čas klienta je aktualizován, jinak je vstup neplatný.
Aby se minimalizovalo volání getattr, když je hodnota přijata ze serveru souboru, použije se na všechny relevantní položky v tomto souboru.
I v tomto případě budou problémy s konzistencí, pokud budeme mít zápisy na dvou klientech s časovým rozdílem menším, než je tolerovaný interval obnovy. Abychom tento problém vyřešili, budeme muset použít zamykání souborů přeměnou souboru na kritickou sekci, čehož je v NFS dosaženo prostřednictvím protokolu Network Lock Manager (NLM) .
NFS server
NFS server je součástí linuxového jádra, v jádrech, která Debian poskytuje, je zkompilován jako modul jádra. Jeho rozhraní je definováno v RFC 1813.
Je odpovědný za přijímání požadavků, které mohou být podobné těm z modelu plochých souborů nebo mohou simulovat požadavky systému UNIX.
Server také nabízí služby připojení, ověřování a řízení přístupu a mezipaměť.
Vyrovnávací paměť
Existují dvě možnosti, jak zachovat a zajistit konzistenci psaní:
- write-through : Data z operací zápisu se ukládají do mezipaměti a zapisují se na disk, než odpoví klientovi.
- Commit : Data z operací zápisu se ukládají pouze do mezipaměti. Jsou zapsány na disk pouze tehdy, když je přijata operace potvrzení.
Základní démoni služby NFS jsou následující:
- rpc.mountd : Démon, který zvládne vzdálenou montáž. Přijme požadavek od klienta NFS a zkontroluje, zda je souborový systém exportován a pokud je k dispozici, povolí požadavky na přístup NFS a poskytne o něm informace ( showmount ).
- rpc.nfsd: soubor obsluhující démon. Lze spustit více kopií tohoto démona. Používá TCP/UDP port 2049.
- rpc.portmap : Zodpovídá za to, že klientům ukáže, kde se na serveru nachází skutečná služba. Služby založené na RPC používají portmap pro obsluhu požadavků klientů, takže tato služba musí být dostupná jako první. V NFSv4 se nepoužívá. Chcete-li zkontrolovat, zda je aktivní, spusťte:
- $ sudo stav portmap
- rpc.lockd : odpovídá za poskytování služby zamykání souborů, aby byla zajištěna jejich konzistence, protože k nim lze přistupovat souběžně. Běží na serveru i na klientovi.
- rpc.statd : Tento démon pracuje ve spojení s lockd, aby se zotavil z pádů systému. Uchovává informace o procesech v klientech, kteří mají uzamčené soubory určitého serveru. Když se NFS server obnoví, statd informuje ostatní klienty, že se server zotavil, a tím vyřeší zámky, které měli.
Zabezpečení
Pokud chceme, aby naše služba NFS byla bezpečnější, měli bychom vzít v úvahu řadu detailů, jako například:
- Používejte zástupné znaky (metaznaky) co nejméně, protože můžeme poskytnout přístup více týmům, než si myslíme.
- Použijte pravidla Iptables (firewall) k omezení přístupu k portům používaným démony služeb NFS.
- Použití souborů /etc/hosts.allow a /etc/hosts.deny není povinné, ale je vhodnější je nakonfigurovat pro zajištění bezpečnosti dat.
- Exportujte čitelné (ro) souborové systémy, kdykoli je to možné.
- Vlastník exportovaných souborů a adresářů musí být root, protože je možné mapovat UID uživatele root na UID uživatele none.
- Pokuste se, aby exportované soubory nebyly pro skupinu ( ACL ) zapisovatelné.
- Verze 2 a 3 NFS nemají řízení přístupu pro konkrétní uživatele. V nich může při exportu systému souborů ke sdíleným datům přistupovat každý uživatel na libovolném vzdáleném počítači připojeném k serveru NFS. Jediným bezpečnostním mechanismem, který mají, je použití přístupu pouze pro čtení a omezení všech uživatelů na jednoho společného, jehož UID a GID určíme.
- Pokud není použita možnost exportu do squashe , může se každý uživatel root na klientském počítači stát uživatelem s privilegovaným přístupem jednoduše spuštěním příkazu: su - . Vždy je vhodné mít aktivovanou nějakou možnost squashe .
- Nejbezpečnější verze NFS je 4.
<Kerberos>
NFS standardně zahrnuje identitu uživatele v požadavcích na server, ale pouze pro porovnání s přístupovými oprávněními ji neověřuje.
S Kerberos se ověření uživatele provádí v době připojení systému souborů. Výsledky těchto autentizací se ukládají a používají při každém požadavku NFS. To chrání před většinou útoků.
Verze NFS
Hlavní verze NFS jsou NFSv2 (RFC 1094), NFSv3 (RFC 1813) a NFSv4 (RFC 3530).
NFS verze 2 je nejrozšířenější a podporovaný operačními systémy, stejně jako nejstarší a nejnebezpečnější. Verze 3 je výkonnější než verze 2, ale není plně kompatibilní s klienty předchozí verze. Tyto dvě verze mohou pracovat s TCP i UDP jako transportní protokol vytvářející síťové spojení mezi klientem a serverem. Výhodou použití UDP je, že síťový provoz je minimalizován, ale pokud by došlo k jeho poklesu, klienti by pokračovali v odesílání zpráv a došlo by k nasycení.
Obecně vám NFS verze 2 a 3 umožňují řídit export a připojení souborových systémů na základě žádajícího počítače, ale ne na uživateli. Jinými slovy, řízení přístupu k systému souborů uživatelem se neuvažuje. Pouze pro týmy. To znamená, že pokud je souborový systém exportován ze serveru NFS, může k němu přistupovat jakýkoli uživatel na vzdáleném klientském počítači NFS. Jediné bezpečnostní mechanismy, které v tomto případě zbývají, jsou přístupová oprávnění (pouze pro čtení) nebo použití pouze uživatele a skupiny. Logicky to značně omezuje myšlenku sdílení, kterou všichni máme.
V případě verze 4 NFS tyto bezpečnostní problémy zmizí, ale na oplátku má mnohem důležitější požadavky na konfiguraci a doplňkové služby. Například ve verzi 4 je použití mechanismů pro autentizaci uživatele povinné. Za tímto účelem a v závislosti na typu vybraného zabezpečení je vyžadováno použití služby Kerberos, jejímž posláním bude fungovat jako server pro doručování vstupenek (KDC) a která musí být správně nakonfigurována a fungovat před konfigurací serveru NFSv4. Tento požadavek poskytuje službě NFS zabezpečení výměnou za zvýšení složitosti její konfigurace a nastavení.
Další důležitou vlastností NFS4 je použití ACL (Access Control Lists) ve stylu Windows, které verze 2 a 3 NFS nepodporují. Když mluvíme o ACL, odkazujeme na oprávnění nebo přístupová práva, která má každý uživatel k souboru nebo adresáři a která jsou specifikována jako upravitelné seznamy správcem systému.
Výhody NFS
- Snižují riziko, že selhání jediného zařízení zabrání přístupu k datům.
- Poskytují centralizovaná umístění pro data, která by měla nebo měla být sdílena mezi všemi uživateli.
- Zjednodušují přístup ke stávajícím datům na rychlejších systémech.
- Poskytují možnost centralizovat administrativní operace, jako je zálohování dat ( zálohování ).
- Poskytují interoperabilitu a flexibilitu. K síťovým souborovým systémům lze obvykle přistupovat z počítačů se systémem Linux, Windows, Mac OS X, BeOS, BSD a mnoha dalších. Tímto způsobem je snadné používat nejvhodnější hardware a software pro požadavky desktopu a stále přistupovat ke stejným datům z prostředí síťového souborového systému.
Nevýhody NFS
- NFSv2 a NFSv3 mohou používat UDP jako přenosový protokol, který jako bezobslužné připojení minimalizuje síťový provoz, ale pokud by NFS server z nějakého důvodu selhal, klienti NFS by pokračovali v odesílání požadavků na server, což by mělo opačný efekt. , což je saturace sítě.
- Verze 2 a 3 NFS vám umožňují řídit export a připojení souborových systémů na základě žádajícího počítače, ale ne na uživateli. Jinými slovy, řízení přístupu k systému souborů uživatelem se neuvažuje. Pouze pro týmy. To znamená, že pokud je souborový systém exportován ze serveru NFS, může k němu přistupovat jakýkoli uživatel na vzdáleném klientském počítači NFS.
- NFS trpí některými problémy s výkonem kvůli svému "bezstavovému" designu (některé z těchto problémů jsou zmírněny v nejnovějších verzích NFS). Zejména, protože klient předpokládá, že operace zápisu je dokončena, jakmile obdrží potvrzení ze serveru, server se musí ujistit, že zapíše každý blok na disk, než odpoví, aby se předešlo nesrovnalostem v případě selhání. To zavádí značné zpoždění v případě zápisů NFS.
Operace
NFS zpočátku podporovalo 18 procedur pro všechny základní I/O operace. [ 1 ] Příkazy protokolu verze 2 jsou následující: [ 2 ]
- NULL : nedělá nic, ale používá se k pingování serveru a měření časů.
- CREATE : Vytvoří nový soubor.
- VYHLEDAT : Vyhledá soubor v aktuálním adresáři a pokud je nalezen, vrátí deskriptor tohoto souboru plus informace o atributech souboru.
- READ and WRITE : základní primitiva pro přístup k souboru.
- RENAME : Přejmenování souboru.
- ODSTRANIT : odstranění souboru.
- MKDIR a RMDIR : vytváření/mazání podadresářů.
- READDIR : pro čtení seznamu adresářů.
- GETATTR a SETATTR : vrátí sady atributů souboru.
- LINK : Vytvoří soubor, což je odkaz na soubor v určeném adresáři.
- SYMLINK a READLINK : pro vytváření a čtení symbolických odkazů (v „řetězci“) na soubor v adresáři.
- STATFS : Vrací informace o systému souborů.
- ROOT , pro přechod do kořenového adresáře (ve verzi 2 zastaralé).
- WRITECACHE : Rezervováno pro budoucí použití.
Ve verzi 3 protokolu jsou odebrány příkazy STATFS, ROOT a WRITECACHE; a byly přidány následující: [ 3 ]
- ACCESS : Kontrola přístupových oprávnění.
- MKNOD : Vytvořte speciální zařízení.
- READDIRPLUS : Vylepšená verze READDIR.
- FSSTAT - Dynamicky vrací informace o systému souborů.
- FSINFO - Vrátí informace o systému souborů ve statické podobě.
- PATHCONF : Načtení informací POSIX .
- COMMIT : Odešle data mezipaměti na serveru do stabilního úložného systému.
Verze 4 byla vydána v dubnu 2003 a není zpětně kompatibilní. Podporuje 41 příkazů: NULL, COMPOUND, ACCESS, CLOSE, COMMIT, CREATE, DELEGPURGE, DELEGRETURN, GETATTR, GETFH, LINK, LOCK, LOCKT, LOCKU, LOOKUP, LOOKUPP, NVERIFY, OPEN, OPENATTR, OPEN_CONPUTPURGPH, OPENDOWNPUTPGF, OPENDOWNPURGPFH PUTROOTFH, READ, READDIR, READLINK, REMOVE, RENAME, RENEW, RESTOREFH, SAVEFH, SECINFO, SETATTR, SETCLIENTID, SETCLIENTID_CONFIRM, VERIFY, WRITE, RELEASE_LOCKOWNER, ILLEGAL. [ 4 ]
Viz také
NFS související témata:
- ONC RPC , vzdálené volání procedur používané s NFS.
- XDR , protokol pro prezentaci dat používaný NFS.
- VFS , virtuální souborový systém.
Další systémy:
- AppleTalk
- Samba (software)
- Blok zpráv serveru
- Souborový systém Andrew
- Zabezpečený souborový systém Shell
Reference
- ^ ab Sandberg , R. Goldberg, D. Kleiman, S. Walsh D. Lyon, B. (červen 1985). "Návrh a implementace systému souborů Sun Network " . Sborník příspěvků z konference v Usenixu v létě 1985.
- ↑ Specifikace protokolu RFC 1094 verze 2. (v angličtině)
- ↑ Specifikace protokolu RFC 1813 verze 3. (v angličtině)
- ↑ Specifikace protokolu RFC 3530 verze 4. (v angličtině)
Externí odkazy
- Linux NFS
- Dokumentační projekt Linuxu k síťovému systému souborů . Linux Network Administration Guide, Kapitola 14.
- Microsoft financuje Open Source klienta NFS v4 pro Windows
- [1] Santamaria, R. Distributed Systems.
- [2] Ministerstvo školství, kultury a sportu Španělska