GNU/Linux >> Znalost Linux >  >> Linux

Proč je Linux NFS server implementován v jádře na rozdíl od uživatelského prostoru?

unfs3 je mrtvý, pokud vím; Ganesha je momentálně nejaktivnějším projektem serveru NFS v uživatelském prostoru, i když není zcela vyspělý.

Ačkoli slouží různým protokolům, Samba je příkladem úspěšného souborového serveru, který funguje v uživatelském prostoru.

Neviděl jsem nedávné srovnání výkonu.

Některé další problémy:

  • Běžné aplikace vyhledávají soubory podle názvu cesty, ale nfsd musí být schopen je vyhledat pomocí filehandle. To je ošemetné a vyžaduje to podporu ze systému souborů (a ne všechny systémy souborů to mohou podporovat). V minulosti to nebylo možné udělat z uživatelského prostoru, ale novější jádra přidalaname_to_handle_at(2) a open_by_handle_at(2) systémová volání.
  • Zdá se, že si vzpomínám, že blokování hovorů na zamykání souborů je problém; Nejsem si jistý, jak je dnes servery v uživatelském prostoru zvládají. (Svazujete vlákno serveru, které čeká na zámek, nebo se ptáte?)
  • Novější sémantika souborového systému (změna atributů, delegování, uzamčení sdílení) může být snáze implementována nejdříve v jádře (teoreticky – většinou ještě nebyly).
  • Nechcete ručně kontrolovat oprávnění, kvóty atd. – místo toho chcete změnit své uid a spoléhat se na běžný kód vfs jádra na dothat. A Linux má systémové volání (setfsuid(2) ), který by to měl udělat. Z důvodů, na které jsem zapomněl, si myslím, že se ukázalo, že použití na serverech je složitější, než by mělo být.

Obecně jsou silné stránky jaderného serveru užší integrace s vfs a exportovaným souborovým systémem. Můžeme to vynahradit poskytnutím více rozhraní jádra (jako jsou systémová volání filehandle), ale to není snadné. Na druhou stranu, některé ze souborových systémů, které lidé chtějí dnes exportovat (jako gluster), ve skutečnosti žijí hlavně v uživatelském prostoru. Ty mohou být exportovány jádrem nfsd pomocí FUSE - ale opět mohou být vyžadována rozšíření rozhraní FUSE pro novější funkce a mohou nastat problémy s výkonem.

Krátká verze:dobrá otázka!


Olaf Kirch původně vyvinul verzi serveru NFS založenou na uživatelském prostoru i na jádře. Ve své knize z roku 2000 „Linux Network Administration“ říká:

Jádro 2.2.0 podporuje experimentální server NFS založený na jádře vyvinutý Olafem Kirchem a dále vyvinutý H. J. Lu, G. Allanem Morrisem a Trondem Myklebustem. Podpora NFS založená na jádře poskytuje významné zvýšení výkonu serveru.

Myslím, že jakmile byl server NFS přesunut do jádra, aby se zlepšil výkon, nikdo neviděl důvod jej znovu vyřazovat.


Starnamer má pravdu (byl jsem jedním z beta testerů).

Vložení do jádra bylo pokusem o zlepšení propastného výkonu (hlavně klientům PCNFS) a jakmile byl tento problém vyřešen, nikdo se na to znovu moc nedíval.

NFS v jádře má řadu nedostatků, v neposlední řadě to, že si nehraje dobře s čímkoli jiným, co se dotýká stejného souborového systému (existuje vážně ošklivá rizika korupce), ale tehdy (1993-4) neuvědomuji si, že by se to ukázalo jako problém.

Byli jsme mladší a hloupější, atd atd.


Linux
  1. Průběžné testování integrace linuxového jádra

  2. Rychlá konfigurace serveru NFS na systému Redhat 7 Linux

  3. Proč by jádro zahazovalo pakety?

  1. Změňte verzi jádra na cloudovém serveru Linux pomocí záchranného režimu

  2. Co dělá jádro Linux Server základním?

  3. jak spustit server tomcat v linuxu?

  1. Linuxové jádro:5 nejlepších inovací

  2. Proč pr_debug linuxového jádra nedává žádný výstup?

  3. Proč chránit linuxové jádro před uživatelem root?