Comportamento estranho de samba e gvfs - ~ metade dos diretórios / arquivos aparece aleatoriamente como "ausente"

1

A situação: Servidor com o Gentoo Linux e o Samba nele. Há cerca de 15 PCs com Windows, um MacBook Pro e um laptop da Samsung com o Ubuntu. Não há domínio, apenas um grupo de trabalho e o servidor é usado apenas para compartilhamentos do Samba. No Ubuntu eu uso o gvfs para montar compartilhamentos do samba.

E o problema: Um dia, cerca de metade dos diretórios desapareceu, mas apenas ao visualizar neste laptop Ubuntu. Se eu ssh para o servidor eu posso ver os arquivos / dirs que estão faltando e eu também posso ver as coisas que estão faltando nos computadores win ou mac.

O tempfix: Quando renomeio alguns dos diretórios ausentes, mesmo que seja um símbolo, os diretórios ausentes reaparecem… mesmo sem recarregar / atualizar o compartilhamento montado pelo gvfs. Se eu mudar o nome instantaneamente de volta para os nomes de diretórios / arquivos anteriores, todos os arquivos / pastas que estiverem faltando instantaneamente desaparecerão de novo.

Então, como esse problema reapareceu novamente cerca de um mês depois, eu poderia usar alguns conselhos sobre onde começar a verificar.

    
por elv 02.07.2012 / 18:24

1 resposta

1

Eu poderia ter experimentado um problema semelhante, mas apenas com um único arquivo ausente. Eu suspeito que o auxiliar de montagem do samba do linux é problemático.

Você poderia realizar os seguintes testes em seu cliente?

cd [dir-with-missing-subdirs]

ls -al | grep [missing name]     -> nothing found (readdir is broken)
ls -al [missing name]            -> lists the element (stat working) -- use -d when [missing name] is a directory

To find out if kernel is hiding those files from you:

umount smb-share
start "tcpdump -p -i [your nic] -s0 -w net.dump host [your samba host]"
mount the share
run the "ls -al | grep [missing name]" test
stop tcpdump
Verify that the filename is in tcpdump, but not shown in dirlisting. Therefore:
strings --encoding=b net.dump | grep [missing name]
strings --encoding=l net.dump | grep [missing name]

Se o nome estiver incluído pelo menos uma vez, isso indicaria que o servidor samba está enviando toda a listagem, mas o linux descarta algumas entradas.

    
por 19.07.2012 / 08:21