preload

jun 17

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 SEUKERNEL

Adicione a opção de cotas no final do arquivo:
options          QUOTA

Recompile o kernel:
~#
~# cd /usr/src/
~# make buildkernel KERNCONF=SEUKERNEL
~# make installkernel KERNCONF=SEUKERNEL

Habilite o sistema de quotas ao sistema:
~#
~# cd /etc/
~# vi rc.conf

Adicione 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 fstab

Adicione o parametro “userquota” no /home:
/dev/ad0s1f      /home   ufs   rw,nosuid,userquota   2   2

Reinicie 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!

;)

Um comentário to “Usando Quota no FreeBSD”

  1. Servidor de e-mail completo com Postfix e FreeBSD – parte 1 | Profissionais TI Says:

    [...] http://www.bleno.org/blog/2009/06/usando-quota-no-freebsd/ [...]

Deixe uma resposta