NFS herexporteren via een VPN is geen pakketdoorsturing
De middelste machine is cliënt en server, geen router. Bestandssysteem-ID's, ingepakte bestandshandles en ontbrekende vergrendelingsondersteuning veranderen elk het ontwerp.
Een Linux-machine sluit zich aan bij een VPN, koppelt een externe NFS-export en serveert die koppeling vervolgens aan een andere set cliënten. Deze opzet lijkt op routering met extra stappen, en dat is de eerste verkeerde aanname. De middelste machine is cliënt van de bovenliggende server en server voor de onderliggende cliënten, en neemt deel aan beide bestandsservice-relaties. Pakketdoorsturing heeft geen mening over bestandshandles, vergrendeling of bestandssysteemidentiteit; een herexport wel.
Begin met de vraag of de onderliggende cliënten de oorspronkelijke server rechtstreeks konden bereiken. Als dat kan, is de middelste machine optioneel.
Drie modellen, drie verhalen over consistentie
Direct koppelen is het eenvoudigst: elke cliënt koppelt de oorspronkelijke server via de tunnel, en het exportbeleid van die server bepaalt de toegang. Herexporteren is de middelste machine die een andere servicengrens presenteert, wat nuttig is wanneer het netwerk aan de cliëntzijde de server niet rechtstreeks mag bereiken. Replicatie is een derde model, en het verschuift de vraag van consistentie naar synchronisatie en conflictoplossing.
Beschrijf een gerepliceerde kopie niet alsof het een live herexport is. De faalmodi verschillen, en een gebruiker die verwacht dat elke bewerking het oorspronkelijke bestandssysteem bereikt, wordt verrast tijdens een verbindingsstoring.
Identiteit overleeft het koppelcommando
Herexports hebben een expliciete bestandssysteem-ID nodig, en die identiteit moet herstarts en configuratieherbouw overleven. De kerneldocumentatie is duidelijk over de eis, en waarschuwt ook dat crossmnt de noodzaak niet wegneemt om dochterbestandssystemen met hun eigen ID's te exporteren. Een mappenboom die voor een gebruiker aaneengesloten lijkt, kan meerdere bestandssysteemgrenzen overschrijden. Huidige nfs-utils kunnen ID's automatisch toewijzen voor ondersteunde configuraties, en wanneer ze dat doen, wordt hun database deel van de status van de gateway. Behandel die ID's als service-identiteit in plaats van wegwerpartikelen.
Bestandshandles zijn de andere identiteitsgrens: een herexport verpakt de oorspronkelijke handle, waardoor die groter wordt en de limiet van een cliënt kan overschrijden. Een geslaagde koppeling bewijst niet dat elke exportindeling compatibel is.
Niet elke NFS-functie overleeft de middelste machine
De gids voor herexporteren van de kernel stelt dat de herexporterende server geen vergrendeling of delegatieverzoeken ondersteunt. Applicaties die van die bewerkingen afhankelijk zijn, hebben een ander pad nodig of een ontwerp dat daartegen is geverifieerd. Een geslaagde koppeling en een werkende mapinhoud tonen niet aan dat de echte bewerkingen van de applicatie werken.
Gebruikersidentiteit en exportbeleid zijn ook bij elke sprong van belang. Een VPN-aanmelding bewijst dat een netwerkdeelnemer is geauthenticeerd; het machtigt geen NFS-gebruiker, en het stuurt de inloggegevens van een cliënt niet via de gateway door.
De gateway heeft twee bovenliggende afhankelijkheden
De gateway is afhankelijk van de VPN voor de bovenliggende koppeling en van de bovenliggende server voor het bestandssysteem zelf. Een lokaal exportproces dat nog draait, kan niet-beschikbare opslag niet gezond maken. Plan de startvolgorde, het herverbindingsgedrag en de herstarts van de server, inclusief wat er gebeurt met bestandshandles die cliënten al hebben. Een cliënt die via de gateway koppelde en zijn handle kwijtraakte, heeft een nieuwe koppeling nodig, en dat is een operationele gebeurtenis en geen transparant herstel.
Als alles wat de eis ooit nodig had bereikbaarheid van privé-IP's was, is directe routering naar de oorspronkelijke server de eenvoudiger architectuur. De herexport zou moeten bestaan om een reden die het overleeft om opgeschreven te worden.
Test de werklast, niet de koppeling
Oefen de echte bestandswerklast in een gecontroleerde omgeving: de bewerkingen die de applicatie uitvoert, de bestandsgrootten die ze gebruikt en de gelijktijdigheid die ze verwacht. Let op de functiegaten en niet alleen op transportfouten. Noteer daarna welk model u koos en waarom, want anders gaat de volgende persoon ervan uit dat de gateway een router is.
Een herexport is legitiem wanneer die om een bewuste reden bestaat, zoals een geïsoleerd cliëntnetwerk of een gecontroleerde versiegrens. Het is een slecht ongeluk, en het verschil is of iemand het heeft besloten.