NFS

Z DCEwiki
Skočit na navigaci Skočit na vyhledávání

NFS (Network File System) je distribuovaný souborový systém, který umožňuje sdílet obsah lokálního počítače (serveru) z více míst současně prostřednictvím internetové sítě. Na rozdíl od clusterových souborových systémů, které pracují s distribuovaným blokovým zařízením, neřeší konkurenční přístup k souborům vzdálený klient na stanicích (tj. nody), ale NFS server který data publikuje.

Výhody síťového souborového systému NFS

  • Umožňuje přístup do jednoho adresáře z více přípojných bodů, což usnadňuje průběžné zálohování
  • Nasdílení jednotlivých souborů sebou nese nižší nároky na síťovou režii - Největší nápor na I/O operace totiž bývá při startu operačního systému, kdy se načítají do paměti systémové soubory. Dál se již načítají soubory pouze v případě potřeby a ukládají změny. 95% nainstalovaných souborů většinou systém nikdy nepoužije. Je-li používán jeden adresář z více míst, nemusí server data opakovaně načítat z disku, ale může použít vyrovnávací paměť, což vede ke snížení průběžné režie I/O operací na blokových zařízeních serveru.

Nevýhody síťového souborového systému NFS

  • Jeden centrální přístupový bod - když se rozpadne síťové připojení může dojít ke zhroucení stroje, není-li spojení obnoveno včas.
  • Je třeba dbát na zajištění bezpečnosti přístupu - Multiuživatelský přístup dovoluje měnit soubory pod rukou.
  • Nižší hrubý výkon při rozsáhlých I/O operacích. NFS není vhodné pro uložení velkých souborů, u kterých dochází v celém rozsahu ke změnám uložených dat - typicky databáze či obrazu disků virtuálních strojů
Upozornění I když síťové souborové systémy obecně nejsou vhodné pro práci s takovými soubory lze při dobrém HW vybavení a optimalizované konfiguraci síťových prvků[1] NFS použít.
  1. Výkon síťových přenosů lze zvýšit kupř. použitím tzv. jumbo frames, které ovšem musí podporovat rovněž síťové prvky mezi serverem a klientem.


Historie

První systém pro sdílení souborů se jmenoval FAL (File Access Listener), byl vyvinut r. 1976 firmou Digital Equipment Corporation a používal její protokol DCEnet Phase II. Ten umožňoval sdílení až pro 32 nodů.

NFS

První verzi souborového systému NFS, který je založen na IP protokolu, vytvořila firma Sun Microsystems v roce 1985. Tato verze byla ovšem určena pouze pro experimentální použití v rámci jednoho baráku.

NFSv2

Produkčního nasazení se dočkala až druhá verze protokolu NFSv2, která byla specifikována r. 1989. Bylo to v podstatě vylepšené NFS první verze, které bylo rozšířeno o RPC komunikaci. Ta byla nezbytná, protože protokol byl bezstavový a bylo nutno ošetřit zamykání souborů. Maximální velikost souboru, který bylo možné přečíst po síti byla 2GB (omezení 32 bitové architetury) a komunikace se vedla přes UDP.

NFSv3

Třetí verze NFSv3, která byla specifikována v červnu 1995 již byla navržena jako 64 bitová. Takže umožňuje sdílet i soubory větší než 2GB. Do obou verzí byla přidána komunikace přes TCP, která zaručuje větší spolehlivost přenosu. Třetí verze přinesla podporu pro asynchronní zápisy, což značně zrychlilo přenosovou rychlost mezi serverem a klientem. Použití TCP navíc umožnilo komunikaci přes WAN.

NFSv4

Specifikace čtvrté verze NFSv4, byla vydaná v prosinci 2000 a v dubnu 2003 prošla revizí. Pod vlivem konkurenčních systémů pro sdílení souborů - AFS a CIFS byly implementovány prvky pro zvýšení bezpečnosti přenosu dat a zaveden stavový protokol. Tento standard už ale nevydal Sun Microsystems ale IETF - mezinárodní komise pro vývoj internetových standardů.

NFSv4.1

Specifikace čtvrté verze byla v lednu 2010 rozšířena. NFSv4.1 již zahrnuje podporu pro clusterové prostředí včetně škálování paralelních přístupů mezi více servery (rozšíření pNFS)

NFSv4.2

Práce na dalším rozšíření protokolu NFSv4.2 skončily teprve nedávno - v lednu 2016 (návrh byl publikován v srpnu 2013). Obsahuje..

  • podporu pro tzv. "děravé soubory"
  • lepší podporu pro I/O operace na straně serveru (podpora atomických operací, kopírování a klonování souborů na straně serveru, ADB přístup aj.)
  • štítkování NFS, které souvisí s podporou pNFS

NFSv4.3

Návrh na rozšíření NFSv4.3, který byl publikován zároveň s doporučením rozšíření NFSv4.2 v lednu 2016 by měl implementovat podporu XDR (External data representation), což je protokol kterfý se používá k přenosům dat mezi stroji různých architektur. Zároveň ho ale provází otázka, zda-li by nemělo dojít ke změně verzování a nepokračovat novou verzí NFSv5.

Nestandardizovaná rozšíření

WebNFS
Umožňuje honit NFS (verze v2 a v3) přes HTTP protokol. Přišel s tím SUN v r. 2007, aby umožnil připojení na NFS přes síťové firewally.
NLM protokol
Rozšiřuje podporu zamykání souborů na unixových systémech.
RQUOTAD protokol
Implementuje podporu uživatelských kvót na straně NFS serveru.
NFS s podporou RDMA
Je implementace NFS protokolu, která umožňuje používat NFS přes RDMA (standardně NFS komunikuje pouze přes ethernetové protokoly TCP a UDP).

NFS server

V linuxovém prostředí lze používat několik implementací NFS serveru.

knfsd
implementace NFS serveru v linuxovém jádře
NFS Ganesha
NFS a P9 server, který je implementován v userspace. Jeho výhodou je, že používá backendy pro různé souborové systémy, včetně síťově distribuovaných jako je GlusterFS, nebo CEPH
Gluster NFS server
Je NFS server, který je součástí distribuovaného souborového systému GlusterFS. Běží stejně jako NFS Ganesha v userspace. Jeho výhodou je podpora paralelizace NFS připojení.