Por que o tamanho do diretório de cache ext4?


2

Mais uma vez, estou limpando minha área de trabalho porque estou ficando sem espaço no disco rígido e toda vez que ligo du -sh ~, leva muito tempo para calcular o tamanho atual do diretório.

Na minha perspectiva, não vejo uma razão para o sistema de arquivos ext4 não armazenar em cache as informações sobre o tamanho do diretório e atualizá-las sempre que um arquivo for criado / excluído. As informações seriam expostas ao sistema e, eventualmente, ao usuário. É claro que seria necessário propagar os dados do tamanho do diretório na árvore de diretórios, mas não consigo imaginar uma situação em que em um desktop Linux normal isso causaria problemas.

Onde eu entendi errado?


O kernel armazena em cache alguns dados em seu subsistema de arquivos. Sistemas de arquivos individuais (como Ext4) podem fazer um pouco mais. Mas os metadados no seu disco provavelmente não vai caber na memória RAM disponível ....
Basile Starynkevitch

Também poderia armazená-lo em disco rígido.

Não, o cache dentro do disco rígido é tratado com o firmware dentro do disco rígido e alguns comandos SATA como TRIM. O kernel pode enviar apenas comandos SATA para a unidade de disco rígido.
Basile Starynkevitch 5/11

E você sempre pode melhorar o Ext4 (que é um software livre) para atender às suas próprias necessidades ou até mesmo implementar um novo sistema de arquivos. Aproveite que o GNU / Linux é um software livre.
precisa saber é o seguinte

1
Na verdade, eu quis dizer cache como dados reais no disco rígido. Assim como o nome do diretório é armazenado lá, não vejo por que seu tamanho não seria. @BasileStarynkevitch, a razão pela qual não fiz isso é porque não tenho absolutamente nenhuma idéia sobre o desenvolvimento do FS. Eu só estou tentando entender.

Respostas:


4

Um cache simples não funcionaria. Um cache consiste em verificar se você já tem a resposta e apenas reprocessar se não tiver. Mas, nesse caso, uma única entrada ausente tornaria outras inúteis. Por isso, teria que manter todos os tamanhos diretório atualizado toda a hora.

Além disso, não subestime o possível impacto da sua proposta. Quando os sistemas de arquivos diários eram novos, havia muita oposição porque a atualização do diário era muito cara. Além disso, a maioria dos sistemas de arquivos permite opções como noatime, nodiratimee relatimeque reduzem esses tipos de atualização de dados. Observe que todos esses (diários e atualizações de tempo) são limitados no tempo, todos eles recebem um número específico de acessos de bloco (e geralmente são "ocultos" pelo agendamento avançado de E / S), mas atualizar o tamanho de cada diretório no caminho significa um desconhecido. quantidade de acessos.

Finalmente, nos sistemas de arquivos POSIX, não existe um 'diretório de contenção' real. Uma entrada de arquivo em um diretório aponta para um inode (a estrutura do disco que contém as informações do arquivo), mas não há referência do inode para o diretório. Isso permite o recurso 'hard link', onde mais de uma entrada (geralmente em diretórios diferentes) aponta para o mesmo inode. Mesmo se você mantiver uma lista de diretórios que apontam para o inode, estará multiplicando o número (já grande) de atualizações. Pior, agora você deve acompanhar se já atualizou cada diretório, pois em algum momento da cadeia, você terá um ancestral compartilhado, que não deve contar duas vezes a atualização. Ou deveria? talvez você precise manter dois tamanhos em cada diretório, um que conte todos os arquivos 'reais',

Afinal, não parece tão útil.


Você tocou um assunto muito interessante lá - os ancestrais compartilhados, que eu entendo como links simbólicos. Nunca realmente pensei nisso.

5
Os ancestrais compartilhados são não links simbólicos (que são feitas usando o symlink(2)syscall), mas as ligações duras feitas com o link(2)syscall
Basile Starynkevitch

0

Há também outro motivo. dunão leva em consideração se parte do subsistema estiver em outro volume montado no diretório que você está medindo.

Assim, mesmo se o uso fosse avaliado por volume, dunão o explicaria. Por outro lado, dfutiliza essas informações ....

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.