「-」(ダッシュ)を含むNFSパスをエクスポート


10

NFSエクスポートファイルに少し困っています。

具体的には、パス名に「-」を含むディレクトリをエクスポートする方法が見つかりません。

マニュアル(exports(5))の状態:

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.

それはそれから述べます:

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.

残念ながら、そうではありません。具体的には、パス名に「-」がそのまま含まれている場合、\ 055が含まれている場合、または二重引用符で囲まれている場合でも、「-」なしの名前が参照されます。

何か案は?多数のディレクトリがあり、すべての形式

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

そして、それらすべてをnfsエクスポートとして利用できるようにしたいと思います。スクリプトのすべての場所で「-」を「_」に置き換えるのではなく、「-」で行うことができますか?


確かな答えはありませんが、これは頭に浮かびました。エクスポートファイルを生成するnfsマネージャーの種類(おそらく安っぽいXアプリ)はありますか?たぶん、構文をチェックして問題のボックスに実装するために、テストマシンで試してみてください。Just a
Thought

私はそのような
ユーティリティを

1
nfs-utilsのどのバージョンがありますか?
KjetilJørgensen、2010

Debian lenny(NFS utils 1.1.2、カーネル2.6.26)で動作/var/tmp/foo-bar localhost(all_squash,async,no_subtree_check)/etc/exportsます。
Gilles「SO-邪悪なことをやめ

どのシステムを使用していますか?Linux nfs-kernel-serverではなくバックスラッシュでエスケープできると思いますが、Linux ではできませんnfs-user-server
ミケル

回答:


3

このテキストに基づいて、私はあなたがLinuxを使用していると思いますか?

エクスポート名にスペースが含まれる場合は、二重引用符を使用して引用する必要があります。バックスラッシュとそれに続く3桁の8進数の文字コードを使用して、エクスポート名にスペースやその他の特殊な文字を指定することもできます。

Linuxシステムには、2つの異なるNFSサーバー実装があります。

  • ユーザーNFS
  • カーネルNFS

実行ps -ef | grep nfsdしてみてください。

私は、ユーザーNFSのように表示されます考えるnfsdunfsd、カーネルNFSのように表示されます[nfsd]
(角括弧は1つありますが、もう1つはないことに注意してください。)

カーネルNFSでは、二重引用符または8進エスケープを使用する必要があります。

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

または

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

(参考:NFS-utilsの-1.1.2、xgettoksupport/nfs/xio.c

ユーザーNFSでは、エクスポート名にスペースを使用できませんが、マイナス記号(-)はエスケープする必要がありません。たとえば、

/path/to/mount-point <options>

(参考:NFS-ユーザーのサーバー2.2beta47、filt_getcauth_init.c

一番下に行けない場合は、ユーザーNFSからカーネルNFSに切り替えて、引用符または8進エスケープを使用できるようにすることをお勧めします。

DebianおよびUbuntuの場合:

  • apt-get install kernel-nfs-server

Red HatおよびFedoraの場合:

  • yum install nfs-utils

1

バックスラッシュでエスケープできますか?

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

はい、試しました。いいえ、これは機能しません:(
qdot


1

わかりました、おそらく別の回避策。少し面倒ですが、以前のすべてのディレクトリへのシンボリックリンクを含むディレクトリを作成してみませんか(スクリプトまたはwhileループをこれに使用できます)。シンボリックリンクの名前にダッシュが含まれていない場合は、エクスポートできます。この方法では、希望どおり、実際のディレクトリの名前を変更する必要はありません。

うまくいくかどうかはわかりませんが、試してみる価値はあるでしょうか。


1

これは少しハックですが、各ディレクトリにバインドマウントを作成し、バインドマウントの宛先をエクスポートできます。何かのようなもの:

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

ただし、大量のマウントがあるとファイルアクセスが遅くなるかどうかはわかりません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.