Linux Quota de disco
Quota 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 com vários usuários e não com 1 ou um número relativamente baixo de usuários. 2
Quota Estas quotas garantem um limite de espaço em disco, se este limite for ultrapassado, o usuário ou grupo de usuários não será capaz de criar novos arquivos até que os mesmos sejam apagados ou a quota seja redimensionada. 3
Limite físico Hard Limit (Limite Físico) É o máximo de espaço em disco que um usuário pode ter na partição configurada com quotas de disco. Uma vez que este limite de quota é ultrapassado, o usuário não poderá gravar arquivos na partição. 4
Limite temporário Grace Period Período de tempo antes que o hard limit seja aplicado. 5
Limite temporário Soft Limit (Limite Temporário) Indica a quantidade máxima de espaço temporária em disco numa partição. Quando este limite é ultrapassado, o Grace Period é acionado. O usuário ainda poderá gravar arquivos até o Grace Period terminar ou até que o Hard Limit seja alcançado. 6
Instalando Pacote quota apt-get update apt-get install quota 7
/etc/fstab Modifique a linha onde está montada a partição que deseja ativar o quota adicionando os parâmetros usrquota e grpquota: /dev/hda2 /home ext3 defaults 0 0 Para: /dev/hda2 /home ext3 defaults,usrquota,grpquota 0 0 8
Arquivos Criando arquivos de controle na pasta onde foi ativado o Quota: quotacheck -cug /ponto/de/montagem 9
Comandos - quota quota O comando quota é usado para visualizar informações sobre as quotas de espaço em disco configuradas para um determinado usuário ou grupo de usuários. 10
Comandos Principais opções: -u Mostra a quota definida para um determinado usuário; -g Mostra a quota definida para um determinado grupo de usuários; -v Mostra as quotas; 11
Exemplo quota -u teste Disk quotas for user teste (uid 1001): Filesystem blocks quota limit grace files quota limit grace /dev/sdb2 2740* 1000 2000 60 0 0 12
Comandos quotaon quotaon Habilita o gerenciamento prévio de todas as quotas de disco configuradas em um ou mais sistemas de arquivos. 13
Principais opções -a Habilita o gerenciamento de todas as quotas de disco para todos os sistemas de arquivos configurados para controle de quotas no arquivo /etc/fstab; -u Habilita o gerenciamento de quotas de usuários em um determinado dispositivo; -g Habilita o gerenciamento de quotas de grupos em um determinado dispositivo; 14
Comandos - quotaoff quotaoff Desabilita o gerenciamento de quotas de usuários ou grupos em um ou mais sistemas de arquivos. 15
Principais opções -a Desabilita o gerenciamento de todas as quotas de disco para todos os sistemas de arquivos configurados para controle de quotas no arquivo /etc/fstab; -u Desabilita o gerenciamento de quotas de usuários em um determinado dispositivo; -g Desabilita o gerenciamento de quotas de grupos em um determinado dispositivo; 16
Comandos - quotacheck Verifica o filesystem em relação ao uso de disco, cria, verifica e repara arquivos de quota. Se o arquivo de quota não existir, cria o arquivo Recomenda-se executar após desligamento irregular e com as quotas desativadas. 17
Principais opções -u Verifica quotas de usuários em sistemas especificados -g Verifica quotas de grupos em sistemas especificados -c Cria os arquivos de quota de usuário e grupo -v Mostra as operações em andamento -a Em todos os sistemas de arquivo 18
Exemplo quotacheck -av 19
Comandos - edquota edquota O comando edquota é um utilitário usado somente pelo superusuário para edição de quotas de usuários e grupos. O editor padrão do sistema é usado com o edquota para editar os arquivos quota.user e quota.group. 20
Exemplos Edição da quota do usuário teste: edquota -u teste Disk quotas for user teste (uid 1001): Filesystem blocks soft hard inodes soft hard /dev/sdb2 2740 3000 5000 60 0 0 21
Exemplos Mudando o soft limit dos usuários: edquota -tu 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/sdb2 5days 3days 22
Exemplos Podemos usar dias, horas, minutos ou segundos para configurar o Soft Limit, no exemplo acima, o período de graça para espaço em disco está configurado para 5 dias e 3 dias para armazenamento de arquivos. 23
Comandos - repquota repquota O comando repquota gera um relatório do uso das quotas de discos de usuários e grupos de um determinado dispositivo. 24
Exemplo: Para ver as quotas estipuladas no sistema: repquota -av 25
Journaled quota Com journaled quota, não é necessário executar o quotacheck depois de um shutdown inesperado. Journaled quota funciona com os sistemas de arquivos ext3 e ext4. 26
Configuração normal X journaled Configurando a quota da forma normal, pode aparecer o seguinte aviso: quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown. 27
Configurando journaled quota Edite o arquivo /etc/fstab, adicionando: usrjquota=aquota.user,grpjquota=aq uota.group,jqfmt=vfsv0 na linha da partição com journaling que você quer usar com quota. 28
Quota para novos usuários Para configurar quota para todos os usuários que serão criados, basta criar um usuário modelo (sem shell válido, nem password e nem pasta home): adduser shell /bin/false disabled- password no-create-home usrquota 29
Quota para novos usuários Abra o arquivo de configuração do comando adduser: vim /etc/adduser.conf Modifique a linha (provavelmente a 67): QUOTAUSER= Para: QUOTAUSER= usrquota usrquota 30
Template de usuário Configurar os parâmetros de quota para o usuário definido: edquota -u usrquota Todos os usuários criados após a configuração herdarão os limites definidos para usrquota. 31
Do man quotacheck non-xfs filesystems) 32
Quota XFS 33
Quota X quota no XFS Além de suportar quota por usuários e grupos (suportadas pelo EXT3/4), o XFS permite quota por projeto, ou seja, podemos definir quota para um diretório específico, independente do usuário ou grupo que venham depositar seus arquivos nesse diretório. 34
Instalação Instalação do pacote necessário: apt-get update apt-get install xfsprogs 35
/etc/fstab Modifique a linha onde está montada a partição que deseja ativar o quota adicionando os parâmetros usrquota e grpquota: /dev/hda7 /home xfs defaults 0 0 Para: /dev/hda7 /home xfs defaults,uquota,gquota 0 0 36
Quota ativa Apesar do sistema estar montado com suporte a quota (Accounting: ON), pode ser que esta não esteja ativa, o xfs permite que a quota seja ativa e desativada em tempo de execução do sistema, porém, no caso do Debian se desativá-la (Enforcement: OFF), para que esta se reative pode ser necessário reiniciar o sistema. 37
Quota ativa Se você estiver tentando ativar a quota em uma partição XFS já existente (que você não tenha formatado agora), você deverá reiniciar o sistema após ter alterado o fstab. 38
xfs_quota Para checarmos se a partição está com suporte a quota (Accounting: ON) e se esta está ativa no momento (Enforcement: ON/OFF) utilizamos o programa xfs_quota. 39
xfs_quota xfs_quota -x -c 'state' User quota state on /mnt/hda2 (/dev/hda2) Accounting: ON Enforcement: ON Inode: #131 (1 blocks, 1 extents) Group quota state on /mnt/hda2 (/dev/hda2) Accounting: ON Enforcement: ON Inode: #132 (1 blocks, 1 extents) 40
xfs_quota cont. Project quota state on /mnt/hda2 (/dev/hda2) Accounting: OFF Enforcement: OFF Inode: #132 (1 blocks, 1 extents) Blocks grace time: [7 days 00:00:30] Inodes grace time: [7 days 00:00:30] Realtime Blocks grace time: [7 days 00:00:30] 41
xfs_quota O programa xfs_quota é, uma aplicação de "prompt interativo". O uso do parâmetro "-c" fez com que a instrução "state" fosse executada nesse prompt automaticamente, sem essa opção seríamos remetidos a um prompt, se quiséssemos isso poderíamos ter executado apenas "xfs_quota -x" e cairíamos no prompt e lá digitaríamos "state" ou qualquer outro comando necessário. 42
xfs_quota O parâmetro "-x" indica que desejamos utilizar um prompt avançado (com mais comandos), se nós o omitíssemos, alguns comandos do prompt xfs_quota não estariam disponíveis. 43
Exemplos - I Para definirmos uma quota default utilizamos o seguinte: xfs_quota -x -c 'limit -d bsoft=10m bhard=15m' /mnt/hda2 onde: limit = parâmetro que indica que vamos especificar uma quota; -d = indica que esta é a quota default; 44
Exemplos - I bsoft = softquota, esta quota pode ser excedida por um período definido em "grace time", que por padrão é 7 dias; bhard = hardquota ou quota máxima, limite que jamais será excedido; /mnt/hda2 = ponto de montagem com suporte a quota. 45
Exemplos - II Para definirmos uma quota para usuário teste utilizamos o seguinte: xfs_quota -x -c 'limit -u bsoft=10m bhard=11m teste' /mnt/hda2 onde: limit = parâmetro que indica que vamos especificar uma quota; -u = indica que esta quota é para usuário; 46
Exemplos - II bsoft = softquota, esta quota pode ser excedida por um período definido em "grace time", que por padrão é 7 dias; bhard = hardquota ou quota máxima, limite que jamais será excedido; teste = usuário a que estamos aplicando a quota; /mnt/hda2 = ponto de montagem com suporte a quota. 47
Exemplo - III xfs_quota -x -c 'limit -g bsoft=100m bhard=110m suporte' /mnt/hda2 Onde: -g indica que esta quota é para grupo; suporte indica o nome do grupo. 48
Utilização da quota xfs_quota -x -c 'report' /mnt/hda2 User quota on /mnt/hda2 (/dev/hda2) User ID Used Soft Blocks Hard Warn/Grace ------------------------------------------------------------------------- root 0 0 0 00 [--------] Joao 0 10240 11264 00 [--------] 49
Utilização da quota - II Group quota on /mnt/hda2 (/dev/hda2) Blocks Group ID Used Soft Hard Warn/Grace ------------------------------------------------------------------------- root 0 0 0 00 [--------] Joao 0 10240 11264 00 [--------] 50
Importante Quotas definidas com 0 (zero), significam "sem" quota, ou sem limites. As colunas Warn/Grace, indicam alertas pela softquota excedida e o tempo para que o usuário baixe sua quota de utilização. 51
Desativando quota xfs_quota -x -c 'disable -u' /mnt/hda2 xfs_quota -x -c 'state -u' /mnt/hda2 Project quota state on /mnt/hda2 (/dev/hda2) Accounting: ON Enforcement: OFF Inode: #131 (1 blocks, 1 extents) Blocks grace time: [7 days 00:00:30] Inodes grace time: [7 days 00:00:30] Realtime Blocks grace time: [7 days 00:00:30] 52
Reativando a quota xfs_quota -x -c 'enable -u' /mnt/hda2 xfs_quota -x -c 'state -u' /mnt/hda2 Project quota state on /mnt/hda2 (/dev/hda2) Accounting: ON Enforcement: ON Inode: #131 (1 blocks, 1 extents) Blocks grace time: [7 days 00:00:30] Inodes grace time: [7 days 00:00:30] Realtime Blocks grace time: [7 days 00:00:30] 53
Quota por projeto (diretório) A quota por projeto ou diretório, independe do usuário. Não é possível utilizar quotas por usuário e grupo em uma partição ao mesmo tempo que se utiliza quota por projeto. 54
/etc/fstab Modifique a linha onde está montada a partição que deseja ativar o quota adicionando os parâmetros usrquota e grpquota: /dev/hda8 /proj xfs defaults 0 0 Para: /dev/hda8 /proj xfs defaults,prjquota 0 0 55
Criação de projeto A quota por projeto baseia-se na criação do projeto, independente dos diretórios a qual este estará associado, um projeto pode estar associado a um ou mais diretórios. 56
Criando um projeto echo "proj001:1000" >> /etc/projid O projeto é definido no arquivo /etc/projid, sempre um projeto em baixo do outro. Para se criar um projeto basta definir um nome qualquer como "proj001", e um ID para este, que também fica a nosso critério, lembrando-se apenas de não repetir nomes e ids. 57
Criando um projeto - II Na seqüência associamos esse projeto (através de seu ID) a um ou mais caminhos de diretórios (esses diretórios devem estar dentro do ponto de montagem com suporte a quota XFS - /proj). Essa associação deve ser feita em outro arquivo, o /etc/projects. 58
Criando um projeto - III Exemplo: Criando o diretório "arquivos" dentro de "/proj/", ficando "/proj/arquivos" echo "1000:/proj/arquivos" >> /etc/projects 59
Verificando a quota por projeto xfs_quota -x -c 'state -p' /proj Project quota state on /proj (/dev/hda8) Accounting: ON Enforcement: ON Inode: #131 (1 blocks, 1 extents) Blocks grace time: [7 days 00:00:30] Inodes grace time: [7 days 00:00:30] Realtime Blocks grace time: [7 days 00:00:30] 60
Ativando a quota do projeto Precisamos agora ativar a quota desse projeto específico, pois o comando anterior nos mostrou apenas que a partição está com suporte a quota e que a quota está ativa para a partição. Precisamos ainda ativar a quota para o projeto "proj001" especificamente. 61
Ativando a quota do projeto xfs_quota -x -c 'project -s proj001' /proj Setting up project myproject (path /proj/arquivos)... Processed 1 /etc/projects paths for project proj001 Onde: -s proj001 = nome do seu projeto; /proj = diretório com suporte a quota ao qual o projeto vai estar atuando. 62
Diretórios e projeto O retorno do comando anterior informou que o projeto "proj001" tem um diretório associado a ele "/proj/arquivos", e que para este foi ativado a quota. Pode-se associar vários diretórios a um projeto, e todos herdarão a quota de "proj001". 63
Definindo a quota para o projeto Para definir um limite de quota para o projeto utiliza-se: xfs_quota -x -c 'limit -p bsoft=50m bhard=55m proj001' /mnt/hda2 Onde: -p indica quota por projeto; proj001 nome do projeto ao qual estamos definindo a quota. 64
Projeto x usuários Todos os diretórios associados ao projeto terão a quota, independente do usuário que faça a gravação, esta quota se aplica até mesmo ao root. 65
Visualizando a quota dos projetos xfs_quota -x -c 'report' /proj Project quota on /proj (/dev/hda8) Project Blocks ID Used Soft Hard Warn/Grace ------------------------------------------------------------------------- proj001 0 51200 56320 00 [--------] 66
Arquivos de quota Ao contrário do EXT3, o XFS não guarda as informações de quota na raiz da partição (no caso do EXT3 existem os arquivos aquota.user e aquota.group na raiz das partições com suporte a quota), ele armazena estas informações juntamente o journal do filesystem. 67