Hi,
Quota. Usamos quando quremos limitar o uso do espaço em disco a um determinado usuário. O uso de quota previne o uso indevido dos usuários com relação ao espaço em disco, evitando – assim – o esgotamento repentino do espaço de uma determinada partição.
No FreeBSD o sistema de Quota é nativo do sistema, não nessitando instalar nenhum outro aplicativo. Necessário somente habilitar o recurso no kernel.
Adicione a quota no seu kernel, recompile e habilite o sistema de quotas ao sistema (não me aprofundarei na recompilação do kernel, pois, não é o alvo do post).
~#
~# cd /usr/src/sys/i386/conf
~# vi SEUKERNELAdicione a opção de cotas no final do arquivo:
options QUOTARecompile o kernel:
~#
~# cd /usr/src/
~# make buildkernel KERNCONF=SEUKERNEL
~# make installkernel KERNCONF=SEUKERNELHabilite o sistema de quotas ao sistema:
~#
~# cd /etc/
~# vi rc.confAdicione as linhas abaixo no seu rc.conf
enable_quotas=”YES”
check_quotas=”NO”
Pronto! Com o sistema de quota habilitado vamos definir as configurações nas partições e usuários!
Ah, em check_quotas, neste caso, deixei desabilitado (NO) para optimizar o boot do sistema. O check_quotas, como o próprio nome descreve, serve para checar a integridade dos dados no disco em relação a quota definida em cada usuário. Mas, em um sistema com muitos usuários acaba se tornando uma checagem muito demorado.
Neste exemplo vamos habilitar a partição /home para o uso de quotas. Neste caso, editamos o /etc/fstab e habilitamos o recurso na partição, depois reinicie o sistema.
~#
~# cd /etc/
~# vi fstabAdicione o parametro “userquota” no /home:
/dev/ad0s1f /home ufs rw,nosuid,userquota 2 2Reinicie o sistema:
~#
~# shutdown -r now
Depois de reinicar o sistema, execute:
~#
~# quotacheck -a
Com este comando ele cria o arquivo quota.user na raiz de cada partição que você definiu como o sistema de quotas. Este arquivo é resposável pela base de dados das quotas de seus usuários.
O sistema de quotas pode ser configurado de duas formas: por blocos (1KB por bloco) ou inodes (arquivos). Geralmente usa-se quota por bloco, o que traduz-se no espaço utilizado em disco.
O sistema de quotas também usá dois tipos de limites: o hard e soft. No limite hard, ele não pode ser ultrapassado, ou seja, se você define 50MB de limite hard ao atingir este limite o usuário não poderá mais adicionar dados no disco. Já o limite soft pode ser ultrapassado, por um determinado periodo chamado de “grace period”. Neste caso, ao ser ultrapassado o limite soft, o usuário pode utilizar esta “ultrapassagem de dados” até o limite do “grace period” (por default 1 semana), quando o “grace period” expira o limite de quota se torna hard (não podendo ser ultrapassado, até regulariar a situação).
Depois de entendido o sistema de quotas vamos editar e adicionar as regras. Para editar as quotas de um determinado usuário usamos:
~#
~# edquota -u usuario
No nosso exemplo, vamos visualizar as regras de quota para o usuário “bleno”, vejamos:
~#
~# edquota -u bleno
Quotas for user bleno:
/home: kbytes in use: 988, limits (soft = 0, hard = 0)
inodes in use: 4, limits (soft = 0, hard = 0)
Veja que os limites de soft e hard estão com 0 KB! Vamos então definir 10MB de limite hard usando blocos (tamanho em disco). Neste caso 10 * 1024 = 10240, ficando nosso arquivo assim:
~#
~# edquota -u bleno
Quotas for user bleno:
/home: kbytes in use: 988, limits (soft = 0, hard = 10240)
inodes in use: 4, limits (soft = 0, hard = 0)
Simples, não? Veja que o sistema de quotas é muito simples de se trabalhar. Vamos por exemplo definir para o usuário “bleno” uma quota de 10MB hard, 8MB soft por blocos e 200 arquivos hard e 190 arquivos soft por inodes (arquivos).
~#
~# edquota -u bleno
Quotas for user bleno:
/home: kbytes in use: 988, limits (soft = 8192, hard = 10240)
inodes in use: 4, limits (soft = 190, hard = 200)
Não há segredo. O único “problema” é quando temos um sistema com muitos usuários. Fica praticamente inviável editar cada usuário na mão. Mas é possível criar um shell script e gerenciar toda a manipulação de quotas. Vamos exemplificar mais um pouco.
Para copiar as regras de quota do usuário “bleno” para “joao”:
~#
~# edquota -p bleno joao
Copiar as regras de quota de “bleno” para usuários com UID 1000:
~#
~# edquota -p bleno 1000
Copiar as regras de quota de “bleno” para usuários com UID entre 1000 e 5000:
~#
~# edquota -p bleno 1000-5000
Assim finalizo este post sobre quota. O assunto é muito mais profundo e extenso. As man pages do comando “edquota” é bem explicativo (principalmente se você for criar algum shell script para gerenciar seu sistema de quota), vale a pena dar uma lida!
;)

outubro 14th, 2009 at 13:54
[...] http://www.bleno.org/blog/2009/06/usando-quota-no-freebsd/ [...]