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:
/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:
LABEL=/boot | /boot | ext3 | defaults | 1 1 |
LABEL=/home | /home | ext3 | defaults | 1 2 |
LABEL=/ | / | ext3 | defaults | 1 3 |
Para ativar a quota na partição, deve ser inserida a opção "usrquota", resultando num arquivo fstab conforme mostrado a seguir:
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:
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 |
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: Tarcísio C. Espínola em fevereiro 24, 2004 07:45 PM, 200.217.87.:
Podemos, também, utilizar o utilitário Webmin para a administração das cotas dos usuários e grupos. É incrível a facilidade com que esse utilitário permite que isso seja feito.
Tarcísio.
» Postado por: Luciano em fevereiro 25, 2004 01:54 PM, 200.141.250:
existe ainda um script programa sei la chamado warnquota que ao ser rodado ele envia um e-mail para cada usuario que estiver com quota cheia que pode ser editado no /etc/warnquota.conf
acho q é isso... recurso interessante, vc pode explicar para pessoa como proceder visto que quando a quota estoura por exemplo nao é mais possivel logar no kde por exemplo...
ai tem q ir no terminal ou no xfce apagar os arquivos sobrando...
» Postado por: Jean em fevereiro 26, 2004 09:44 AM, 200.194.106:
Pelo que percebi...é necessário executar o comando para cada usuario existente?...ou seja como eu tenho 3000 usuarios....vou ter q fazer isso 3000 vezes?
Valeu!
Jean
» Postado por: Eduardo em fevereiro 27, 2004 02:47 PM, 200.217.40.:
Vc tb pode setar a quota por grupo.
entao ao invés de "edquota -u usuario" poderia ser "edquota -g grupo". Nesse caso basta saber a qual grupo esses seus usuários pertencem .
» Postado por: Wellerson em fevereiro 29, 2004 08:12 PM, 200.150.55.:
Faltou informar como é calculado o uso de espaço ao usar quotas por GRUPO de usuários. Ex. 10MB para o grupo GTUX. Serão 10MB para cada usuário do grupo GTUX ou 10MB para a soma do tamanho dos arquivos dos usuários do grupo GTUX?
» Postado por: Beto em maio 14, 2004 08:27 PM, 201.8.109.1:
Não tenho certeza sobre isso mas de qualquer forma pelo menos no quotas do freebsd há uma opção em que vc a partir de um usuário define as quotas de um intervalo de usuários... deve ter algo parecido no Linux com certeza.. O comando seria: edquota -p userbase uidinicial-uidfinal :
edquota -p user 500-10000 Isso setaria as configurações de cotas do usario user para o usuário com uid 500 até o usuário 10000...
Estou usando NFS gostaria de saber se há alguma configuração especial a ser feita no CLIETNE para que o sistema de quotas funcione...
» Postado por: Tiago Presoto em maio 19, 2004 10:30 AM, 200.206.72.:
eu tenho que fazer um trabalho sobre o tema gerenciamento de disco ficarei muito grato se puderem me ajudar
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.