Quota de disco no Linux (Fedora 19)

24 de ago de 2013 - Paulo Dias


Hoje vou escrever sobre como aplicar um sistema de quota de disco no linux. Dessa vez estou utilizando o fedora 19 , mas como de costume tudo deve funcionar perfeitamente em outras distribuições.

A idéia ao se criar um sistema de quota é dividir o disco de forma justa (ou da melhor maneira possível). Por exemplo, imagine que em um sistema a partição /home têm 1GB, e que determinado usuário resolve fazer o download de uma .iso de 700MB... Os demais usuários terão que dividir os 300MB restantes. Quando se têm muitos usuários e poucos recursos isso tende a ser um problema, afinal, existe um usuário sendo favorecido enquanto os demais estão sendo prejudicados, para evitar isso, é possível usar um sistema de quota.

Para poder usar um sistemas de quotas no fedora é necessário instalar o pacote quota com o seguinte comando:


sudo yum install quota 

Depois de instalar esse pacote, é necessário alterar o arquivo /etc/fstab de forma que a partição /home tenha as seguintes opções: usrquota e grpquota.

Exemplo:
/dev/mapper/fedora-home /home ext4 defaults,usrquota,grpquota 1 2

Para que essa alteração tenha efeito é necessário remontar a partição /home. Use o seguinte comando:


sudo mount -o remount /home

Agora que o sistema de quota já esta instalado é possível fazer a configuração das quotas por usuário ou por grupo. Execute o seguinte comando para criar os arquivos de configuração:


sudo quotacheck -cugfm /home

Verifique se os arquivos aquota.group e aquota.user foram criando em /home. Esses arquivos devem ter permissão apenas para o root, evitando assim que algum usuário não autorizado tente fazer alterações no sistema de quota. Ative a quota de disco com:


sudo quotaon /home

Nesse atigo vou demostrar como criar um sistema de quota por usuário. Para isso crie um novo usuário com os comandos abaixo:


sudo useradd usuario;
sudo passwd usuario;

Com o usuário criado use o comando abaixo para especificar a quota de disco dele:


sudo edquota -u usuario

Com isso o seguinte arquivo será aberto para edição no vi:

Filesystem blocks soft hard inodes soft hard
/dev/mapper/fedora-home 32 2000 3000 14 10 15

Nesse arquivo apenas as colunas soft e hard devem ser alteradas. O primeiro conjunto de colunas soft e hard especifica a quota de disco por espaço ocupado e o segundo conjunto especifica a quota por inode.

Você pode considerar um inode como um ponteiro para um arquivo, a quantidade desses inodes é limitada, por isso pode ser útil fazer um sistema de quota para eles também... Quer saber mais sobre inodes? clique aqui.

A coluna soft especifica a quota do usuário, ou seja acima disso o usuário estourou sua quota. E a coluna hard especifica um tamanho máximo após estourar a quota. Simplificando, soft é a quota do usuário e hard é um extra(chorinho) para usuário armazenar mais alguns arquivos.

Quando o usuário ultrapassa sua quota ele pode usar o espaço extra por um tempo, esse tempo é chamado de grace period e serve para que seja possível fazer backup ou excluir algum arquivo que não seja mais necessário. Esse tempo pode ser especificado com o comando:


sudo edquota -t

E para consultar a situação das quotas dos usuários do sistema você deve usar o comando:


sudo repquota -va

Agora que você já têm um usuário com quota defnida, é possível replicar a quota dele para outros usuários através do seguinte comando:


sudo edquota -up usuario paulo

Dessa forma o usuário paulo terá a mesma configuração de quota do usuário usuario

Para quotas por grupo é basicamente a mesma coisa, por exemplo para configurar quota de um grupo use o comando:


sudo edquota -g grupo

E para listar use o comando:


sudo repquota -vag

Vou para por aqui, qualquer dúvida deixe um comentário que assim que possível eu respondo, ok? A leitura dos seguintes links pode ser muito útil.

Comandos básicos do vi
Add usuário pela linha de comando
O comando mount

Paulo Dias

Graduado no curso tecnólogo em análise e desenvolvimento de sistemas. Defensor do Software Livre e da democratização da informação. Possui as certificações Linux LPIC-1 e Java OCA. Atualmente exerce a função de coordenador técnico na área de telecomunicações.

Siga-me no Twitter


Tags: Linux