Por que o rm através do NFS não libera espaço imediatamente?

1

Eu estou em um servidor SUSE Enterprise que montou uma unidade por meio de uma montagem NFS. Eu criei um arquivo de 34GB via dd if=/dev/Zero of=test_file bs=8k Count=4194304 para testar a velocidade de gravação do compartilhamento NFS. Depois disso, apaguei o arquivo via rm test_file e, em seguida, usei imediatamente df .

O valor na coluna used da saída de df começa a diminuir. Eu atualizo chamando df a cada ~ 10 segundos e toda vez que vejo que o valor used diminuiu em ~ 2GB.

Portanto, parece que o comando rm test_file não parece ter terminado seu trabalho, embora eu tenha o prompt de comando disponível novamente (assim rm deve ter retornado "0", certo?). O que está acontecendo aqui no fundo?

    
por Robert 18.09.2018 / 17:34

1 resposta

1

O sistema de arquivos no nó remoto que está fornecendo o armazenamento de back-end para o compartilhamento NFS não está liberando o espaço imediatamente.

Estritamente falando, a semântica POSIX não requer a remoção de um arquivo para liberar imediatamente o espaço que ele estava usando (eles realmente não exigem que ele libere espaço , o que é meio que importante para alguns casos de uso). Devido a isso, e ao fato de que pode levar muito tempo para liberar espaço, alguns sistemas de arquivos não esperam que a desalocação aconteça, e apenas retornam quando podem garantir que a entrada do arquivo não apareça nas listagens de diretórios ( que é tudo o que o POSIX requer).

Possíveis razões que podem levar algum tempo para o espaço livre incluem:

  • O sistema de arquivos pode limpar o espaço vazio conforme é liberado para impedir a divulgação de informações. Isso é quase sempre uma operação cara.
  • O sistema de arquivos pode estar em um SSD ou em um armazenamento thin provisioned e configurado para informar às camadas inferiores que o espaço não está sendo usado. Esta operação também pode levar muito tempo.
  • O sistema de arquivos pode precisar atualizar as estruturas de dados para fins de contabilidade interna. Isso pode ou não levar muito tempo, mas geralmente não é trivial.
  • O sistema de arquivos pode precisar atualizar as estruturas de dados internas para manipular corretamente quaisquer reflinks ou outras regiões compartilhadas no arquivo.
por 18.09.2018 / 21:48