Linux - Quota de disco

Quotas de disco permitem controlar o uso do disco por usuário ou grupo, ou por ambos (usuário e grupo). São normalmente utilizadas em sistemas multi-usuários e não em sistemas mono-usuário (desktop) e é gerenciada somente pelo usuário root. Neste artigo irei cobrir a versão mais utilizada de implementação de quota: vfsv0 (versão 2).

[ Hits: 140.218 ]

Por: Roberto Rodrigues da Silva em 02/11/2006


Editar limites de quotas de disco



Os arquivos aquota.user e aquota.group são arquivos binários e não podem ser editados diretamente por um editor de textos.

Para editar o limite de quotas de disco, utilizamos o comando edquota (de EDitar QUOTA).

O comando edquota extrai as informações dos arquivos aquota.user e aquota.group em todos os pontos de montagem que as quotas estão habilitadas, cria um arquivo temporário e abre um editor para para que você possa ajustar as quotas.

Consulte o manual para mais informações sobre o comando edquota.

Sintaxe:

edquota [ -u | -g ] [ -F format-name ] [ -f filesystem ] -t

Exemplo:

# edquota roberto

GNU nano 1.3.10 Arquivo: /tmp//EdP.ac3bZ0u

Disk quotas for user roberto (uid 1000):
Filesystem blocks soft hard inodes soft hard
/dev/hda4 10020 12000 13000 3 5 6

Explicando para que serve cada coluna:
  • Filesystem - Partição que terá a quota do usuário/grupo editada. No exemplo /dev/hda4.
  • blocks - Número máximo de blocos (especificado em Kbytes) que o usuário possui atualmente. No exemplo 10020 Kbytes.
  • soft - Restrição mínima de espaço em disco usado. No exemplo 12000 Kbytes.
  • hard - Limite máximo aceitável de uso em disco para o usuário/grupo sendo editado. O sistema de quotas nunca deixará este limite ser ultrapassado. No exemplo 13000 Kbytes.
  • inodes - Número máximo de arquivos (inodes) que o usuário possui atualmente na partição especificada. No exemplo 3 inodes.
  • soft - Restrição mínima de número de arquivos que o usuário/grupo possui no disco. No exemplo 5 inodes.
  • hard - Restrição máxima de número de arquivos que o usuário/grupo possui no disco. No exemplo 6 inodes.

Ou seja, temos:
  • O sistema de arquivos onde a quota está habilitada (Filesystem);
  • Limite soft e hard para o número máximo de blocos;
  • Limite soft e hard para o número máximo de inodes.

Quando o limite soft é atingido, o usuário é alertado por ter ultrapassado sua quota com a mensagem "hda4: warning, user file quota exceeded." (quota do usuário excedida).

Quando o limite hard é atingido, o usuário é alertado com a mensagem "hda4: write failed, user file limit reached." e posteriormente com a mensagem "mkdir: não é possível criar o diretório `novo_dir': Disk quota exceeded". E o usuário será bloqueado para criar novos arquivos ou diretórios. O limite hard nunca será ultrapassado.

Para desativar as restrições de quota coloque "0" no campo soft ou hard.

O limite soft é válido somente por um determinado tempo, após expirar este tempo, o valor do limite soft é utilizado como limite hard. Lembrando que o hard nunca poderá ser ultrapassado.

Para alterar o tempo que o limite soft é expirado, utilizamos o comando "edquota -t" para modificar estes valores na partição especificada:

# edquota -t

GNU nano 1.3.10 Arquivo: /tmp//EdP.aE3dnlb

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/hda4 3days 7days

Explicando as colunas:
  • Filesystem - Sistema de arquivos que terá o período de tolerância modificado.
  • Block grace period - Tempo máximo de tolerância para usuários/grupos que ultrapassaram sua quota soft de espaço em disco antes de passar a valer como hard. No exemplo, o usuário tem 3 dias para excluir possíveis arquivos ou contactar o administrador para redimensionar o tamanho de quota. O valor padrão é 7 dias.
  • Inode grace period - Tempo máximo de tolerância para usuários/grupos que ultrapassaram sua quota soft de número de arquivos gravados antes de passar a valer como hard. No exemplo, o usuário tem 7 dias para excluir possíveis arquivos ou contactar o administrador para analisar seu tamanho de quota. O valor padrão é 7 dias.

Ou seja, temos:
  • O sistema de arquivos onde a tolerância está habilitada. ( Filesystem )
  • O número de dias para o limite soft para o número máximo de blocos.
  • O número de dias para o limite soft para o número máximo de inodes.

Observações:
- O comando quotacheck deverá ser executado na partição sempre que novas restrições/limites forem editados com o edquota. Isto atualiza os arquivos aquota.user e aquota.group.

Primeiro desative o sistema de quotas, com o comando:

# quotaoff -augv

Execute o comando para checar as quotas:

# quotacheck -augv

Após isso é necessário ativar as quotas com o comando:

# quotaon -augv

Por este motivo é recomendável fazer isso em modo monousuário. Se você possuir quotas de disco na partição raiz "/" será necessário reiniciar o sistema.

- Para dar tempo de eliminar arquivos e não ser pego desprevenido com o bloqueio de gravação do limite hard, o sistema lhe mostrará mensagens alertando que o limite soft foi ultrapassado e que está próximo de atingir o limite hard. Lembrando que o limite hard nunca poderá ser ultrapassado.

- Quando o usuário exclui seus arquivos e volta a ficar abaixo dos limites soft da quota, o tempo de tolerância é resetado aos valores padrões especificados por edquota -t.

- As quotas de espaço em disco podem ser definidas automaticamente para os novos usuários adicionados ao sistema colocando o espaço em disco na variável QUOTAUSER=número do arquivo /etc/adduser.conf. Isto será equivalente a digitar o comando edquota -q QUOTA novo_usuário.

Copiando quotas


Agora imagine você editando quotas de disco para cada usuário. Seria uma tarefa trabalhosa se você tiver muitos usuários. Para resolver este problema utilizamos o parâmetro -p do comando edquota.

Ele duplica a quota do usuário especificado para cada um dos outros usuários especificados.

Este é o mecanismo normalmente utilizado para clonar quotas de um usuário para um grupos de usuários.

Exemplo:

# edquota -p roberto mario andre jsilva

Limites para grupo


Você pode também usar o comando edquota para restringir o espaço em disco para o grupo dono dos arquivos.

Por exemplo: Podemos limitar o total de arquivos criados ou espaço em disco para todos os membros do grupo devel para 50 MB e 5000 arquivos, como mostra o exemplo abaixo:

# edquota -g devel

Página anterior     Próxima página

Páginas do artigo
   1. Habilitar quotas de disco
   2. Editar limites de quotas de disco
   3. Checar quotas de disco
   4. Gerenciar quotas ultrapassadas
   5. Aviso de limite de quota ultrapassado
Outros artigos deste autor

Verificando e marcando badblocks

Linux - Permissões de acesso especiais

Linux - Manipulando partições de disco

Linux - Sistema de arquivos

Python - Brincando com arquivos

Leitura recomendada

Sistemas de arquivos no Unix - Arquivos, Diretórios e Partições

Aplicações em 32 bits para seu Ubuntu 64 bits (Feisty Fawn)

Sistema de arquivos distribuídos usando Gmail

Como atualizar o Ubuntu Dapper (6.06) para Edgy (6.10)

Verificando e marcando badblocks

  
Comentários
[1] Comentário enviado por grabber em 02/11/2006 - 00:43h

Artigo extremamente bem escrito sem erros ou contradições.

vfsold (versão 1) - módulo quota_v1
vfsv0 (versão 2) - módulo quota_v2


Parabéns pelo artigo!

[2] Comentário enviado por robertors em 02/11/2006 - 23:39h

Olá, Grabber.

Que bom que gostou.
Muito obrigado.

Abraços.

[3] Comentário enviado por tatototino em 09/11/2006 - 22:38h

Muito bom, parabéns!

[4] Comentário enviado por cleitão em 13/11/2006 - 15:41h

Boa tarde Robertors,

estou utilizando o linux a algum tempo mas só tenho feito configurações prativamente de máquinas desktop, agora tenho um desafio que é configurar um servidor de email. Dei uma olhada em alguns totoriais e todos citam a implementação de com quota. Qual a importância do quota em um servidor de email?????

Obrigado pela atenção.......

[5] Comentário enviado por robertors em 13/11/2006 - 16:16h

Olá,

O uso de Quota em servidores de e-mail é importante pra retringir o espaço em disco utilizado pelo usuarios de e-mails.

Na prática:

Se você não impor limites ao usuário, ele irá rapidamente acabar com o espaço em disco do seu servidor de e-mails.

O pessoal normalmente utiliza quota de disco, buscando informaçoes de quota em um banco de dados ( mysql, postgreSQL )

Sobre Tutoriais - Servidor de E-mail:

Eu estou terminando de escrever um tutorial sobre Servidor de E-mail com Postfix.

Titulo:

Construindo um Servidor de E-mails - Sem Mistério.

Conteúdo:

Ubuntu + Postfix + Maildrop + MySQL + DOMÍNIOS VIRTUAIS + QUOTA + COURIER-IMAP/POP + Sasl/TLS + VACATION + Amavis-NEW + ClamAV + Anti-SPAM ( DSPAM/RBL/SPF/TMDA ou ASK) + Squirrelmail + PosfixAdmin + IsoqLog + Mailqui

Tudo em linguagem clara e objetiva ( do jeito que os sysadmin esperam )
Ainda estou escrevendo.... Mas logo estarei disponibilizando aqui no VOL.

Qualquer dúvida entre em contato comigo.

Abraços.

[6] Comentário enviado por baloeiro_cps em 14/11/2006 - 17:24h

muito legal seu artigo, eu tenho quota aqui no suse10 mas so que nas maquinas windows mostra o tamanho total do disco e nao o tamanho da quota do usuario, vc sabe como posso fazer pra mostrar o compartilhamento com o tamanho da quota do usuario????

agradeço!!!

[7] Comentário enviado por baloeiro_cps em 14/11/2006 - 17:25h

esqueci de dizer, é um servidor de arquivos logando no AD com quota de 100MB para cada usuario!

[8] Comentário enviado por TSM em 28/07/2007 - 22:21h

Muito bom, parabéns.

[9] Comentário enviado por removido em 19/03/2008 - 13:17h

Roberto,

Parabéns pelo excelente artigo.

Atenciosamente,

Slackmaster ( jlgomessouza@gmail.com )

http://dangercode.blogspot.com

[10] Comentário enviado por removido em 28/05/2008 - 15:38h

Ola Amigo,

Muito legal seu artigo.


Abraços

Micnet

[11] Comentário enviado por n1lux em 29/07/2008 - 13:56h

Olá Robertors, exelente artigo kra, aborda totalmente o tema de quotas no linux...
Mas comigo aconteceu um problema kra, talvez vc possa me ajudar:
Fiz tudo certinho seguindo o teu tutorial mas deu problema na cota para grupos. Se estabeleco um limite
para um grupo do AD, esse limite nao e obedecido. ja para usuario funciona direitinho... o q sera que pode ser?

[12] Comentário enviado por hwrbet em 31/05/2009 - 13:04h

EXCELENTE ARTIGO AMIGO, PARABENS!!!

Me interessei pelos seus posts, e vou dar uma olhada em TODOS eles... muito didatico, exemplificado, linguagem simplérrima...

EXCELENTE!!!!!!!!!!!!!

[13] Comentário enviado por mikaelrna em 05/08/2009 - 09:21h

Roberto,

Primeiramente gostaria de parabeniza-lo pelo artigo com uma linguagem simples e objetiva, aproveito para fazer uma sugestão:
Insira no script de inicialização(recomendado /etc/rc.local) para verificar a quota e habilitá-la em tempo de inicialização:

# Verifica a quota e a habilita.
if [ -x /usr/sbin/quotacheck ]
then
echo "Checando quotas. Isto pode levar algum tempo."
/usr/sbin/quotacheck -avug
echo " Concluído."
fi
if [ -x /usr/sbin/quotaon ]
then
echo "Habilitando sistema de quota."
/usr/sbin/quotaon -avug
fi

ATENÇÃO: O caminho para o comando quotacheck pode variar nas distribuições verifique o caminho correto executando o comando:
#which quotacheck

[14] Comentário enviado por mayconplanet em 07/07/2010 - 10:54h

Muito bom!Parabéns! Explicou com detalhes...

[15] Comentário enviado por rsilveiragomes em 30/04/2014 - 13:42h

Muito útil o artigo, tudo muito bem explicado!

Me ajudou a entender melhor o funcionamento das quotas. Obrigado !

[16] Comentário enviado por removido em 26/08/2015 - 00:02h

Artigo muito útil.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts