Una macchina Linux si unisce a una VPN, monta un'esportazione NFS remota e poi serve quel mount a un altro insieme di client. Questa disposizione sembra routing con passaggi extra, e questa è la prima ipotesi sbagliata. La macchina intermedia è client del server a monte e server per i client a valle, e partecipa a entrambe le relazioni di servizio file. L'inoltro di pacchetti non ha opinioni su handle di file, locking o identità del filesystem; una riesportazione sì.

Inizia chiedendo se i client a valle potrebbero raggiungere il server originale direttamente. Se possono, la macchina intermedia è facoltativa.

Tre modelli, tre storie di coerenza

Il mount diretto è il più semplice: ogni client monta il server originale attraverso il tunnel, e la politica di esportazione di quel server governa l'accesso. La riesportazione è la macchina intermedia che presenta un confine di servizio diverso, utile quando la rete rivolta ai client non deve raggiungere direttamente il server. La replica è un terzo modello, e sposta la domanda dalla coerenza alla sincronizzazione e alla risoluzione dei conflitti.

Non descrivere una copia replicata come se fosse una riesportazione viva. Le modalità di guasto differiscono, e un utente che si aspetta che ogni operazione raggiunga il filesystem originale rimarrà sorpreso durante un'interruzione del collegamento.

L'identità sopravvive al comando di mount

Le riesportazioni richiedono un identificatore di filesystem esplicito, e questa identità deve sopravvivere a riavvii e ricostruzioni della configurazione. La documentazione del kernel è chiara sul requisito, e avverte anche che crossmnt non elimina la necessità di esportare i filesystem figli con i propri identificatori. Un albero di directory che sembra continuo a un utente può attraversare diversi confini di filesystem. Gli nfs-utils attuali possono assegnare identificatori automaticamente per configurazioni supportate, e quando lo fanno, il loro database diventa parte dello stato del gateway. Tratta questi identificatori come identità di servizio anziché come file usa e getta.

Gli handle di file sono l'altro confine di identità: una riesportazione incapsula l'handle originale, il che lo rende più grande e può superare il limite di un client. Un mount riuscito non dimostra che ogni disposizione di esportazione sia compatibile.

Non ogni funzionalità NFS sopravvive alla macchina intermedia

La guida alla riesportazione del kernel afferma che il server che riesporta non supporta il locking né le richieste di delega. Le applicazioni che dipendono da queste operazioni necessitano di un percorso diverso o di un progetto verificato rispetto a esse. Un mount riuscito e un elenco di directory funzionante non dimostrano che le operazioni reali dell'applicazione funzionino.

L'identità utente e la politica di esportazione contano anche a ogni salto. Un accesso VPN dimostra che un partecipante della rete si è autenticato; non autorizza un utente NFS e non inoltra le credenziali di un client attraverso il gateway.

Il gateway ha due dipendenze a monte

Il gateway dipende dalla VPN per il mount a monte e dal server a monte per il filesystem stesso. Un processo di esportazione locale ancora in esecuzione non può rendere sano un archivio non disponibile. Pianifica l'ordine di avvio, il comportamento di riconnessione e i riavvii del server, incluso ciò che accade agli handle di file che i client già detengono. Un client che ha montato attraverso il gateway e ha perso il suo handle necessita di un nuovo mount, e questo è un evento operativo e non un recupero trasparente.

Se tutto ciò di cui il requisito aveva bisogno era la raggiungibilità di IP privati, il routing diretto al server originale è l'architettura più semplice. La riesportazione dovrebbe esistere per una ragione che sopravvive all'essere scritta.

Testa il carico di lavoro, non il mount

Esercita il carico di file reale in un ambiente controllato: le operazioni che l'applicazione esegue, le dimensioni dei file che usa e la concorrenza che si aspetta. Osserva le lacune funzionali e non solo gli errori di trasporto. Poi annota quale modello hai scelto e perché, altrimenti la persona successiva presumerà che il gateway sia un router.

Una riesportazione è legittima quando esiste per una ragione deliberata, come una rete di client isolata o un confine di versione controllato. È un brutto incidente, e la differenza è se qualcuno lo ha deciso.

Articoli correlati