Exportieren Sie den NFS-Pfad mit "-" (Bindestrich).


10

Ich bin in einer Notlage mit NFS-Exportdatei.

Insbesondere kann ich keine Möglichkeit finden, ein Verzeichnis zu exportieren, das "-" im Pfadnamen enthält.

Handbuch (Exporte (5)) besagt:

Also, each line may have one or more specifications for default options 
after the path name, in the form of a dash ("-") followed by an option 
list. The option list is used for all subsequent exports on that line 
only.

Es heißt dann:

If an export name contains spaces it should be quoted using double quotes. 
You can also specify spaces or other unusual character in the export name 
using a backslash followed by the character code as three octal digits.

Dies ist leider nicht der Fall. Insbesondere wenn der Pfadname "-" enthält, entweder wörtlich oder mit \ 055 oder in doppelten Anführungszeichen steht, bezieht er sich immer noch auf den Namen ohne "-"

Irgendwelche Ideen? Ich habe eine große Anzahl von Verzeichnissen, alle in der Form

  • / vol / buildsystem-s3c2440
  • / vol / buildsystem-tao3530

und ich würde es vorziehen, sie alle als NFS-Exporte verfügbar zu haben. Kann das "-" nicht überall in den Skripten durch "_" ersetzt werden, sondern mit "-"?


Ich habe keine solide Antwort, aber diese kam mir in den Sinn: Haben Sie eine Art NFS-Manager zur Verfügung (wahrscheinlich eine kitschige X-App), der die Exportdatei für Sie generieren würde? Versuchen Sie es vielleicht auf einem Testcomputer, um die Syntax zu überprüfen und dann auf der betreffenden Box zu implementieren. Nur ein Gedanke ...
律 功

Ich kenne keine solchen Utensilien ...
Qdot

1
Welche Version von nfs-utils hast du?
Kjetil Jørgensen

Funktioniert für mich unter Debian Lenny (NFS Utils 1.1.2, Kernel 2.6.26) mit /var/tmp/foo-bar localhost(all_squash,async,no_subtree_check)in /etc/exports.
Gilles 'SO - hör auf böse zu sein'

Auf welchem ​​System bist du? Ich vermute, dass Sie einen Backslash unter Linux verwenden können nfs-kernel-server, aber nicht unter Linux nfs-user-server.
Mikel

Antworten:


3

Aufgrund dieses Textes gehe ich davon aus, dass Sie unter Linux arbeiten.

Wenn ein Exportname Leerzeichen enthält, sollte er in doppelte Anführungszeichen gesetzt werden. Sie können im Exportnamen auch Leerzeichen oder andere ungewöhnliche Zeichen angeben, indem Sie einen Backslash gefolgt vom Zeichencode als drei oktale Ziffern verwenden.

Auf Linux-Systemen gibt es zwei verschiedene NFS-Server-Implementierungen:

  • Benutzer NFS
  • Kernel NFS

Bitte versuchen Sie zu rennen, um ps -ef | grep nfsdzu sehen, welche Sie haben.

Ich denke, Benutzer-NFS wird als nfsdoder unfsdangezeigt, und Kernel-NFS wird als angezeigt [nfsd].
(Beachten Sie, wie einer eckige Klammern hat, der andere jedoch nicht.)

Bei Kernel-NFS sollten Sie doppelte Anführungszeichen oder oktale Escapezeichen verwenden, z

"/path/to/mount-point" <options>

oder

/path/to/mount\055point <options>

(Referenz: nfs-utils-1.1.2, xgettokin support/nfs/xio.c)

Mit Benutzer-NFS sind Leerzeichen in Exportnamen nicht zulässig, aber ein Minuszeichen ( -) sollte kein Escapezeichen erfordern, z

/path/to/mount-point <options>

(Referenz: nfs-user-server-2.2beta47, filt_getcin auth_init.c)

Wenn Sie dem nicht auf den Grund gehen können, würde ich empfehlen, von Benutzer-NFS zu Kernel-NFS zu wechseln, damit Sie Anführungszeichen oder Oktal-Escapezeichen verwenden können.

Auf Debian und Ubuntu:

  • apt-get install kernel-nfs-server

Auf Red Hat und Fedora:

  • yum install nfs-utils

1

Funktioniert das Entkommen mit Backslash?

  • / vol / buildsystem \ -s3c2440
  • / vol / buildsystem \ -tao3530

Ja, das habe ich versucht. Nein, das funktioniert nicht :(
qdot


1

Ok, vielleicht eine andere Problemumgehung. Es ist etwas mühsam, aber warum nicht ein Verzeichnis erstellen, das symbolische Links zu allen vorherigen Verzeichnissen enthält (hierfür könnte ein Skript oder eine while-Schleife verwendet werden). Wenn die Namen der symbolischen Links keinen Bindestrich enthalten, sollten Sie sie exportieren können. Auf diese Weise müssten Sie, wie Sie möchten, die Namen Ihrer realen Verzeichnisse nicht ändern.

Ich bin mir nicht sicher, ob es funktionieren würde, aber es lohnt sich wahrscheinlich, es auszuprobieren, nicht wahr?


1

Dies ist ein kleiner Hack, aber Sie können Bindungs-Mounts für jedes der Verzeichnisse erstellen und die Bind-Mounts-Ziele exportieren. Etwas wie:

mount -o bind /vol/buildsystem-s3c2440 /vol/buildsystems3c2440
mount -o bind /vol/buildsystem-tao3530 /vol/buildsystemtao3530

Ich bin mir nicht sicher, ob Tonnen von Mounts den Dateizugriff verlangsamen werden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.