Eu sei que tenho mais espaço livre

1

Estou tentando rastrear para onde foi todo o meu espaço em disco rígido. Eu tenho 1TB de espaço total e, de acordo com o meu sistema, 433GB usado. No entanto, sei que tenho mais, pois não tenho arquivos ou pastas grandes que conheço. O seguinte mostra os 10 principais diretórios.

du -cks *|sort -rn|head

Ele diz que a pasta / var está ocupando 480 GB, mas quando entro nessa pasta, não há nada considerável (eu executo isso a partir das permissões root ou '/' w / su).

O que estou perdendo? Existem arquivos ocultos que esse código não atende? Para referência, estou usando o opensuse 11.3, se isso faz um diff.

    
por Marissa Levy 05.08.2011 / 04:29

4 respostas

8

Se você fizer a recursiva du conforme sugerido e calcular todo o espaço para a árvore var inteira e ela não corresponder ao total usado, talvez você queira verificar se há um identificador de arquivo desvinculado que tenha sido deixado aberto. Isso pode acontecer com scripts incorretos de logrotate que excluem ou movem um log que ainda está sendo gravado ativamente. Você desvincula o arquivo (exclui o inode, portanto, ls não o informa mais), mas o processo ainda está gravando nele.

lsof não é tipicamente uma instalação padrão, então você terá que instalá-lo através dos meios que o OpenSuse usar, então execute: lsof +L -a /var

Você verá a saída como

COMMAND   PID      USER     FD    TYPE DEVICE SIZE/OFF NLINK   NODE NAME
httpd     32287    apache   14w   REG  253,7  3020256     1    121  /var/log/httpd/access_log

Haverá muitos arquivos sendo exibidos, mas o que você está procurando é um que tenha um valor grande na coluna de tamanho e um 0 na coluna NLINK (e não esteja marcado como excluído). Esse arquivo ainda está sendo gravado, mas não está mais vinculado.

Você pode corrigi-lo encerrando o processo que tem o identificador de arquivo desvinculado aberto.

    
por 05.08.2011 / 05:32
4

Tudo isso significa que você não encontrou os arquivos em que todo o espaço está sendo usado. Deve ser trivial para encontrar, porque se du está achando isto ao nível de topo, então está sentando no sistema de arquivos.

Se um du -s /directory mostrar espaço usado, mas du -s /directory/* não, então o problema está em arquivos ou diretórios ocultos ("começa com um.") diretamente em /directory . Se houver uma discrepância entre df e du (maior do que pode ser explicado pelas diferenças de arredondamento), você terá arquivos excluídos, mas não inéditos, que consomem espaço.

    
por 05.08.2011 / 05:29
1

quanta, your answer helped me pin it down...turned out it was the /var/lib/mysql folder...now, I need to figure out what to do w/ that...

Você usou a replicação do MySQL? Se for , talvez os logs binários estejam preenchendo seu disco rígido. Pode ser removido automaticamente configurando o prompt expire_logs_days from mysql> :

mysql> set global expire_logs_days = 7;

(altere também o my.cnf para torná-lo permanente)

Você não deve definir um número menor que o número máximo de dias que seus escravos podem ficar atrás do mestre.

Se não , continue verificando todos os bancos de dados em /var/lib/mysql .

    
por 06.08.2011 / 09:43
0

Você tem algo montado abaixo de / var ?

Pode haver dados ocultos "sob" um ponto de montagem.

Exemplo:

mkdir /var/test
dd if=/dev/zero of=/var/test/data.dat bs=1M count=16

Agora monte algo em / var / test - você não verá onde estão os 16MB ausentes.

    
por 05.08.2011 / 23:04