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 "-"?

qdot
quelle
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
Mikel
quelle
1

Funktioniert das Entkommen mit Backslash?

  • / vol / buildsystem \ -s3c2440
  • / vol / buildsystem \ -tao3530
nick3216
quelle
Ja, das habe ich versucht. Nein, das funktioniert nicht :(
qdot
1

Haben Sie versucht, einfach mit zu entkommen \-. Ich bin kein NFS-Experte - aber es ist einen Versuch wert. Es funktioniert in vielen anderen Situationen ...

Danny Staple
quelle
Ja, das habe ich versucht. Nein, das funktioniert nicht.
Qdot
Hier - ein grafisches NFS-Tool zu berücksichtigen: dailypackage.fedorabook.com/index.php?/archives/…
Danny Staple
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?

Christian Vincenot
quelle
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.

Ostersonnenschein
quelle