Ich muss eine Änderung in /etc/exports „fälschen“, damit mount -a ausgeführt wird. Wo liegt das Problem?

Ich muss eine Änderung in /etc/exports „fälschen“, damit mount -a ausgeführt wird. Wo liegt das Problem?

Wenn ich Server1 neu starten muss, kann ich NFS-Mounts auf Server2 nur wiederherstellen, indem ich eine der "fsid"-Ganzzahlen in der/etc/exportsDatei auf Server1. Andernfalls wird dieeinhängen -aBefehl hängt einfach auf Server2.

Typisches Szenario:

Server1 wird neugestartet. Auf Server1 habe ich zwei Codezeilen in/etc/exports:

/mnt/ramdisk/dir1 *(fsid=0,rw,no_root_squash,no_subtree_check,async)
/mnt/ramdisk/dir2 *(fsid=1,rw,no_root_squash,no_subtree_check,async)

Ich gebe diesen Befehl ein:

"exportfs -r".

Auf Server2 habe ich dies in/etc/fstab:

xxx.xxx.x.x:/server1_dir1/ /dir1_server2 nfs async,noatime 0 0
xxx.xxx.x.x:/server2_dir2  /dir2_server2 nfs async,noatime 0 0

Ich "umounte" zuerst die alten Verzeichnisse, die jetzt veraltete NFS-Handles haben. Dann

"mount -a"

Der Befehl hängt. Nachdem ich ihn beendet habe,dfzeigt, dass Verzeichnis 1 gemountet ist, Verzeichnis 2 jedoch nicht.

Die einzige Möglichkeit, beide Verzeichnisse zu mounten, besteht darin, die fsid-Ganzzahl in etwas anderes zu ändern. Auf Server1 haben wir jetzt beispielsweise:

/mnt/ramdisk/dir1 *(fsid=0,rw,no_root_squash,no_subtree_check,async)
/mnt/ramdisk/dir2 *(fsid=2,rw,no_root_squash,no_subtree_check,async)

ich habe mich verändertfsid=1 bis =2Ich erteile noch einmal dieexportfs -rBefehl, und voilà, dieeinhängen -aBefehl funktioniert auf Server2.

Vielleicht verstehe ich nicht, wasfsiddas tut es wirklich, aber es muss doch offensichtlich einen besseren Weg geben, NFS „neu zu mounten“, als jedes Mal die FSId-Nummer zufällig bearbeiten zu müssen?

BEARBEITEN: Wenn ich nicht habefsidin meiner Exportdatei auf Server1 enthalten, gibt es mir

"Warning: /mnt/ramdisk/dir1 requires fsid= for NFS export" 

Und wenn ich für beide Zeilen (dir1 und dir2) fsid=0 einstelle, sind die Einhängepunkte am Ende dieselben, da alle meine Dateien an den Speicherort dir1 kopiert wurden! Es scheint also, dass die einzige Möglichkeit, wie das funktionieren kann, darin besteht, die fsid-Ganzzahlen ständig und mehr oder weniger zufällig zu wechseln.

BEARBEITEN2: Ich entferntefsid=0da es "speziell" ist, und änderte sie infsid=1Undfsid=2In/etc/exportsauf Server1. Das hat natürlich funktioniert (da die Datei geändert wurde). Aber heute musste ich einfach zwangsweise neu starten und nachdem ich die veralteten Laufwerke (langsam) von Server2 ausgehängt hatte,einhängen -aschlug fehl, wie zuvor. Also bearbeitete ich (wie zuvor) die Exportdatei auf Server1, diesmalfsid=2Undfsid=3,exportfs -r, und voilà,einhängen -afunktioniert wieder auf Server2. Zurück auf Feld 1.

BEARBEITEN3Wichtige Informationen: Wenn ich alles kontrolliert herunterfahre (d. h. Server1 „stürzt nicht ab“) und zuerst die Verzeichnisse auf Server2 aushänge, dann Server1 neu starte und DANN -a auf Server2 einhänge, funktioniert es einwandfrei. Dieses Problem tritt nur auf, wenn die Einhänge auf Server2 abrupt unterbrochen werden. Ich vermute also, dass auf Server2 etwas zurückgesetzt werden muss? Ich weiß, dass es lange dauert, die veralteten Handles auf Server2 auszuhängen, nachdem Server1 abgestürzt ist.

Antwort1

Ich vermute, dass das Problem durch die Verwendung von fsid=0in einem Ihrer Exporte verursacht wird.

Denken Sie daran, dass dies fsiddazu gedacht ist, Geräte eindeutig zu identifizieren, wenn der zugrunde liegende Dateisystemtreiber keine eigenen eindeutigen IDs bereitstellt. Und insbesondere fsid=0hat einespezielle Bedeutung:

Für NFSv4 gibt es ein eindeutiges Dateisystem, das die Wurzel aller exportierten Dateisysteme ist. Dies wird mit fsid=rootoder angegeben fsid=0, wobei beides genau dasselbe bedeutet.

Da dies eindeutig nicht das ist, was Sie möchten, verwenden Sie immer eine FID ungleich 0.

verwandte Informationen