mkdir fornece erros diferentes (permissão negada vs. arquivo existe) dependendo se o diretório foi acessado recentemente

6

problema

Primeiro, faço login em uma nova estação de trabalho.

myAcct@ws5: mkdir /users/adminAcct/foo/parentDir/childDir
mkdir: cannot create directory ‘/users/adminAcct/foo/parentDir/childDir’: Permission denied

Um erro Permission denied , mesmo que o childDir exista.

Se eu acessar o childDir, esse erro será alterado. Eu posso fazer isso no iPython com os.path.isdir() ou no shell com ls .

myAcct@ws5: ls /users/adminAcct/foo/parentDir/childDir
file.cfg
myAcct@ws5: mkdir /users/adminAcct/foo/parentDir/childDir
mkdir: cannot create directory ‘/users/adminAcct/foo/parentDir/childDir’: File exists

Eu quero ser capaz de retornar consistentemente um erro 'Arquivo existe'.

plano de fundo

Eu tenho a permissão --x group no diretório pai, /users/adminAcct/foo/parentDir . O diretório filho /users/adminAcct/foo/parentDir/childDir existe e tenho r-x permissões de grupo nesse diretório. Isso originalmente começou como um problema em python, mas eu consegui recriá-lo no shell. Estou trabalhando em estações de trabalho do CentOS 6 que fazem parte de um cluster que possui diretórios base montados via NFS. O diretório /users está em /etc/fstab e é montado com as opções (rw,vers=3,hard,intr,addr=<some IP addr>) . O kernel é Linux ws5.MyCompany.com 2.6.32-431.17.1.el6.x86_64 #1 SMP Wed May 7 23:32:49 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

contexto

Por algum tempo após eu acessar o diretório filho, o mkdir continuará a retornar File exists erros. Após algum período, o mkdir retornará novamente erros Permission denied . Isso cria problemas intermitentes ao iniciar e executar os trabalhadores CeleryExecutor de fluxo de ar nessas estações de trabalho, usando /users/adminAcct/foo/parentDir/childDir as AIRFLOW_HOME . Eu não tenho sido capaz de prever quando esses problemas irão reaparecer.

    
por hhoke1 22.08.2017 / 23:50

1 resposta

1

O cliente NFS armazena os atributos em cache, que têm um tempo limite baseado no relógio de parede.

Isso melhora o desempenho, mas fornece resultados 'ligeiramente incorretos' em alguns cenários. O UNIX padrão garante a existência de arquivos, etc., nem sempre são atendidos pela natureza da maneira como o cliente trabalha.

Uma maneira de aliviar isso é desabilitar o cache do lado do cliente ( noac ), ou apenas o cache de entrada de diretório ( lookupcache=none ) - veja link

    
por 17.04.2018 / 09:21