Exportar caminho NFS contendo "-" (traço)


10

Estou um pouco preocupado com o arquivo de exportação NFS.

Especificamente, não consigo encontrar uma maneira de exportar um diretório contendo "-" no nome do caminho.

O manual (exportações (5)) declara:

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.

Em seguida, afirma:

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.

Infelizmente, este não é o caso. Especificamente, se o nome do caminho contiver "-", literalmente ou com \ 055 ou estiver entre aspas duplas, ele ainda se refere ao nome sem "-"

Alguma ideia? Eu tenho um grande número de diretórios, todos no formato

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

e eu prefiro tê-los todos disponíveis como exportações nfs. Com exceção de substituir o "-" por "_" em todos os lugares nos scripts, isso pode ser feito com "-"?


Não tenho uma resposta sólida, mas isso veio à minha mente: você tem algum tipo de gerenciador de nfs disponível (provavelmente algum aplicativo X brega) que geraria o arquivo de exportação para você? Talvez tente na máquina de teste apenas para verificar a sintaxe e depois implementar na caixa em questão. Apenas um pensamento ...
英律功

Eu não sei de qualquer um desses utils ...
Qdot

1
Qual versão do nfs-utils você possui?
Kjetil Jørgensen

Funciona para mim no Debian lenny (NFS utils 1.1.2, kernel 2.6.26) com o /var/tmp/foo-bar localhost(all_squash,async,no_subtree_check)in /etc/exports.
Gilles 'SO- stop be evil'

Em que sistema você está? Meu palpite é que você pode escapar da barra invertida usando o Linux nfs-kernel-server, mas não o Linux nfs-user-server.
Mikel

Respostas:


3

Com base neste texto, suponho que você esteja no Linux?

Se um nome de exportação contiver espaços, ele deverá ser citado usando aspas duplas. Você também pode especificar espaços ou outro caractere incomum no nome da exportação usando uma barra invertida seguida pelo código de caractere como três dígitos octais.

Existem duas implementações de servidor NFS diferentes nos sistemas Linux:

  • usuário NFS
  • NFS do kernel

Por favor, tente correr ps -ef | grep nfsdpara ver qual deles você possui.

Eu acho que o usuário NFS aparecerá como nfsdou unfsde o NFS do kernel aparecerá como [nfsd].
(Observe como um possui colchetes, mas o outro não.)

Com o NFS do kernel, você deve usar aspas duplas ou escapes octais, por exemplo

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

ou

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

(Referência: nfs-utils-1.1.2, xgettokpol support/nfs/xio.c)

Com o NFS do usuário, os espaços não são permitidos nos nomes de exportação, mas um sinal de menos ( -) não deve exigir escape, por exemplo,

/path/to/mount-point <options>

(Referência: nfs-user-server-2.2beta47, filt_getcpol auth_init.c)

Se você não conseguir chegar ao fundo, sugiro alternar entre o NFS do usuário e o NFS do kernel, para que você possa usar aspas ou octais.

No Debian e Ubuntu:

  • apt-get install kernel-nfs-server

No Red Hat e no Fedora:

  • yum install nfs-utils

1

Escapar com barra invertida funciona?

  • / vol / buildsystem \ -s3c2440
  • / vol / sistema de compilação \ -tao3530

Sim, eu tentei isso. Não, isso não funciona :(
qdot 13/12/10


1

Ok, talvez outra solução alternativa. É um pouco problemático, mas por que não criar um diretório contendo links simbólicos para todos os diretórios anteriores (um script ou um loop while pode ser usado para isso). Se os nomes dos links simbólicos não contiverem nenhum traço, você poderá exportá-los. Dessa forma, como você desejou, você não precisaria modificar os nomes dos seus diretórios reais.

Não tenho certeza se funcionaria, mas provavelmente vale a pena tentar, não é?


1

Isso é um pouco complicado, mas você pode criar montagens de ligação para cada um dos diretórios e exportar os destinos das montagens de ligação. Algo como:

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

Não tenho certeza se ter toneladas de montagens retardará o acesso a arquivos.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.