Ontem, excluí 71 GB de arquivos no meu servidor doméstico / de mídia.
Espaço livre antes: 117 GB
Espaço livre depois: 126 GB
Portanto, em vez de ter 71 GB de espaço livre adicional, eu tinha apenas 9 GB. Verifiquei duas vezes se nenhum arquivo estava aberto e realmente excluí 71 GB e o espaço livre aumentou apenas 9 GB.
Eu também tentei sincronizar, mas sem efeito.
Esta não é a primeira vez que isso acontece. Na verdade, eu vejo esse comportamento há anos, de vez em quando. Primeiro no ext3, agora no ext4.
Quando isso acontece, posso recuperar o espaço livre desmontando e remontando o sistema de arquivos. Nesses casos, a desmontagem leva até 2 minutos em vez de quase nenhum tempo.
Hoje em dia, não consigo desmontar e remontar facilmente o sistema de arquivos, pois ele está permanentemente ocupado com o meu software de gravador de vídeo, o servidor de nuvem própria da minha família e alguns outros serviços que eu não tinha até agora. E não quero me levantar às três horas da noite apenas para desmontar e remontar.
Não, o utilitário 'at' não funciona porque um dos serviços executa tarefas de longa execução não recuperáveis e, portanto, precisa de uma verificação manual do estado para encontrar um bom momento em que pode ser desligado, ou seja, uma tarefa foi concluída.
Mas nesta manhã, notei que o espaço foi liberado da noite para o dia. Parece-me que houve algum tipo de limpeza, e isso pode ser a mesma coisa que leva mais tempo para desmontar.
Até o momento, só notei esse comportamento ao excluir uma grande quantidade de dados. Por outro lado, não tenho certeza se isso acontece regularmente e a diferença é pequena demais para notar.
O sistema de arquivos foi criado com 0% reservado para root ( mkfs -m 0
). De acordo com fsck -f
(eu sempre faço isso entre desmontar e remontar), o sistema de arquivos não está corrompido e, de acordo com o teste estendido do diagnóstico SMART, o hardware também está OK.
[EDITAR]
tune2fs 1.42 (29-Nov-2011)
Filesystem volume name: bigdata
Last mounted on: /bigdata
Filesystem UUID: 6aebd17a-e064-41dc-9c68-c9a3acbe4f66
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 121413632
Block count: 485645568
Reserved block count: 0
Free blocks: 29081276
Free inodes: 121382378
First block: 0
Block size: 4096
Fragment size: 4096
Reserved GDT blocks: 908
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 8192
Inode blocks per group: 512
Flex block group size: 16
Filesystem created: Tue Dec 25 23:42:35 2012
Last mount time: Fri Jan 3 17:37:36 2014
Last write time: Fri Jan 3 17:37:36 2014
Mount count: 37
Maximum mount count: -1
Last checked: Thu Apr 18 17:03:40 2013
Check interval: 0 (<none>)
Lifetime writes: 14 TB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256
Required extra isize: 28
Desired extra isize: 28
Journal inode: 8
Default directory hash: half_md4
Directory Hash Seed: be2b977e-5127-4843-9123-fe33b6d7b573
Journal backup: inode blocks
[/EDITAR]
Então, aqui estão minhas 2 perguntas:
- O que esta acontecendo aqui? Por que o espaço é liberado em quantidade ou com atraso em vez de excluir imediatamente?
- Existe algo que eu possa fazer para desencadear a liberação do espaço agora mesmo sem desmontar e remontar?
lsof | grep -i deleted
geralmente é a melhor maneira de verificar isso.Respostas:
Existem dois fatores que podem estar interagindo.
Ao contrário do Windows, você pode excluir arquivos que estão abertos. Se você excluir um filme que está sendo transmitido por streaming, ele será removido do diretório, mas continuará existindo como um arquivo até que o programa de streaming o feche. Quando o software de streaming o fechar, o espaço será liberado. O
fuser -m
comando pode ser usado para encontrar a identificação do processo de qualquer processo com arquivos abertos. Alguns programas podem não fechar imediatamente os arquivos quando terminam com eles.Ambos são sistemas de arquivos registrados no diário. As alterações são gravadas em um diário e, em seguida, confirmadas. Pode demorar um pouco para que as alterações sejam confirmadas. O sistema operacional geralmente armazena em cache as alterações do disco e apenas confirma as alterações no disco periodicamente. A execução do
sync
comando deve liberar quaisquer alterações pendentes no disco. A montagem do disco com async
opção aumentará a velocidade do disco, mas trabalhará mais o disco.fonte