Por que os resultados du e quota não correspondem?

7

Eu excedi minha cota de disco em um sistema que não tenho acesso root. Eu tentei remover arquivos antigos, mas ainda estou acabado. Eu tentei executar du para descobrir onde estou usando todo o meu espaço, mas relata que estou usando muito pouco.

Resultados de quota

   /home/1234$ quota -s
   Disk quotas for user 1234 (uid 1234): 
        Filesystem   space   quota   limit   grace   files   quota   limit   grace
       cslab:/home   4519M*  4096M   5120M   09:47    6155       0       0 

De du

   /home/1234$ du -mad 1
   ...
   936     total

Não entendo por que quota diz que estou usando 4,5 GB, enquanto du conta apenas 0,9 GB. Também verifiquei os arquivos que possuo em /tmp e havia 50 MB de arquivos lá. Onde os outros 3.5GB de arquivos poderiam ser? É possível que o sistema de cotas esteja errado e precise ser redefinido?

    
por Brandon Clements 22.09.2014 / 19:39

2 respostas

2

Eu acredito que pode haver alguns arquivos ainda abertos por alguns processos. Você pode tentar listá-los usando

lsof | grep username | grep deleted

Uma versão melhor seria usar

lsof +L1 | grep username

No entanto, às vezes pode haver discrepância na saída entre du e quota , o que é explicado neste link . Trecho do link,

In Unix, the du and quota commands may report different values. The reason for this discrepancy is that the process which goes through the file system, checks quotas, and updates the usage tables only runs at specific times. Therefore, there will be periods between quota checks that the quota -v command will report incorrect disk usage. Use the du command for the most accurate information about the size of your files.

    
por 22.09.2014 / 20:01
2

quota funciona consultando o sistema de arquivos para os blocos realmente ocupados por seus arquivos.

du funciona lendo diretórios recursivamente para seus arquivos.

Os dois métodos podem produzir resultados diferentes. Por exemplo, quando você "exclui" um arquivo, ele não fica mais visível ao listar o diretório. No entanto, os blocos no disco não são liberados até que o último filehandle seja fechado. Nesse caso, o arquivo é invisível para du , mas ainda conta com sua cota.

    
por 22.09.2014 / 20:00