Pergunta

Recentemente, ficou sem espaço em disco em uma unidade em um servidor FreeBSD.Eu truncado o arquivo que estava causando problemas, mas eu não estou vendo a mudança reflete quando a execução df.Quando eu executo du -d0 em sua partição de disco, ele mostra o valor correto.Existe alguma forma para forçar esta informação para ser atualizado?O que está causando a saída aqui para ser diferente?

Foi útil?

Solução

Este, provavelmente, centros de como você truncado o arquivo. du e df relatório de coisas diferentes como este post unix.com explica.Só porque o espaço não é usado não significa necessariamente que ele é grátis...

Outras dicas

No BSD uma entrada de diretório é simplesmente uma das muitas referências para o arquivo subjacente (dados chamada inode).Quando um ficheiro é eliminado com a rm(1) comando somente a contagem de referência é reduzida.Se a contagem de referência é ainda positivo, (e.g.o arquivo tem outras entradas de diretório, devido a ligações simbólicas), em seguida, o arquivo subjacente dados não são removidos.

Mais recente BSD os usuários muitas vezes não percebem que um programa que tem um arquivo aberto também está segurando uma referência.O impede subjacente de dados de arquivo de ir embora, enquanto o processo está usando.Quando o processo fecha o arquivo, se a contagem de referência cai para zero o espaço de arquivo é marcado como disponível.Este esquema é usado para evitar o Microsoft Windows tipo de problemas, onde não vai deixar você excluir um arquivo, porque alguns não especificado programa ainda esteja aberto.

Uma forma fácil de observar isso é fazer o seguinte

cp /bin/cat /tmp/cat-test
/tmp/cat-test &
rm /tmp/cat-test

Até que o processo de plano de fundo é finalizado o espaço de arquivo usado pelo /tmp/cat-teste permanecerá alocado e indisponíveis, conforme relatado por df(1), mas o du(1) comando não será capaz de dar conta de como ele não tem um nome de arquivo.

Observe que, se o sistema deve falhar sem o processo de fechar o arquivo, em seguida, o arquivo de dados ainda estará presente, mas não referenciados, um fsck(8) executado será necessário para recuperar o sistema de arquivos do espaço.

Processos, mantendo os ficheiros abertos é uma razão pela qual o newsyslog(8) comando envia sinais para o syslogd ou outros programas de log para informar-lhes que eles deviam fechar e voltar a abrir seus arquivos de log depois de ter rodado-los.

O Softupdates pode também efeito do sistema de arquivos freespace como o real inode recuperação de espaço pode ser adiada;o sync(8) comando pode ser usado para incentivar isso aconteça o quanto antes.

Que o df --sync funciona?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top