Espaço reservado para root em um sistema de arquivos - por quê?

105

Entendo que, por padrão, os sistemas de arquivos recém-criados serão criados com 5% do espaço alocado para raiz. Eu também sei que você pode alterar o espaço definido com:

tune2fs -m 1 /dev/sdXY

No entanto, estou curioso sobre qual é o objetivo real desse espaço reservado. Serve para algum propósito prático que, em algumas circunstâncias, merecesse mais de 5% de espaço?

A razão pela qual me deparei com essa pergunta é que construímos recentemente um armazenamento de arquivos de 1 TB e não conseguimos entender por que um df -h nos deixou com 5% de nossa capacidade.

suitsupgeek
fonte
11
Ok, agora isso é um enorme desperdício de espaço 'indisponível'. Talvez os 5% devam limitar-se a tamanhos de unidades menores que X (por exemplo, 5% do espaço em disco até um máximo de 100 MB).
tshepang
3
No meu sistema de arquivos de 8 TB, 400 GB acabaram - esse é o verdadeiro desperdício de espaço! :)
Ilia Rostovtsev 27/03

Respostas:

101

Economizar espaço para processos raiz importantes (e possíveis ações de resgate) é um dos motivos.

Mas tem outro. O Ext3 é muito bom em evitar a fragmentação do sistema de arquivos, mas quando você fica acima de 95%, esse comportamento cai do precipício e, de repente, o desempenho do sistema de arquivos se torna uma bagunça. Portanto, deixar 5% reservado oferece um buffer contra isso.

O Ext4 deve ser melhor nisso, conforme explicado pelo desenvolvedor / guru de sistema de arquivos Linux Theodore Ts'o :

Se você definir a contagem de blocos reservados como zero, isso não afetará muito o desempenho, exceto se você executar por longos períodos de tempo (com muitos arquivos criados e excluídos) enquanto o sistema de arquivos estiver quase cheio (por exemplo, acima de 95%), Nesse ponto, você estará sujeito a problemas de fragmentação. O alocador de vários blocos do Ext4 é muito mais resistente à fragmentação, porque tenta muito mais encontrar blocos contíguos; portanto, mesmo se você não ativar os outros recursos do ext4, verá melhores resultados simplesmente montando um sistema de arquivos ext3 usando ext4 antes do sistema de arquivos fica completamente cheio.

Se você está apenas usando o sistema de arquivos para arquivamento de longo prazo, onde os arquivos não mudam com muita frequência (ou seja, um enorme mp3 ou loja de vídeo), obviamente não importa.

mattdm
fonte
3
Conforme observado em superuser.com/a/1257550/38062 , esses números "90%" e "95%" têm suas origens nas medições contra o FFS de Berkeley realizadas na década de 1980. Nas décadas seguintes, outras pessoas desafiaram essa sabedoria recebida frequentemente repetida.
JdeBP
11
Não há redução de desempenho para usuários normais com este espaço reservado. Eles simplesmente não terão espaço no dispositivo antes do esperado. A raiz, no entanto, terá espaço suficiente para corrigir qualquer problema que esteja enchendo o disco.
crististm 25/06
44

Se você permitir que outras pessoas façam logon no seu sistema, via ssh, por exemplo, ter esses 5% de blocos reservados garante que os usuários externos não possam preencher o disco. Mesmo que você não permita que outras pessoas efetuem login no seu sistema, os blocos reservados impedem que programas não executados como root preencham seu disco.

LawrenceC
fonte
Obrigado por isso, realmente lutando com qual resposta marcar como correta - resposta votada como foi a primeira e no local, o mattdm está marcado como correto devido aos antecedentes e detalhes adicionais que me ajudaram a entender mais o "Porquê".
suitedupgeek
22

Com os blocos reservados, os usuários e os serviços que estão sendo executados como usuários específicos, em vez de executados como root, não podem preencher um arquivo de repositório de arquivos e potencialmente quebrar outras coisas que precisam ser gravadas no referido sistema de arquivos - embora os serviços executados como root ainda possam torná-lo completamente cheio, é claro.

Também oferece espaço para trabalhar quando os usuários reclamam que o disco está cheio ou os serviços começam a falhar porque o sistema de arquivos está cheio. Por exemplo, você pode arquivar alguns arquivos nos arquivos zip / gz / 7zip antes de removê-los (embora se o sistema de arquivos estivesse completamente cheio, é provável que você tenha outro sistema de arquivos disponível para criar o arquivo).

5% é o padrão há muito tempo, desde quando os discos eram muito menores (dezenas de megabytes em vez de centenas de gigabytes), então 5% não era tanto assim. Felizmente, pode ser facilmente ajustado para uma porcentagem menor, como você diz, ou definido para um número específico de blocos, se você usar tune2fsa -ropção em vez de -m. Em ambos os casos, você pode dar um parâmetro de 0 a transformar a reserva por completo - Eu não faria isso por /, /tmp, /vare assim por diante, mas você pode querer para um sistema de arquivos que só atua como armazenamento de usuário (digamos, um file- mundial compartilhamento) ou um arquivo que apenas contenha arquivos de tamanho fixo (como VMs de tamanho fixo) que só crescerão quando você criar um novo.

David Spillett
fonte
22

O padrão de 5% é destinado a partições do sistema. Por exemplo, se o espaço em disco ficar cheio, os logs do sistema ( /var/log) e a caixa de correio raiz ( /var/mail/root) ainda poderão receber informações importantes. Para uma /homepartição de armazenamento de dados ou geral, não é necessário deixar espaço para o root. Para necessidades especiais, você pode alterar o usuário que recebe o espaço de emergência ( tune2fs -u 1234).

Há outra razão para não permitir que um sistema de arquivos ext [234] fique cheio, que é fragmentação .

Gilles
fonte