O Linux não vê um arquivo até que eu esteja nesse diretório

1

Eu tenho um problema muito estranho. Eu tenho um script PHP que é executado, envia um processo filho para ser executado e aguarda até que seja feito, verificando se há um arquivo OUTFILE.end para aparecer. O problema é que o arquivo aparece, mas o script php não vê o arquivo. Eu rastreei isso em um problema do Linux, pois se eu verificar usando a linha de comando, o Linux não o vê.

[katelyn@katelyn data]$ ls ./files/OUTFILE.end
ls: cannot access ./files/OUTFILE.end: No such file or directory

Eu sei que o arquivo OUTFILE.end está lá desde que o trabalho filho parou de ser executado. O segundo eu ls no diretório, o arquivo aparece.

[katelyn@katelyn data]$ ls -l ./files/
total 4
-rw-rw-r--. 1 katelyn katelyn  0 Sep 10 16:30 OUTFILE.end
-rw-rw-r--. 1 katelyn katelyn 19 Sep 10 16:30 OUTFILE.txt
[katelyn@katelyn data]$ ls ./files/OUTFILE.end
./files/OUTFILE.end

Estou rodando o CentOS release 6.5, e o diretório ./files/ é na verdade um link simbólico para outra pasta que está em um sistema de arquivos Lustre distribuído.

    
por user83765 11.09.2014 / 01:43

1 resposta

3

Isso está relacionado ao armazenamento em cache de atributos. O cliente NFS não deseja enviar pacotes para cada verificação. Ele supõe que, por um curto período de tempo, possa responder a perguntas sobre arquivos individuais em seu cache. No entanto, no seu caso, o cache não é mais válido.

As pesquisas de diretório não são respondidas do cache. Em vez disso, ele realmente envia um READDIR ou READDIR + pela rede e atualiza o cache.

Tente desativar a opção actimeo na sua montagem para reduzir o tempo que a cache é mantida válida.

    
por 11.09.2014 / 02:06

Tags