Manipulando reserva de blocos em sistemas ext3 e ext4

Olá pessoal.

Este é um belo assunto, e que me “iludiu” por muito tempo. Alguém já reparou que sistemas de arquivos ext3 e ext4 com 100% de uso nunca igualavam-se ao tamanho total da unidade ? Explico:

Um sistema de arquivos em um device de 249Gb atingirá 100% de uso aos seus 236Gb. Isso se dá pelo simples motivo que por default, um sistema de arquivos criado via mkfs.ext3 ou mkfs.ext4 possui uma reserva de 5% de seus blocos para o superusuário (vulgo root,  🙂 ). Isso pode não ser impactante em sistemas de arquivos pequenos, tais como /var, /usr, /tmp, etc, mas vai com certeza se tornar um inconveniente em um sistema de arquivos de 750Gb usado separadamente do S.O (isso nos custaria 37.5Gb).

Então vamos ao que interessa… Vamos alterar esta reserva de um sistema de arquivos montado e funcional utilizando o tune2fs. No exemplo que segue alterei minha partição de uso pessoal, de 119Gb para ter somente 1% de reserva. Isso me deu um ganho de 5.4Gb.  🙂

ext4 com 5% de reserva:

[frank@vostrolab2 tmp]$ df -h /u
Filesystem                       Size  Used Avail Use% Mounted on
/dev/mapper/vg01-u    119G   78G   35G  69% /u

Vamos à alteração:

[root@vostrolab2 tmp]# tune2fs -m 1 /dev/mapper/vg01-u

tune2fs 1.41.12 (17-May-2010)
Setting reserved blocks percentage to 1% (314572 blocks)

Vejamos o resultado:

[root@vostrolab2 tmp]# df -h /u
Filesystem                       Size  Used Avail Use% Mounted on
/dev/mapper/vg01-u    119G   78G   40G  67% /u

Ganhamos 5Gb   🙂

Fica então a dica, e lembrando que tal alteração não é recomendada em devices que comprometem o funcionamento do S.O linux, tal como /, /var, /usr, pelo simples fato de que ao atingir 100% o root ainda consegue manipular e “salvar” o sistema…

É isso… Fica então a dica e o esclarecimento deste comportamento que TODO sistema de arquivos ext possui.

Por: Franklin Moretti

referência: man tune2fs

12 thoughts on “Manipulando reserva de blocos em sistemas ext3 e ext4

  1. Seria interessante lembrar também que:

    -Dá para usar valores menores que 1, como por exemplo -m 0.3 para especificar 0,3%.

    -Em partições sem diretórios do sistema, como quando se tem uma só com o /home, pode-se deixar em 0% sem problemas.

  2. Cara, o comando que você colocou no tutorial – df -h /u – na minha máquina retorna “df: `/u’: Arquivo ou diretório não encontrado
    df: nenhum sistema de arquivo foi processado”

    Agora, se eu digitar df -h / ele funciona. Tem certeza de que digitaste corretamente?

    1. André,

      Seu sistema não tem a unidade montada em /u…. Esta unidade é uma particularidade do sistema utilizado no exemplo do Frank.

      Todo sistema linux possui um “/” (barra) por isso o seu df -h / funciona corretamente.

      Faça apenas “df -h” para ver todas as unidade mapeadas em seu sistema.

      Grato pela leitura e comentários.

      Abraços..

      Hudson

  3. Franklin,

    Sist. Arq. Tamanho de uso avaliado% Montado em
    udev 496M 244K 496M 1% /dev
    tmpfs 501M 27M 475M 6% /dev/shm
    none 501M 60K 501M 1% /var/run
    none 501M 0 501M 0% /var/lock

    o que são e para que serve?

    obrigado,
    erasmo

    1. o /dev é para mapeamento de dispositivos, como discos, drives de fita, cdrom’s etc… o /dev/shm é para shared-memory. Esta área pode ser utilizada para compartilhar dados entre processos/programas. Estes dados ficarão armazenados em memória e podem ser acessados por todo e qualquer processo no S.O que tenha permissões.

      Segue um bom link explicando tal recurso: http://www.cyberciti.biz/tips/what-is-devshm-and-its-practical-usage.html

      O /var/run serve para guardar arquivos de controle de execução de processos. Por exemplo arquivos *.pid que levam informações do ID do processo de um serviço. Geralmente estes são usados para controle de execução no momento de parar um serviço e também ter certeza que está rodando (por exemplo scripts localizados em /etc/init.d/ com as opções start, stop, restart, etc…)

      O /var/lock serve para indicar que um processo de programa está utilizando um arquivo ou device. Então o mesmo prende “lock” o arquivos ou device. Não sei ao pé da letra o funcionamento deste diretório mas basicamente é isso.

      Interessante a estrutura montada em sei sistema. Estavas utilizando um sistema live-cd ? Não é comum ter o /var/lock, /var/run e /dev mapeados em devices separados….

      Abraços, e obrigado pela visita/participação no blog.

  4. Obrigado pela dica!
    Isso é algo que eu sempre reparei no sistema, mas nunca tinha ido atrás pra procurar o porquê acontecia.
    Aqui consegui liberar mais de 15GB!
    Curioso que o meu disco de 1TB ja estava com 0% reservado.

    1. Olá Ted. Obrigado pela visita. Qual distro você usa ? Pode ser que o processo de formatação default de sua distro já readeque a alocação padrão do ext3/4.

      Lembrando que ao criar o filesystem com o mkfs.ext3/4 podemos especificar a porcentagem de reserva, também com a opção -m (Ex: mkfs.ext3 -L meu_label -m 1 /dev/sdXX).

      Atenciosamente,

      Franklin Moretti

Leave a Comment

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *