Eu tenho servidores de arquivos que são usados para armazenar arquivos. Os arquivos podem residir lá por uma semana ou por um ano. Infelizmente, quando removo arquivos do servidor, o df
comando não reflete o espaço liberado. Por fim, o servidor fica cheio ( df
mostra 99%) e meu script não envia mais arquivos para lá, exceto que pode haver algumas dezenas de GB de espaço livre lá.
Eu tenho noatime
flag nas partições montadas, se isso faz alguma diferença.
linux
filesystems
disk-space-utilization
Aminah Nuraini
fonte
fonte
Respostas:
A exclusão do nome do arquivo não exclui o arquivo. Algum outro processo está mantendo o arquivo aberto, fazendo com que ele não seja excluído; reinicie ou interrompa esse processo para liberar o arquivo.
Usar
para descobrir qual processo está usando um arquivo excluído (não vinculado).
fonte
como Ignacio menciona, excluir o arquivo não liberará espaço até você excluir os processos que possuem identificadores abertos nesse arquivo.
No entanto, você pode recuperar o espaço sem matar os processos. Tudo que você precisa fazer é remover os descritores de arquivo.
Primeiro execute lsof | grep excluído para identificar o processo que contém o arquivo
Em seguida, execute:
então
O "1" será o descritor de arquivo. Agora digite "> FD" para recuperar esse espaço
Pode ser necessário repetir a operação se houver outros processos mantendo o arquivo.
fonte
> FD
faz?>
comando tem um nome? eu tive que mudar do zsh para o bash para poder usá-lo. É possível executá-lo no zsh?Uma possibilidade é que os arquivos que você excluiu tenham mais referências no sistema de arquivos. Se você criou links físicos, vários nomes de arquivos apontarão para os mesmos dados, e os dados (o conteúdo real) não serão marcados como livres / utilizáveis até que todas as referências a eles sejam removidas. Antes de excluir os arquivos, stat-los (entrada denominada links) ou ls -l neles (deve ser a segunda coluna).
Se os arquivos forem referenciados em outro lugar, acho que você precisará ls -i o (s) arquivo (s) para encontrar o número do inode e, em seguida, faça uma busca com -inum <inode-number> para encontrar o outras referências a esse arquivo (você provavelmente também deseja usar -mount para permanecer no mesmo sistema de arquivos).
fonte
O arquivo ainda está bloqueado pelo processo de abertura. Para liberar espaço, siga estas etapas:
Execute
sudo lsof | grep deleted
e veja qual processo está mantendo o arquivo. Resultado de exemplo:Mate o processo usando
sudo kill -9 {PID}
. Na amostra acima, o PID é 1623.Execute
df
para verificar se o espaço já está liberado. Se ainda estiver cheio, talvez você precise esperar alguns segundos e verificar novamente.fonte
Se a partição foi configurada para reservar determinada parte do espaço em disco apenas para uso raiz,
df
não incluirá esse espaço como disponível.Mesmo após o espaço ser recuperado pela exclusão de arquivos / diretórios, o usuário não root não poderá gravar em uma partição específica.
Você pode verificar facilmente se esse é o seu caso, tentando criar um arquivo em um dispositivo como usuário root e não root.
Além disso, você pode verificar a configuração do sistema de arquivos executando
e calculando a porcentagem real por conta própria.
Para alterar o disco% reservado para uso somente raiz, execute
fonte
As outras respostas estão corretas: se você excluir um arquivo e o espaço não for liberado, geralmente é porque o arquivo ainda é mantido aberto ou há outros links para ele.
Para ajudar na solução de problemas, use uma ferramenta que indique onde o espaço da unidade está sendo gasto: Você pode usar
du
para obter uma visão geral de onde o espaço está indo. Melhor ainda, use uma ferramenta gráfica como xdiskusage (existem muitas como esta) para caçar o culpado. O xdiskusage e os amigos permitem pesquisar os maiores porcos espaciais para descobrir para onde o espaço está indo.Dessa forma, você encontrará rapidamente arquivos que ainda ocupam espaço por causa de um segundo link físico. Ele também mostrará o espaço ocupado por arquivos excluídos, mas abertos (como (permissão negada), acredito, pois não pode ler o nome do arquivo).
fonte
Desde que eu sei que muitos de vocês estão fazendo isso para redhat in
/var
e gzipping de arquivos, esperando que o FS encolha, mas, em vez disso, ele cresce, apenas certifique-se de reiniciar o syslog do serviço. emostraria isso de qualquer maneira.
fonte
Mais uma opção: o disco pode estar cheio devido a um processo que cria continuamente dados: logs, núcleos e similares. É possível que o espaço esteja realmente sendo liberado, mas seja imediatamente preenchido. Eu realmente vi esse caso.
df
neste caso, simplesmente não mostra a imagem do buraco. Usedu
para aprender mais.fonte
Estou usando EXT2, o FSCK me ajudou nessa situação. Tente shudown -F agora, depois de algumas reinicializações e fscks, vejo metade do espaço usado.
fonte
Para verificar quais arquivos excluídos ocuparam memória, digite o comando
Ele mostrará os arquivos excluídos que contêm memória.
Em seguida, mate o processo com pid ou nome
verifique agora você terá a mesma memória
Caso contrário, digite o comando abaixo para ver qual arquivo está ocupando memória
mencione qualquer tamanho, ele mostrará quais arquivos estão ocupando acima do tamanho limite e exclua o arquivo que você encontrará na memória retida
fonte
terminal aberto tente este comando df -Em seguida, use este comando sudo du -h --max-depth = 1 / neste comando você encontrará detalhes de uso do disco e, em seguida, será aberto como usuário root excluir o arquivo (root-local-share-lixo) e exclua seu arquivo
fonte