Arquivos históricos do BR-Linux.org apresenta:

Gerenciamento de quotas de disco no Linux

Excelente howto de João Alexandre Lobo Marques (alex_lobo@terra.com.br) ensinando configurar e habilitar o "Gerenciamento de quotas de discos no Linux".

Se você tem problemas com usuários usando desgovernadamente os espaços em disco do seus servidores, não deixe de ler este artigo.

Gerenciamento de quotas de disco no Linux

Por: João Alexandre Lobo Marques alex_lobo@terra.com.br

Baseado no capítulo referente a quotas de disco
encontrado no site: http://www.linuxhomenetworking.com/index.htm


Se você trabalha gerenciando servidores de arquivos ou de e-mail, certamente o gerenciamento de quotas de disco poderá ser uma ferramenta muito útil para o uso racional do espaço em disco no seu servidor.

Com o sistema de QUOTAS de disco nativo do Linux, você poderá gerar restrições por partição para cada usuário do seu sistema ou mesmo para grupos de usuários. Com este tutorial iremos apresentar um exemplo de configuração para mostrar como é simples sua utilização.

O sistema utilizado foi o Red Hat 9.


1- APRESENTANDO O PROBLEMA

Imagine que seu servidor de arquivos possua duas partições, sendo uma padrão para os arquivos de inicialização do Linux (/boot), a segunda para o sistema e aplicativos ( / ) e uma terceira para os arquivos dos usuários, tendo como raiz o diretório /home. Teríamos, então, a seguinte tabela de particionamento:

Tabela de Particionamento:
/boot /dev/hda1 ext3
/ /dev/hda2 ext3
/home /dev/hda3 ext3

Neste momento não nos interessa o tamanho de cada partição.

O problema é que alguns usuários estão utilizando abusivamente o servidor, salvando toneladas de vídeos e músicas que não tem nada a ver com sua empresa. E este problema, certamente tenderá a crescer a ponto de faltar espaço no seu servidor para arquivos úteis ao trabalho da empresa.

Para não ter que ficar monitorando o tamanho das pastas dos usuários como uma câmera do Big Brother, a solução será oferecer uma fatia do disco com tamanho limitado para cada usuário. Esta divisão deverá ser individual, afinal, sem favorecer ninguém, mas o pessoal da informática normalmente precisa de mais espaço que os demais colegas. ;-)

Assim, você deverá, antes de tudo, fazer um projeto dos tamanhos das fatias que cada usuário deverá receber no disco.


2 - O SISTEMA DE QUOTAS E O KERNEL DO LINUX

O suporte ao sistema de QUOTAS é nativo do kernel do próprio LINUX. Se você visualizar nas opções de FILESYSTEM do CÓDIGO FONTE do Kernel,
um dos primeiros itens será a ativação do suporte às quotas de disco. Creio que a maioria das distribuições já deve instalar seu kernel compilado
com o suporte a quotas embutido nele. Desta forma, cabe apenas ao usuário ativar ou não o sistema.

Obs: Para visualizar esta opção no Kernel, certifique-se que você possui os fontes do kernel instalados e então utilize os comandos:

1 - Modo caractere:
# cd /usr/src/linux-2.4
# make menuconfig

2- Modo gráfico:
Abra um xterm
# cd /usr/src/linux-2.4
# make xconfig

Em ambas as opções procure pela seção FILESYSTEM e confira a opção de suporte a QUOTA.

Se sua distribuição não possui esta característica você pode aplicar um patch no kernel, ativar a opção, recompilar, etc, etc, etc, mas este artigo não visa cobrir esta trabalheira toda...

Uma sugestão bem pessoal: para servidor de arquivo em produção, coloque uma distribuição que já tenha todas as opções já compiladas no kernel.


3 - CONFIGURANDO AS PARTIÇÕES DO SISTEMA

Voltando ao nosso problema das quotas do disco. Temos três partições, porém, a princípio iremos configurar o controle de quotas apenas para a partição dos usuários: /home.

Importante: Um ponto fundamental para o entendimento do sistema de quotas é que ele é configurado POR PARTIÇÃO. Não se esqueça disso.

Para que o sistema de quotas seja suportado por uma partição é necessário que esteja integrado com o momento da montagem desta partição. Ou seja, devemos informar no momento da montagem da partição que ela suportará um sistema de quotas.

A forma mais adequada de utilizarmos as quotas sempre no sistema é ativarmos as quotas sempre que montarmos a partição. O arquivo que mantém a tabela de partições que são montadas durante a inicialização do sistema chama-se: /etc/fstab.

Abaixo está um exemplo de fstab para o nosso problema:

Exemplo do /etc/fstab
LABEL=/boot /boot ext3 defaults 1 1
LABEL=/home /home ext3 defaults 1 2
LABEL=/ / ext3 defaults 1 3
3.1 - PARA CONTROLE POR USUÁRIO

Para ativar a quota na partição, deve ser inserida a opção "usrquota", resultando num arquivo fstab conforme mostrado a seguir:

Exemplo do /etc/fstab com a opção usrquota
LABEL=/boot /boot ext3 defaults 1 1
LABEL=/home /home ext3 defaults,usrquota 1 2
LABEL=/ / ext3 defaults 1 3

Com esta alteração você deve remontar a partição reconfigurada. Você pode reiniciar seu computador ou apenas usar o comando:

# mount -o remount /home

3.2 - PARA CONTROLE POR GRUPOS DE USUÁRIOS

Para ativar a quota na partição, deve ser inserida a opção "grpquota", resultando num arquivo fstab conforme mostrado a seguir:

Exemplo do /etc/fstab com grpquota
LABEL=/boot /boot ext3 defaults 1 1
LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2
LABEL=/ / ext3 defaults 1 3

Com esta alteração você deve remontar a partição reconfigurada. Você pode reiniciar seu computador ou apenas usar o comando:

# mount -o remount /home


4 - CRIANDO OS ARQUIVOS DE CONFIGURAÇÃO

Dentro da pasta raiz da partição configurada deve ser criado um arquivo chamado: aquota.user com permissões de leitura e escrita somente para o root. Use os comandos a seguir:

# touch /home/aquota.user
# chmod 600 /home/aquota.user

Obs: Caso você queira utilizar o controle de quotas de disco por grupos de usuários, deverá ser criado um arquivo adicional:

# touch /home/aquota.group
# chmod 600 /home/aquota.group

Após criar o arquivo, você deverá utilizar um programinha do sistema da seguinte forma:

# quotacheck -vagum

Da primeira vez que você executar o quotacheck deverá aparecer um aviso (veja abaixo) de arquivo truncado, mas não se preocupe, daí em diante não haverá mais problemas.

quotacheck: WARNING - Quotafile /home/aquota.user was probably truncated. Can't save quota settings...
quotacheck: Scanning /dev/hda3 [/home] done
quotacheck: Checked 185 directories and 926 files


5 - ADICIONANDO REGRAS DE QUOTAS

Suponha que o nosso sistema possua um usuário chamado: "tux". Para manipular o sistema de quotas dos usuários, é utilizado o comando: edquota com a seguinte sintaxe:

# edquota -u tux

Este comando irá abrir o editor vi com uma lista de campos, conforme mostrado a seguir:

Disk quotas for user tux (uid 501):

Filesystem blocks soft hard inodes soft hard
/dev/hda2 24 0 0 7 0 0
Iremos analisar detalhadamente cada um destes campos:

Filesystem é a partição que está sendo monitorada pelo sistema de quotas. No nosso exemplo, o /home está na partição /dev/hda2;

Blocks mostra o número de blocos (simplificando, o número de KiloBytes) atualmente utilizados pelo usuários;

Inodes Pulando para o quinto campo, o sistema de arquivos do Linux possui uma tabela que possui todas as informações de todos os arquivos lá existentes. Cada arquivo é referenciado por um inode e o sistema de quotas permite que você limite o número de inodes que o usuário pode utilizar.

Obs: Para simplificação, nos preocuparemos apenas com o gerenciamento de quotas por uso em Kbytes. Normalmente, estaremos preocupados em colocar 5Mbytes ou 2 Mbytes para cada usuário e não com os inodes que eles utilizarão.

Outros campos:
Existem três conceitos importantes quando falamos de gerenciamento de
quotas de disco:

1 - SOFT LIMIT é um limite básico que cada usuário pode utilizar. Caso você utilize o item 2 (GRACE PERIOD), o usuário terá um prazo para limpar seus arquivos, caso contrário, não serão permitidas novas gravações na sua área de disco.

2- GRACE PERIOD é um período de tolerância básico, dentro do qual o usuário recebe avisos que ultrapassou seu SOFT LIMIT e que deve tomar alguma providência.

3 - HARD LIMIT é o limite final de tamanho para o usuário. Normalmente é um valor maior que o SOFT LIMIT, mas não muito. Ao ser atingido o HARD LIMIT, o sistema não mais permitirá gravação de arquivos, independente do valor do GRACE PERIOD.

Com isso em mente, voltamos às colunas do comando edquota:

soft a terceira coluna do arquivo representa a quantidade, em KBytes, do SOFT LIMIT.

hard a quarta coluna representa a quantidade em KBytes, do HARD LIMIT.

A sexta e a sétima colunas, denominadas também como soft e hard dizem respeito aos limites, em inodes, para o usuário. Como não utilizaremos este parâmetro, podemos deixar os valores padrões (0).

No nosso exemplo, projetamos que o usuário tux terá direito a 3 MegaBytes de dados (SOFT LIMIT), com uma tolerância máxima de 4 MegaBytes (HARD LIMIT). Com isso, editamos os campos soft e hard, resultando no seguinte:

Disk quotas for user tux (uid 501):

Filesystem blocks soft hard inodes soft hard
/dev/hda2 24 3000 4000 7 0 0

Salve o arquivo no vi.


6 - CONFIGURANDO O PARÂMETRO GRACE PERIOD

Para ajustar este parâmetro, entre com o comando:

# edquota -t

Também será aberta um editor vi com o arquivo no seguinte formato:

Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds:

Filesystem Block grace period Inode grace period
/dev/hda2 7days 7days

Fique atento que a unidade do período pode ser: dias (days), horas (hours), minutos (minutes) ou segundos (seconds) e deve ser configurado sem espaços entre o número e a unidade do período. Isto é: deve ser colocado 7days e não 7 days.

Salve o arquivo e pronto.


7 - VERIFICANDO AS QUOTAS

Existem duas verificações interessantes para as quotas criadas.

1 - A primeira é com o comando:

# quota

Este comando irá responder com a situação atual do uso de disco do usuário atualmente logado no sistema. Se quiser verificar a situação de outro usuário (por exemplo, do usuário tux):

# quota tux


2 - Um segundo modo de se ter um panorama geral das quotas do sistema é com o comando:

# repquota /home

que irá listar um relatório geral dos usuários com o seguinte formato:

Report for user quotas on device /dev/hda2
Block grace time: 7days; Inode grace time: 7days

Block limits File limits
User used soft hard grace used soft hard grace
root 52696 0 0 1015 0 0
tux 24 3000 4000 7 0 0


8 - CHECAGEM DE QUOTAS

O sistema operacional não faz uma checagem de quotas em todas as vezes que um usuário cria um novo arquivo. É necessário que o sistema seja atualizado freqüentemente (na verdade, a freqüência depende da sua necessidade de monitoramento do espaço utilizado no disco).

Para processar os arquivos aquota.user e, se for o caso aquota.group deve ser usado o comando:

# quotacheck -vagu

O ideal é que você crie um agendamento através do cron com este comando.


9 - CONCLUSÕES

O sistema de quotas é muito útil para os administradores de redes que possuem muitos usuários. É papel básico do sistema servidor de redes oferecer esta funcionalidade. Sistemas como Netware ou Windows implementam estas características com muita simplicidade em seus serviços de diretórios. O Linux também não fica atrás, principalmente se você utilizar um software como o WEBMIN que oferece uma interface simples e funcional para a manutenção no dia a dia.

Com este tutorial, espero ter aproximado um pouco mais dos administradores de sistemas Linux esta excelente funcionalidade.

Autor: João Alexandre Lobo Marques
Email: alex_lobo@terra.com.br

Postado por fuji em fevereiro 15, 2004 10:49 PM

Comentários para "Gerenciamento de quotas de disco no Linux"

» Postado por: Tarcísio C. Espínola em fevereiro 24, 2004 07:45 PM, 200.217.87.:

 

» Postado por: Luciano em fevereiro 25, 2004 01:54 PM, 200.141.250:

 

» Postado por: Jean em fevereiro 26, 2004 09:44 AM, 200.194.106:

 

» Postado por: Eduardo em fevereiro 27, 2004 02:47 PM, 200.217.40.:

 

» Postado por: Wellerson em fevereiro 29, 2004 08:12 PM, 200.150.55.:

 

» Postado por: Beto em maio 14, 2004 08:27 PM, 201.8.109.1:

 

» Postado por: Tiago Presoto em maio 19, 2004 10:30 AM, 200.206.72.:

 

Antes de comentar...

- Preserve a qualidade desta discussão
- Leia os Termos de Uso.
- Este formulário deve ser usado para comentários sobre a notícia. Se você tem dúvidas ou precisa de ajuda, use o Fórum.
- Mantenha o foco nos argumentos e no assunto
- Não faça ataques pessoais.
- Pense 5 vezes antes de entrar em discussões inúteis, como "qual é a melhor distribuição/ambiente gráfico/linguagem de programação/etc.", mesmo se alguém já tiver provocado - um erro não justifica o outro
- Não seja um e-mala ;-)


O Arquivo Histórico do BR-Linux.org mantém no ar (sem alteração, exceto quanto à formatação) notícias, artigos e outros textos publicados originalmente no site na segunda metade da década de 1990 e na primeira década do século XXI, que contam parte considerável a história do Linux e do Open Source no Brasil. Exceto quando indicado em contrário, a autoria dos textos é de Augusto Campos, e os termos de uso podem ser consultados na capa do BR-Linux.org. Considerando seu caráter histórico, é provável que boa parte dos links estejam quebrados, e que as informações deste texto estejam desatualizadas.