mount.nfs: Erro de identificador de arquivo obsoleto - não é possível extrair

2

Toda vez que tento montar um compartilhamento NFS, recebo isso:

>> mount -t nfs gitlab-replica-storage.blah.com:/export/registry-gitlab-prod-data-vol /mnt/test
mount.nfs: Stale file handle

O problema é que não posso desmontar, como diz:

>> umount -f -l /mnt/test
umount: /mnt/test: not mounted

Eu tentei verificar se algum processo estava usando o ponto de montagem, mas esse não é o caso.

Alguma outra alternativa para solucionar isso?

Como esclarecimento:

  • posso montá-lo em outra máquina.
  • Não consigo montá-lo em outro ponto de montagem na máquina afetada.
por djuarez 23.03.2018 / 13:51

3 respostas

2

The error, ESTALE, was originally introduced to handle the situation where a file handle, which NFS uses to uniquely identify a file on the server, no longer refers to a valid file on the server. This can happen when the file is removed on the server, either by an application on the server, some other client accessing the server, or sometimes even by another mounted file system from the same client. The NFS server also returns this error when the file resides upon a file system which is no longer exported. Additionally, some NFS servers even change the file handle when a file is renamed, although this practice is discouraged.

This error occurs even if a file or directory, with the same name, is recreated on the server without the client being aware of it. The file handle refers to a specific instance of a file and deleting the file and then recreating it creates a new instance of the file.

The error, ESTALE, is usually seen when cached directory information is used to convert a pathname to a dentry/inode pair. The information is discovered to be out of date or stale when a subsequent operation is sent to the NFS server. This can easily happen in system calls such as stat(2) when the pathname is converted a dentry/inode pair using cached information, but then a subsequent GETATTR call to the server discovers that the file handle is no longer valid.

This error can also occur when a change is made on the server in between looking up different components of the pathname to be looked up or between a successful lookup and a subsequent operation.

Link original sobre ESTALE: ESTALE LWN .

Sugiro que você verifique arquivos e diretórios no servidor NFS ou diga à administração do servidor NFS para fazer isso.

Talvez existam algumas entradas antigas de pagecache, inode e cache do dentry no servidor NFS. Por favor limpe:

# To free pagecache
echo 1 > /proc/sys/vm/drop_caches

# To free dentries and inodes
echo 2 > /proc/sys/vm/drop_caches

# To free pagecache, dentries and inodes
echo 3 > /proc/sys/vm/drop_caches
    
por 23.03.2018 / 14:41
3

Um mount -t nfs falha com Stale file handle se o servidor tiver algumas entradas antigas de exportação para esse cliente.

Cenário de exemplo: isso pode acontecer quando o servidor é reinicializado sem que o cliente desista primeiro dos volumes nfs. Quando o servidor está de volta e o cliente, em seguida, desmonta e tenta montar o volume nfs, o servidor pode responder com:

mount.nfs: Stale file handle

Você pode verificar isso usando /proc/fs/nfs/exports ou /proc/fs/nfsd/exports . Se houver entrada para o cliente, pode ser um problema obsoleto.

Você pode corrigir isso explicitamente pela desexportação e reexportação das exportações relevantes no servidor. Por exemplo, para fazer isso com todas as exportações:

# exportfs -ua
# cat /proc/fs/nfs/exports
# exportfs -a

Depois disso, o mount -t nfs ... do cliente deve ser bem-sucedido.

Note que mount yielding ESTALE é bem diferente de alguma outra chamada de sistema (como open / readdir / unlink / chdir ...) retornando ESTALE . A exportação está sendo obsoleta em comparação a um identificador de arquivo que está obsoleto. Um identificador de arquivo obsoleto ocorre facilmente com o NFS (por exemplo, um cliente tem um identificador de arquivo, mas o arquivo foi excluído no servidor).

    
por 03.06.2018 / 09:56
0

Verifique se a exportação está realmente montada:

# cat /proc/mounts | grep nfs

Erro de identificador de arquivo obsoleto significa que o servidor NFS contém uma versão antiga dos arquivos em seu caminho de exportação. Uma reinicialização do servidor NFS às vezes pode ajudar. Mas com sistemas operacionais mais antigos (RHEL / CentOS 6.9) às vezes é melhor reverter para o NFS3 em vez do NFS4. Na minha experiência, os clientes NFS4 mais antigos às vezes têm dificuldades com os servidores NFS4.1 mais novos. Isto é especialmente verdadeiro para o bloqueio de arquivos.

    
por 23.03.2018 / 14:41