mv para nfs “não é possível criar o arquivo normal… o arquivo existe”, mas cria um arquivo vazio

3

Eu tenho um script automatizado que move arquivos de dados do computador em que eles são coletados para um servidor NFS central para acesso mais geral. Recentemente, vi cerca de 1% dos arquivos não serem movidos, com mv relatando um erro sobre o arquivo já existente:

mv: cannot create regular file '/mnt/data/2015/20150410_004130.dat': File exists

A coisa é que até imediatamente antes, o arquivo não existe , e depois que o mv tenta criá-lo, ele existe, mas com tamanho 0, permissões 0000 e uma data no Década de 1970 (a data exata parece aumentar um pouco a cada vez que isso acontece).

Eu atualizei meu script para executar mv usando strace , e os casos que falham são exatamente iguais aos que têm êxito até que ocorra a falha real:

  1. tente renomear diretamente. Falha (link inválido entre dispositivos)
  2. desvincular o destino. Falha (nenhum arquivo ou diretório)
  3. arquivo de código aberto para leitura
  4. arquivo de destino aberto com opções O_WRONLY | O_CREAT | O_EXCL, permanentes 0600. Geralmente funciona, ocasionalmente falha, alegando que "Arquivo existe"

Estou bastante confiante de que nada mais deveria estar tentando criar esse arquivo, embora haja outro script que esteja processando arquivos de dados (na verdade, movendo-os para outro servidor) assim que estiverem concluídos.

Esse comportamento parece ter sido iniciado na mesma época em que atualizei do Ubuntu 10.04 para o Ubuntu 14.04 no servidor NFS (a configuração do cliente não é alterada).

    
por arcticmac 10.04.2015 / 05:23

0 respostas

Tags