Путь экспорта NFS, содержащий «-» (тире)

10

Я немного напряжен с файлом экспорта NFS.

В частности, я не могу найти способ экспортировать каталог, содержащий «-» в имени пути.

Руководство (экспорт (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, либо заключен в двойные кавычки, он все равно ссылается на имя без "-"

Есть идеи? У меня есть большое количество каталогов, все формы

  • / Об / buildsystem-S3C2440
  • / Об / buildsystem-tao3530

и я бы предпочел, чтобы все они были доступны в качестве экспорта NFS. Если не считать замены "-" на "_" везде в сценариях, можно ли это сделать с помощью "-"?

qdot
источник
У меня нет четкого ответа, но мне это пришло в голову: есть ли у вас какой-нибудь менеджер nfs (возможно, какое-нибудь сырное приложение X), который сгенерирует файл экспорта для вас? Возможно, попробуйте на тестовом компьютере просто проверить синтаксис, а затем внедрить его в соответствующую коробку. Просто мысль ...
功 律 功
Я не знаю таких утилит ...
qdot
1
Какая версия nfs-utils у вас есть?
Кжетил Йоргенсен
У меня работает под Debian lenny (утилиты NFS 1.1.2, ядро ​​2.6.26) с /var/tmp/foo-bar localhost(all_squash,async,no_subtree_check)in /etc/exports.
Жиль "ТАК - перестань быть злым"
На какой ты системе? Я предполагаю, что вы можете использовать обратную косую черту, используя Linux nfs-kernel-server, но не Linux nfs-user-server.
Микель

Ответы:

3

Основываясь на этом тексте, я предполагаю, что вы работаете в Linux?

Если имя экспорта содержит пробелы, оно должно быть заключено в двойные кавычки. Вы также можете указать пробел или другой необычный символ в имени экспорта, используя обратную косую черту, за которой следует код символа в виде трех восьмеричных цифр.

В системах Linux есть две разные реализации NFS-сервера:

  • пользователь NFS
  • ядро NFS

Пожалуйста, попробуйте запустить, ps -ef | grep nfsdчтобы увидеть, какой у вас есть.

Я думаю, что пользователь NFS будет отображаться как nfsdили unfsd, а ядро ​​NFS будет отображаться как [nfsd].
(Обратите внимание, что у одного квадратные скобки, а у другого нет.)

С ядром NFS вы должны использовать двойные кавычки или восьмеричные экранированные символы, например

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

или

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

(Ссылка: nfs-utils-1.1.2, xgettokв support/nfs/xio.c)

В пользовательской NFS пробелы не допускаются в именах экспорта, но знак минус ( -) не должен требовать экранирования, например

/path/to/mount-point <options>

(Ссылка: nfs-пользователь-сервер-2.2beta47, filt_getcв auth_init.c)

Если вы не можете докопаться до сути, я бы предложил переключиться с пользовательской NFS на NFS ядра, чтобы вы могли использовать цитирование или восьмеричные экранированные символы.

В Debian и Ubuntu:

  • apt-get install kernel-nfs-server

На Red Hat и Fedora:

  • yum install nfs-utils
Mikel
источник
1

Работает ли экранирование с обратной косой чертой?

  • / Об / buildsystem \ -s3c2440
  • / Об / buildsystem \ -tao3530
nick3216
источник
Да, я попробовал это. Нет, это не работает :(
qdot
1

Вы пытались просто сбежать с \-. Я не эксперт по NFS, но стоит попробовать. Это работает во многих других ситуациях ...

Дэнни Стейпл
источник
Да, я попробовал это. Нет, это не работает
qdot
Здесь - графический инструмент NFS для рассмотрения: dailypackage.fedorabook.com/index.php?/archives/…
Дэнни Стейпл
1

Хорошо, может быть, другой обходной путь. Это немного хлопотно, но почему бы не создать каталог, содержащий символические ссылки на все предыдущие каталоги (для этого можно использовать скрипт или цикл while). Если имена символических ссылок не содержат тире, вы сможете экспортировать их. Таким образом, как вы и хотели, вам не нужно изменять имена ваших настоящих каталогов.

Я не уверен, что это сработает, но, наверное, стоит попробовать, не так ли?

Кристиан Винсено
источник
1

Это немного взломано, но вы можете создать bind mounts для каждого из каталогов и экспортировать места назначения bind mounts. Что-то типа:

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

Я не уверен, что наличие множества монтировок замедлит доступ к файлам.

Пасхальное солнце
источник