È ragionevole utilizzare NFS su un server Web di produzione?
NFS può essere ragionevolmente utilizzato sui server di produzione come mezzo per connettere un server di elaborazione a un server di archiviazione, supponendo che la connessione avvenga su una connessione LAN 1Gbe o 10Gbe?
Ovviamente c'è un sovraccarico di rete e NFS sembra particolarmente lento con le scritture se hai abilitato la modalità di sincronizzazione. Altrimenti sembra ragionevolmente leggero e in grado di scalare da quello che posso dire, ma personalmente ho poca esperienza con esso. Ho sbagliato?
Il problema è che al momento ho un server che funge sia da server di archiviazione che da server Web, ma finirò per dover dividere i due probabilmente in futuro e considerando che alcune richieste devono passare attraverso il livello dell'applicazione Web per l'autenticazione prima di inizializzare il trasferimento del file, diventa piuttosto complicato con questo software. Un mount fs di rete è l'opzione più semplice che solo ... non so se sia una buona scelta.
Ho anche in programma di provare a utilizzare la memorizzazione nella cache locale con NFS che dovrebbe migliorare un po 'le prestazioni, ma non sono sicuro che sia sufficiente.
Per quanto riguarda le alternative, c'è solo iSCSI di cui sono a conoscenza come un vero concorrente, e la maggior parte delle persone sembra raccomandare NFS rispetto a qualsiasi altro meno conosciuto.
Risposte
NFS va bene, a meno che non vengano soddisfatti altri criteri specifici, vale a dire:
- I sistemi coinvolti sono entrambi in grado di utilizzare NFS in modo nativo. Windows non conta qui, in un certo senso funziona , ma ha molte stranezze ed è spesso una seccatura con cui lavorare quando si ha a che fare con NFS in un ambiente multipiattaforma (e se è solo Windows, usa SMB3, elimina la maggior parte degli altri problemi con NFS). Si noti che sul lato client, ciò significa supporto a livello di kernel, poiché un'implementazione a livello di utente deve affrontare i problemi di efficienza inerenti all'utilizzo di qualcosa come FUSE, oppure deve essere collegata direttamente all'applicazione che deve accedere al Condividere.
- Hai verificato correttamente come il client NFS gestisce un riavvio del server NFS. Ciò include sia il sistema operativo stesso (che dovrebbe andare bene nella maggior parte dei casi), sia il software che accederà alla condivisione. In particolare, è necessaria un'attenzione particolare su alcune piattaforme client quando il software che utilizza la condivisione mantiene i file aperti per lunghi periodi di tempo, poiché non tutte le implementazioni client NFS gestiscono correttamente i riavvii del server rimontando e riconvalidando esplicitamente i blocchi e gli handle di file come dovrebbero (il che porta a tutti i tipi di problemi per il software client). Tieni presente che dovresti ricontrollare ogni volta che qualsiasi parte dello stack viene aggiornata o riconfigurata.
- Sei disposto a impostare una corretta mappatura ID utente/gruppo. Questo è grande, perché senza di esso è necessario eseguire il mirroring delle mappature UID/GID tra i sistemi (fattibile, ma diffiderei nell'impostare SSO su una rete interna per un sistema con connessione Internet) o si finisce con problemi potenzialmente seri implicazioni sulla sicurezza (vale a dire, ciò che vedi su un sistema per le autorizzazioni non corrisponde a ciò che vedi su altri).
- Stai operando su un collegamento di rete protetto o sei disposto a configurare correttamente l'autenticazione per la condivisione. Senza autenticazione, chiunque sul collegamento può accedervi (e un client malintenzionato può facilmente eludere i controlli di accesso discrezionali di base UNIX).
Supponendo che tu soddisfi tutti questi criteri e disponi di una rete ragionevolmente veloce, dovresti andare bene. Inoltre, se puoi eseguire frame jumbo, fallo, aiutano molto per qualsiasi filesystem di rete o archiviazione di blocchi in rete.
NFS è assolutamente OK ed è preferito rispetto a iSCSI perché NFS è molto più facile da gestire, condividere e fare il backup.
Utilizziamo NFS da anni per collegare la nostra SAN ai nostri server VMware ESXi, su cui eseguono centinaia di VM. Nessun problema.
Il collo di bottiglia è piuttosto il sistema di archiviazione che il protocollo di rete.
La connessione di rete dovrebbe essere abbastanza veloce, ovviamente, ovvero 10 Gb Ethernet o fibra. Non ci preoccupiamo nemmeno più di una rete di archiviazione separata.
iSCSI potrebbe essere un po' più veloce...
https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/techpaper/storage_protocol_comparison-white-paper.pdf
https://www.hyper-v.io/whos-got-bigger-balls-testing-nfs-vs-iscsi-performance-part-3-test-results/
... ma NFS come qualsiasi altro redirector di rete (SMB3, AFS/AFP ecc.) consente l'accesso multiplo simultaneo che è complicato con iSCSI o altri protocolli di blocco.
https://forums.starwindsoftware.com/viewtopic.php?f=5&t=1392