Existe uma maneira de fazer com que os sistemas de arquivos ext usem menos espaço no Linux?

48

Eu tenho vários HDDs externos e internos que eu uso em um sistema Linux. Eu só tenho sistemas Linux, então usar um sistema de arquivos Linux só faria sentido, certo? No entanto, atualmente estou usando NTFS em todos os lugares, porque isso me dá o espaço mais utilizável dos HDs.

Eu gostaria de mudar para os sistemas de arquivos Linux agora, principalmente por causa de permissões e compabilidade (por exemplo, não consigo redimensionar minha partição NTFS criptografada LUKS no Linux, sempre digo para chkdsk no Windows).

No entanto, quando eu formatei esses HDDs, experimentei vários sistemas de arquivos diferentes e todo sistema de arquivos Linux, mesmo o ext2 que até onde eu sei não possui registro no diário, utilizava muito espaço para si. Não me lembro dos valores exatos, mas foram mais de 100 GB que o NTFS me colocou mais em um HD de 2 TB, o que é muito.

Então, minha pergunta é: Existe uma maneira de fazer com que os sistemas de arquivos ext usem menos espaço para si? Ou existe outro sistema de arquivos (eu tentei ext2, ext3, ext4, NTFS e vfat - nenhum deles chegou nem perto do espaço utilizável que o NTFS me ofereceu) com suporte Linux perfeito e ótimo espaço utilizável?

Gostaria muito de saber como e por que os sistemas de arquivos (especialmente o ext2 que não possui registro no diário) usam muito mais espaço do que o NTFS e não sei mais o que perguntar. Eu preferiria principalmente uma maneira de usar ext4 sem registro no diário e qualquer outra coisa que consome tanto espaço, se isso for possível.

confete
fonte
11
Você já viu este tópico ?
precisa saber é o seguinte
4
Eu tenho, e explicou o que consome o espaço extra, mas a diferença entre NTFS e ext é MUITO maior do que entre reiserfs e ext, e eu estou querendo saber se existe alguma maneira de torná-lo menor. Por exemplo, em um disco rígido de 1 TB, posso usar 989GB com NTFS. ext4 me daria cerca de 909GB.
Confetti
Justo. Pergunta decente e a resposta também é esclarecedora.
precisa saber é o seguinte
3
como você mede o espaço disponível? isso é importante porque, dependendo dos valores
observados
2
Lembre-se de que o registro em diário em sistemas de arquivos como ext3 e ext4 é uma coisa boa. É muito fácil perder energia para uma unidade externa ou desconectá-la acidentalmente se for uma USB. Quando isso acontece, geralmente não é grande coisa, porque ela se cura usando o diário quando é reiniciada. Sem essa rede de segurança, as coisas seriam muito piores. Não é apenas um caso de mais, é melhor.
Joe Joe

Respostas:

97

Por padrão, o ext2 e seus sucessores reservam 5% do sistema de arquivos para uso do usuário root. Isso reduz a fragmentação e torna menos provável que o administrador ou qualquer daemons de propriedade raiz permaneça sem espaço para trabalhar.

Esses blocos reservados impedem que programas não executados como root preencham seu disco. Se essas considerações justificam a perda de capacidade depende do uso do sistema de arquivos.

O valor de 5% foi estabelecido na década de 1980, quando os discos eram muito menores, mas foi deixado como está. Atualmente, 1% é provavelmente suficiente para a estabilidade do sistema.

A reserva pode ser alterada usando a -mopção do tune2fscomando:

tune2fs -m 0 /dev/sda1

Isso definirá a porcentagem de blocos reservados para 0% (0 blocos).

Para obter o valor atual (entre outros), use o comando:

tune2fs -l <device> 
harrymc
fonte
10
Isso explicaria perfeitamente a imensa diferença no espaço utilizável (já que 5% de 2 TB são 100 GB). Os discos não serão usados ​​para nada relacionado a arquivos raiz ou de sistema, por isso acho que seria bom desativar isso. Porém, eu tenho uma pergunta: como os programas pertencentes a raiz sabem que há mais espaço livre do que os programas não raiz? A execução dfcomo não raiz x raiz não mostra nenhuma diferença.
Confetti
12
Confetti @: porque o VFS não rejeita suas tentativas de gravar no disco com um erro (até que o volume esteja realmente cheio, é claro).
Ignacio Vazquez-Abrams
11
tune2fs -l <device>deve dar esse valor entre outros. O valor de 5% foi estabelecido na década de 1980, quando os discos eram muito menores, mas foi deixado como está. Atualmente, 1% é provavelmente suficiente para a estabilidade do sistema.
harrymc
7
O XFS reserva o menor de 5% ou 8192 blocos (32 MiB), portanto, a quantidade reservada é geralmente pequena se comparada ao tamanho do sistema de arquivos.
Michael Hampton
5
Muito obrigado a todos pelas explicações. Isso me ajudou a entender bastante. Meu disco costumava encher completamente até o último byte anterior, mas meu sistema não falhou completamente, agora eu entendo o porquê.
Confetti
3

se os dados que você pretende armazenar forem compactáveis, os btrfs montados com compress=zstd(ou compress-force=zstd) provavelmente usariam significativamente menos espaço em disco que o ext *

  • isso fará com que o btrfs comprima seus dados de forma transparente antes de gravá-los no disco e descompacte-os de forma transparente ao lê-los novamente. Além disso, o ext4 pré-aloca todos os inodes na criação do sistema de arquivos, o btrfs os cria conforme necessário, acho que isso também pode economizar espaço.
hanshenrik
fonte
11
Você se importa em adicionar mais informações a esta resposta? (Como ele funciona, o que ele faz, talvez uma referência, ...)
confetti
@confetti assim? patchwork.kernel.org/patch/9817875
hanshenrik
Eu realmente gosto dessa idéia, mas mais informações sobre como isso afetaria a velocidade e o desempenho seriam ótimas.
Confetti
2
@ confetti, como você está usando um disco rígido, provavelmente melhorará o desempenho. As CPUs são tão mais rápidas que os discos rígidos que a parte mais lenta do acesso ao disco está recebendo e desligando os dados; o tempo gasto compactando ou descompactando não será perceptível.
Mark
2
Por outro lado, a maioria dos tipos de arquivos grandes atualmente (por exemplo, imagens, áudio, vídeo e até mesmo a maioria dos formatos de documentos de texto rico) já está compactada e geralmente não se beneficia de compactação adicional. Pelo menos, não do tipo de uso geral simples, executado no nível do sistema de arquivos.
Ilmari Karonen
3

Outro ponto que ainda não foi discutido é o número de inodes que você reserva no seu sistema de arquivos.

Por padrão, o mkfs cria vários inodes que devem possibilitar a inserção de muitos arquivos muito pequenos em seu sistema de arquivos. Se você souber que os arquivos serão muito grandes e você apenas colocará um pequeno número de arquivos no FS, poderá reduzir o número de inodes.

Cuidar! Este número (resp. Relação entre espaço e número de inodes) pode ser definido apenas no momento da criação do sistema de arquivos. Mesmo ao estender o FS, a proporção permanece a mesma.

glglgl
fonte
Como alternativa, se você sabe que vai armazenar muitos arquivos muito pequenos, pode aumentar o número de inodes e diminuir o tamanho do bloco para não perder tanto espaço. (Cada arquivo deve consumir um mínimo de um bloco, mesmo que seja 1 byte uso ls -É para comparar o tamanho vs que é usado no disco..)
Perkins
@ Perkins Você está certo, mas acho que isso vale apenas para arquivos MUITO pequenos: o tamanho padrão do bloco é 4kiB (IIRC), o mínimo é 1 kiB. Portanto, não há muito a ganhar, exceto que seu disco está realmente cheio desses arquivos. Mas, no entanto, eu posso mergulhar nisso amanhã.
glglgl
2
ou use btrfs, que cria inodes conforme necessário. Considerando que os inodes do ext4 são alocados no momento da criação do sistema de arquivos e não podem ser redimensionados após a criação, com um limite rígido de 4 bilhões, os inodes do btrfs são criados dinamicamente conforme necessário, e o limite rígido é de 2 ^ 64, cerca de 18,4 quintilhões, o que equivale a 4,6 bilhões vezes maior do que o limite rígido de um ext4 maxed: p
hanshenrik
Lembra-me de configurar um carretel da usenet. O ext4 armazenará minúsculos (o limite varia de 60 a 160 bytes, dependendo de várias coisas) dentro do próprio inode.
mr.spuratic
@hanshenrik Observe que você tem a mesma limitação de tamanho de bloco no btrfs (com algumas maneiras extras de contornar isso), assim você ainda precisa saber que tipo de arquivos (grandes ou pequenos ou ambos) você estará armazenando e ajuste seu sistema de arquivos de acordo, se desejar extrair a quantidade máxima de armazenamento dele. A disponibilidade da compactação automática ajuda bastante se você estiver armazenando dados flexíveis.
28918 Perkins