Quotas de Disco no Linux

Dicas e conf's para servidores Linux
Avatar do usuário
marcelo0786
Global Moderator
Global Moderator
Mensagens: 127
Registrado em: 17 Jun 2013 17:43
Status: Offline

Quotas de Disco no Linux

Mensagem por marcelo0786 »

A utilização de um sistema de quotas é um assunto tão importante quanto dividir o
disco rígido em partições. O sistema de quotas serve para limitarmos a quantidade
de blocos e “inodes” que um usuário ou grupo pode utilizar em uma determinada
partição.
O sistema de quotas é uma funcionalidade do “filesystem” e do kernel, sendo assim,
ambos têm que serem capazes de suportá-lo. Uma vez que o “filesystem” suporta
quotas, devemos adicionar os parâmetros de montagem, “usrquota” e “grpquota” ao
“filesystem” que utilizaremos com esse sistema. Isso é feito no arquivo “/etc/fstab”.
Além disso, temos que criar, na raiz desses “filesystems”, os arquivos de controle,
chamados “aquota.user” e “aquota.group”.
Uma vez criada essa estrutura, basta editar os arquivos de controle de quotas e
distribuir as quantidades de forma apropriada. A quota somente pode ser aplicada
por partições.

Instale o pacote de quota:
# aptitude install quota
#apt-get install quota
# yum install quota

Edite o arquivo “/etc/fstab” e inclua as opções de quota por usuário e por grupo em
“/home”:

UUID =12 e9cf3f -99b3 -4 e8e -8079 - d4337b2ce9c8 / home ext3 defaults ,
usrquota , grpquota 0 2

Remonte o “/home” para que as alterações sejam efetuadas:

mount -o remount / home

Verifique se as opções de quota foram aplicadas:

# mount

Crie os arquivos de quota na raiz da partição que receberá o sistema de quotas:

# quotacheck -cug / home

-c -> cria arquivos de quota
-u -> checa quotas de usuários
-g -> checa quotas de grupos Caso dê erro:
-f -> força checagem das quotas
-m -> força checagem no filesystem montado como leitura e escrita , não remonta o
filesystem como somente leitura em caso de erro.

Certifique-se de que os arquivos de controle de quota foram criados: "aquota.group"e
"aquota.user".

# ls -l / home

Habilite a quota na partição /home:

# quotaon / home

Caso queira desabilitar a quota na partição o comando é:

# quotaoff / home

Verifique se o sistema de quota está ativo, listando as suas informações de quotas
para usuários:

# repquota -va

Verifique se o sistema de quota está ativo, listando as suas informações de quotas
para grupos:

# repquota -vag

Quotas por Usuário:

Vamos definir qual a quantidade de recursos do HD que cada usuário poderá utilizar.
Vamos impor que o usuário “mandark” poderá utilizar até 50MB com um limite
máximo de 60MB ou 100 arquivos com o limite máximo de 110 arquivos.
Editando a quota do usuário mandark:

Editando a quota do usuário mandark:

# edquota -u mandark

Dentro do “edquota”, faremos as configurações para que a quota do usuário mandark,
seja de 50MB e ele possa criar 100 arquivos, com um limite máximo acima da
sua quota de 10MB e 10 arquivos. Altere o arquivo para que fique como mostrado a
seguir:

Disk quotas for user mandark ( uid 1001) :
Filesystem blocks soft hard inodes soft hard
/dev/ sda3 0 50000 60000 0 100 110
^-------NÃO MEXER -------^

Onde:

Filsesystem -> partição onde será aplicada a quota.

blocks -> tamanho real utilizado em KBytes. (não é possível alterar)

soft -> limite da quota de espaço disponível para gravação, ao ultrapassar este limite
o usuário estoura sua quota.

hard -> limite máximo permitido de espaço disponível para gravação, após exceder
sua quota, existe um período de tempo chamado “grace time” para uso deste limite.

inodes -> tamanho real utilizado em número de arquivos. (não é possível alterar)

soft -> limite da quota de número de arquivos que podem ser criados, ao ultrapassar
este limite o usuário estoura sua quota.

hard -> limite máximo permitido de número de arquivos que podem ser criado, após
exceder sua quota, existe um período de tempo chamado “grace time” para uso deste
limite.

Verifique se o limite já está aplicado:

# repquota -v -a

Já que fizemos a gentileza de determinar que o usuário poderá usar 10MB ou 10
arquivos a mais caso ele estoure a sua quota, devemos determinar também por
quanto tempo ele poderá usar esse espaço a mais.
Determine que os usuários terão 5 dias de “grace period”:

# edquota -t

Caso o usuário estoure sua quota ele tem um tempo(grace period) antes de sua conta ser bloqueada para apagar os arquivos necessários para utilizar o limite de
sua quota.

Consulte a quota do usuário “mandark”.

# quota -u mandark

Efetue login em outro terminal utilizando o usuário “mandark” e vamos rodar um
comando para encher o disco:

$ yes > a


Depois que a quota estourou, volte ao terminal do “root”, examine o status da quota
e veja se a quota do usuário mandark está estourada por espaço utilizado:

# repquota -va

Vamos executar o seguinte comando para estourar o número de “inodes” permitidos
para o usuário mandark:

$ touch file {1..100}

Depois que a quota estourou, volte ao terminal do “root”, examine o status da quota
e veja se a quota do usuário mandark está também por número de arquivos:

# repquota -va

Quando o usuário está com a quota estourada é possível aumentar o "grace period"
para ele:

# setquota -u mandark -T 86400 86400 / home

Onde: -u -> defini que a quota é pra um usuário mandark -> usuário que receberá a
definição de quota -T -> define o príodo de grace time 86400 -> tempo em segundos
(por tamanho) 86400 -> tempo em segundos (por inode) /home -> partição que será
definida a quota
Voltando ao terminal logado, como usuário “mandark”, vamos apagar os arquivos
criados:

$ rm a file *

Cheque os valores da quota do usuário mandark:

# quota -u mandark

Outra forma de definir a quota do usuário é através do comando setquota, este comando
é muito útil para scripts.

Vamos aumentar o tamanho da quota do usuário mandark:


# setquota -u mandark 200000 210000 1000 1010 / home


-u -> indica que será definida quota para um usuário
mandark -> usuário que receberá os valores da quota
200000 -> soft para espaço disponível para uso
210000 -> hard para espaço disponível para uso
1000 -> soft para número de arquivos
1010 -> hard para número de arquivos
home -> partição para aplicar a quota

Cheque os valores da quota do usuário mandark:

# quota -u mandark

Quotas por Grupo

Defina quota por grupo para o grupo “users”:

# setquota -g users 50000 60000 100 110

ou


Disk quotas for group users ( gid 100) :
Filesystem blocks soft hard inodes soft hard
/dev/ sda3 0 50000 60000 0 100 110
^----------NÃO MEXER ----------^

Verifique o status da quota por grupo:

# repquota -vag

Verifique os detalhes mais avançados sobre o uso das quotas nas partições.

# quotastats

Adicione o usuário mandark ao grupo users:

# adduser mandark users

Crie um diretório para teste de quota por grupo:

# mkdir / home / users

Troque sua permissão para toda vez que um arquivo for criado, pertença ao grupo
users, para isso mude também o grupo do diretório para ”users”:

# chmod 2775 / home / users
# chgrp users / home / users

Acesse o diretório /home/users com o usuário mandark e estoure a quota de grupo
por tamanho:

$ yes > a

Estoure a quota de grupo por número de arquivos:

$ touch arq {1..101}

Verifique o status da quota por grupo:

# repquota -vag


Replicando quotas

Verifique a quota por usuários:

# repquota -va

O usuário mandark tem quota definida e o usuário rh não tem, então vamos copiar a
quota do usuário mandark para o usuário herdeiro:

# edquota -up mandark herdeiro

Onde:

-u -> usuário
-p -> protótipo
-g -> grupo

Verifique a quota por usuários:

# repquota -va

Criando usuário com quota definida (Só funciona
no Debian)

Edite o arquivo /etc/adduser.conf e adicione um usuário que já tenha uma quota
definida na opção QUOTAUSER= . Ex: o usuário mandark já tem cota definida e
quero passar esta quota para um usuário novo:

# vim /etc/ adduser . conf
# linha 67 completo com o nome do usu á rio que tem quota definida :

QUOTAUSER =" mandark "

Crie um usuário com o comando adduser e veja que ele já terá quota definida:

# adduser compras
# repquota -va

Aviso de quota excedida

Avisos sobre quota ultrapassada podem ser enviadas automaticamente a todos os
usuários pelo utilitário ‘warnquota’. Ele poderá ser executado periodicamente através
do ‘cron’ (por padrão isto é feito diariamente na distribuição ’Debian’ pelo script
’/etc/cron.daily/quota’), no CentOS é necessário agendar a execução do comando
warnquota. Dados adicionais sobre o envio das mensagens devem ser especificados
no arquivo ’/etc/warnquota.conf’ seu formato é o seguinte:

# Programa usado para enviar as mensagens
MAIL_CMD = "/usr/ sbin / sendmail -t"
# Campo de origem da mensagem
FROM = " root@localhost "
# but they don ’t have to be:
SUBJECT = Quota excedida
CC_TO = " root@localhost "
SUPPORT = " root@localhost "
PHONE = " 5555 -2525 "


O e-mail é enviado aos usuários..

Quando a quota é por grupo deve-se eleger um usuário para receber os e-mails de
quota excedida do grupo.

O arquivo /etc/quotagrpadmins serve para configurar o usuário que receberá os emails
de quota excedida do grupo:

# vim /etc/ quotagrpadmins
grupo : usuario
users : mandark

Para receber o aviso para usuários e para grupos execute:

# warnquota -u
# warnquota -g

Caso queira pode colocar no crontab para executar de tempos em tempos:

# vim /etc/ crontab
#min hora dia_do_mes mês dia_da_semana usu á rio comando
00 15 * * * root / usr / sbin / warnquota  -u
4 00 15 * * * root / usr / sbin / warnquota  -g

Obs.: O Debian já faz a checagem por padrão no crontab: /etc/cron.daily/quota.


Voltar para “Servidores”