Přeskočit obsah

Vlastnosti a omezení NFS úložiště

Typickým využitím NFS úložiště je centrální storage pro data webových serverů, pokud není synchronizace dat řešena aplikačně nebo součástí deployment procesu. Smyslem takového úložiště je pak jedno místo, se kterým může pracovat více serverů zároveň a data jsou vždy a všude stejná. Takové řešení může na malých projektech poskytnout server se softwarovou implementací NFS protokolu, nebo u větších projektů profesionální diskovépole, které je pro projekt vyhrazené, nebo poskytnuté jako služba. 

Bez ohledu na to, zda se jedná o profesionální pole nebo o řešení softwarové je pro bezproblémový chod třeba dodržovat základní pravidla. Tento typ úložiště není vhodný pro intenzivní zápis. Časté chyby se kterými se u zákazníků setkáváme, je logování nebo umístění diskové cache na takové úložiště. Logování je třeba vyřešit buď lokálně na každý server (pokud nevadí rozdělení logů pro každý server), nebo využít remote syslog či elastic stack a logy odesílat na dedikovaný server. V případě diskové cache aplikace je nutné takovou cache umístit lokálně na každý server. Pokud je třeba mít cache sdílenou pro více serverů, je správné řešení ukládání takových dat do in-memory nosql databáze - například Redis.

V některých případech se setkáváme i s komplikacemi při enormním množství čtecích požadavků - typicky vznikají díky chybě v aplikaci, nebo jejím návrhu. Problematické může být například velké množství include v kódu webu. Každá disková operace přes síť trvá o něco déle, než v případě lokálního úložiště. Pokud je při vygenerování stránky třeba načíst jednotky, nebo dokonce desítky tisíc souborů, jedná se v podstatě o uměle vygenerovanou a zbytečnou zátěž, která má negativní vliv na performance úložiště, a tím i samotné aplikace.  Tento typ problému se pochopitelně vyskytuje i u lokálního úložiště, ale nižsí latencí při práci s takovým úložištěm se problém často neprojeví. Vhodným nástrojem na debugování tohoto typu problému může být v php modul xdebug, který v profilovacím módu poskytne cenná data pro analýzu. Takový modul ale vygeneruje další procesorovou zátěž a je proto vhodné ho použít pouze na neprodukčním prostředí, případně na produkci v domluveném servisním okně.