Verificare che lo stato del file sul client è in sincronia con il server NFS

Io sto cercando di trovare il modo corretto per gestire dati non aggiornati sul client NFS. Considerare il seguente scenario:

  • Due server monte stesso NFS archiviazione condivisa con il numero di file
  • Applicazione Client su 1 server elimina alcuni file
  • Applicazione Client su 2 server tenta di accedere ai file eliminati e non riesce con: handle di file NFS (nulla di strano, l’errore è previsto)

(Inoltre può essere utile sapere che la cache di opzioni di montaggio sono abbastanza alta su entrambi i server per motivi di prestazioni).

Quello che sto cercando di capire è:

  • C’è metodo affidabile per controllare che il file è presente? Nello scenario sopra data lstat sul file restituisce successo e l’applicazione non riesce solo dopo il tentativo di spostare il file.
  • Come posso sincronizzare manualmente il contenuto della directory del client con il server?
  • Alcuni consigli generali su come scrivere affidabile per la gestione dei file di codice in caso di NFS?

Grazie.

InformationsquelleAutor begray | 2010-07-08

 

3 Replies
  1. 12
    • C’è metodo affidabile per controllare che il file è presente? Nello scenario sopra data lstat sul file restituisce successo e l’applicazione non riesce solo dopo il tentativo di spostare il file.

    Che è normale NFS comportamento.

    • Come posso sincronizzare manualmente il contenuto della directory del client con il server?

    Che è impossibile fare manualmente, poiché NFS finge di essere un normale POSIX-compliant file di sistema.

    Ho provato una volta a codice close()/open (), nel tentativo di in qualche modo mitigare gli effetti di NFS cache sul lato client. Nel mio caso ho bisogno di leggere le informazioni scritte per il file su un altro server. Ma anche riaprire il trucco era vicino a zero effetto. E non posso aggiungere fdatasync() per il lato di scrittura, dal momento che rallenta tutta l’applicazione verso il basso.

    La mia esperienza con NFS data è che nulla si può fare. Critiche percorsi di codice ho semplicemente codificato per ritentare il file di operazioni che, di ritorno ESTALE.

    • Alcuni consigli generali su come scrivere affidabile per la gestione dei file di codice in caso di NFS?

    Mod di me tutto quello che vuoi, ma se i clienti vogliono affidabilità quindi non dovrebbero usare NFS.

    Mia azienda per esempio pubblicizza l’uso corretto di file system distribuito (ho volutamente omettere la marca) se il cliente vuole affidabilità. Il nostro software di base non è garantito per funzionare su NFS e noi non supportano questo tipo di configurazioni. Ma nel nostro caso abbiamo davvero bisogno di garanzie che, non appena i dati vengono scritti per FS diventano accessibili a tutti gli altri nodi.

    Coerenza in NFS può essere raggiunto, ma a scapito delle prestazioni, rendendo NFS appena utilizzabili. (Controllare le sue opzioni di montaggio.) NFS è la cache come un pazzo per nascondere il fatto che non è un server di file di sistema. Per rendere tutte le operazioni coerenti, NFS client chiede al server NFS in modo sincrono per ogni piccola operazione, ignorando la cache locale. E che non sarebbe mai essere veloce.

    Ma dato che stiamo parlando di Linux, qui, si possono consigliare i clienti del software per valutare disponibili cluster file system. E. g. RedHat ora supporta ufficialmente GFS. Ho sentito parlare di persone che utilizzano CodaFS, ma non hanno hard informazioni su di esso.

    • Grazie. Hai confermato che la maggior parte della mia NFS risultati di ricerca. Immagino che ti codice di un gruppo di ESTALE controlli, perchè non si ha intenzione di eseguire la migrazione di alcuni altri archivi. Non accetto questa risposta, per ora, nella speranza che qualcuno si presenti con più informazioni sull’argomento.
  2. 4

    Si potrebbe provare il “noac” opzione di montaggio

    da uomo nfs:

    Oltre a prevenire il client
    dal file di cache attributi, i noac
    opzione forze applicazione scrive
    diventare sincrono in modo che locale
    le modifiche a un file diventato visibile su
    il server immediatamente. In quel modo,
    altri client sono in grado di rilevare rapidamente
    recenti scrive quando si verifica
    agli attributi del file.

    Utilizzando i noac opzione fornisce
    una maggiore coerenza della cache tra NFS
    i clienti di accedere allo stesso file, ma
    estrae un significativo miglioramento delle prestazioni
    penalità. Come tale, un uso giudizioso di
    il blocco dei file è incoraggiato, invece.

    Si potrebbe avere due supporti, uno per la critica di cambiare velocemente i dati che avete bisogno di sincronizzare e un altro monte per altri dati.

    Inoltre, lo sguardo in NFS di chiusura e i suoi limiti.

    Come per consigli generali:

    Un modo per troncare un file leggere contemporaneamente da più host è quello di scrivere il contenuto in un file temporaneo e poi rename il file per la posizione finale.

    Sullo stesso filesystem questa operazione deve essere atomica.

    • Beh, che porta una buona idea: inviare la domanda di serverfault. Gli sviluppatori non hanno alcun modo di influenzare NFS a livello di programmazione (soluzioni alternative al meglio), mentre gli amministratori hanno a che fare con NFS e le applicazioni in esecuzione su di esso più spesso. Di conseguenza, questi ultimi hanno più esperienza e potrebbe dare ulteriori suggerimenti.
    • Collegato NFS chiusura dell’articolo è ormai andato, ti capita di avere una sostituzione?

Lascia un commento