Existe uma maneira de dizer ao kernel para devolver o espaço livre em disco agora? Como escrever para algo em / proc /? Usando o Ubuntu 11.10 com ext4.
Este é provavelmente um tema antigo e muito repetido. Depois de atingir o espaço 0, notei apenas quando meu editor não pôde salvar os arquivos de código-fonte que eu abri, que para meu horror agora têm tamanho de 0 byte na listagem de pastas, fui para uma exclusão.
Excluí centenas de MB de arquivos grandes do usuário e da raiz, e também fiz alguns hardlinks.
Pouco antes, apt-get clean
havia mais de 900 MB em / var / cache / apt / archives, agora existem apenas 108 KB:
# du
108 /var/cache/apt/archives
Uma hora depois, ainda não há espaço livre e não consigo salvar meus preciosos arquivos abertos no editor, mas observe a disparidade abaixo:
# sync; df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda4 13915072 13304004 0 100% /
Alguma sugestão? Desliguei alguns serviços / processos, mas não sei como verificar quem pode estar consumindo ativamente o espaço em disco.
Mais informações
# dumpe2fs /dev/sda4
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 884736
Block count: 3534300
Reserved block count: 176715
Free blocks: 422679
Free inodes: 520239
First block: 0
Block size: 4096
Fragment size: 4096
Respostas:
Verifique com
lsof
se há arquivos mantidos abertos. O espaço não será liberado até que seja fechado.lhe dirá quais arquivos excluídos ainda estão abertos.
fonte
mysqld
bloqueios em / tmp, mas muitosapport-gt
usos de arquivos extintos em / var / lib / apt / lists / parcial / que aparentemente estão se acumulando. Então eu poderia,killall apport-gt
mas vou investigar primeiro.lsof +L1
(selecione os arquivos abertos que foram desvinculados).Use
lsof
para encontrar o arquivo excluído, mas aberto, que ainda consome espaço:Localize a entrada
/proc/<pid>/fd/
nesse campo correspondente ao tratamento de arquivos:Agora, apenas
cat /dev/null
no fd:Observe que o inode ainda está aberto, mas agora tem 0 comprimento
fonte
cat
para truncar. No shell Bourne, apenas> /proc/3446/fd/128
serve.df
não mostrará o espaço reservado pararoot
(mesmo quando executado comoroot
):Como alterar "porcentagem de bloco reservado"
Reduza o espaço reservado para 4%
# tune2fs -m4 /dev/sda4
df -h
agora mostrou 45 milhões grátis.Coloque de volta para 5%
# tune2fs -m5 /dev/sda4
fonte
df
exibe o espaço utilizável do usuário normal. Como o apt é executado como root, o espaço reservado é útil apenas para proteção contra preenchimentos causados por usuários não root (= usuários e serviços normais que possuem seu próprio usuário).mkfs
esses dias devem reservar, por exemplo. 5% ou 300 MB, o que for menor . Acabei de voltar a sintonizar alguns dos meus servidores para 2% e liberar GBs de volta!No Ubuntu, se você excluiu arquivos usando sua lixeira, é mais provável que seus arquivos não sejam completamente removidos.
Mesmo depois de esvaziar sua lixeira, seus arquivos permanecerão
~/.local/share/Trash/expunged
até depois de uma reinicialização e talvez até mais.Não encontrei um bom motivo para isso, mas, se ficar sem espaço, sempre manualmente
rm
os arquivos de lixo eliminados.fonte
Explicação: Saída
Grep
lsof
para extrair apenas arquivos excluídos. Sed extrair a identificação do processo e a identificação do filedescriptor de cada linha e criar uma string no formato{pid}/fd/{fid}
. Enquanto loop e saída nada para cada arquivo, definindo-os como vazio.fonte
Gostaria de saber se
sync
é de alguma ajuda aqui - mas não deveria ser, como o IIRC na maioria ("muitos"?) Dos sistemas, sistemas de arquivos são sincronizados a cada 30 s.Eu verificaria o log do kernel (assim
dmesg
) para descobrir se algo desagradável está acontecendo e correrialsof
para ver se algum arquivo grande e excluído ainda está aberto (na verdade, acho que os arquivos excluídos serão marcados como tal nalsof
saída).Duas razões (uma delas apontada na pergunta que você vincula) que podem fazer com que os arquivos excluídos não liberem espaço são
unlink()
um arquivo com um link físico em outro lugar (mais precisamente, editou um arquivo com mais de um link)Mas não sei de um motivo específico para isso acontecer com tantos arquivos ...
fonte
sync
nunca ajudou. Quanto aos logs, é um sistema Ubuntu, por isso é bastante complicado, então sim, eles são tipicamente barulhentos.apport
está sendo implantado com frequência porque todas as atualizações noturnas do apt-get travam, embora / var / crash tenha apenas 77 MB. Verificamos tambématd
inundou / var / log / syslog com repetição de linhas comoatd[8892]: File a0015c0152ab76 is in wrong format - aborting
provavelmente desde os poucos arquivos em / var / spool / cron / atspool eram todos 0 tamanho, tornando a circular problema é claroO CentOS 6.3 também faz a coisa de não esvaziar a lata de lixo quando você esvazia a lata de lixo. Não consegui encontrar uma maneira de recuperar o espaço até correr
rm -rf ~/.local/share/Trash/expunged/
. Causou muito coçar a cabeça.fonte