Resolvendo problema de quota em VM com Debian 9 (container) no Proxmox 5

Mostraremos nesse artigo como contornamos um problema que não permitia que o sistema de cotas funcionasse em máquina virtual do tipo container rodando Debian 9 no Proxmox 5. Nessa situação o sistema não controla o limite de espaço e não atualiza automaticamente o espaço utilizado atualmente.

Habilitando o sistema de cotas no Proxmox


Como estamos trabalhando com o sistema de cotas habilitada pelo Proxmox, não foi necessário configurar o arquivo /etc/fstab ou remontar a unidade.

Para habilitar o sistema de cotas, selecione o máquina virtual, vá em "Resources" > "Root Disk" > "Edit".


Depois marque a opção "Enable quota".



Instalação

apt update && apt install quota
service quota start

Criar banco de dados de cotas

Precisamos executar o comando quotacheck que constrói uma tabela de uso e limites do sistema de arquivos. Para criar a tabela, devemos executar o comando quotacheck com a opção -c e indicar se trabalharemos com usuários, grupos ou ambos. Então para habilitar as cotas para usuários somente, usamos o seguinte comando:

quotacheck -cu /

Agora rodaremos o comando novamente, trocando o parâmetro -c por -agv:
  • -a — Todas as partições montadas e habilitadas com quota
  • -u — limites para usuários
  • -g — limites para grupos
  • -v — mais informações

Nosso comando final ficou assim:

quotacheck -augv

Tudo certo com o banco de dados! Agora podemos definir os valores das cotas por usuário e por grupo.

Definindo cota por usuário e por grupo

Verificando se o sistema de cotas está habilitado:

cat /etc/mtab

/dev/mapper/pve-vm--113--disk--1 / ext4 rw,relatime,stripe=512,data=ordered,jqfmt=vfsv0,usrjquota=aquota.user,grpjquota=aquota.group 0 0

Para configurar uma cota de usuário para 1 GB:

edquota

Disk quotas for user romulo.figueiredo (uid 1015):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/mapper/pve-vm--113--disk--1   0          1G          1G       0        0        0

Para configurar uma cota de grupo para 3 GB:

edquota -g

Disk quotas for group pregoes (gid 1040):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/mapper/pve-vm--113--disk--1    0          3G          3G       0        0        0


Quando o usuário ou o grupo ultrapassam o "soft limit" é concedido um tempo de graça (grace time) por um período pré-definido. Depois do tempo de graça é aplicado o "soft limit" em definitivo. O "hard limit" não pode ser ultrapassado em momento algum. Quando os limites "soft" e "hard" são iguais, o tempo de graça é desconsiderado.

Se quiser mudar o grace time padrão de 7 dias, pode usar o comando:

edquota -t

Verificar o uso do disco:

repquota -guta
  • -g — cota de grupos
  • -u — cota de usuários
  • -t — corta o nome do grupo/usuário para facilitar a leitura na tela
  • -a — todos os dispositivos com cota

*** Report for group quotas on device /dev/mapper/pve-vm--113--disk--1
Block grace time: 7days; Inode grace time: 7days
Block limits                File limits
Group           used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
infra     --       0 5000000 5000000              0     0     0
almox     --       0 2000000 2000000              0     0     0
recepcao  --       0 2000000 2000000              0     0     0


Verificar se a cota está funcionando

Devido a alguma falha script de inicialização do sistema de cotas, o mesmo não é habilitado automaticamente.

/etc/init.d/quota status

● quota.service - Initial Check File System Quotas
Loaded: loaded (/lib/systemd/system/quota.service; enabled; vendor preset: enabled)
Active: active (exited) since Fri 2018-11-30 13:02:16 -02; 2 days ago
Docs: man:quotacheck(8)
Process: 45 ExecStart=/usr/share/quota/quota-initial-check.sh (code=exited, status=0/SUCCESS)
Main PID: 45 (code=exited, status=0/SUCCESS)
Tasks: 0 (limit: 7372)
CGroup: /system.slice/quota.service

Nov 30 13:02:16 fileserver systemd[1]: Starting Initial Check File System Quotas...
Nov 30 13:02:16 fileserver systemd[1]: Started Initial Check File System Quotas.
Nov 30 13:02:17 fileserver systemd[1]: quota.service: Failed to reset devices.list: Operation not permitted

Não consegui identificar a causa raiz do problema, mas podemos perceber que o sistema emite o aviso: "quota.service: Failed to reset devices.list: Operation not permitted".

O teste principal é feito executando o comando que realmente habilita o sistema de cotas com o parâmetro "-p", conforme a seguir:

quotaon -ugap
group quota on / (/dev/mapper/pve-vm--113--disk--1) is off
  • -u, --user — cotas de usuário (padrão)
  • -g, --group — cotas de grupo
  • -a, --all — todos os sistema montados não NFS registrados em /etc/fstab  com o sistema de cotas ativo.
  • -p, --print-state — não habilita o sistema de cotas, apenas verifica se está "on" ou "off".
Como o sistema retornou "off" podemos constatar que o sistema de cotas não foi habilitado automaticamente.

Digite o comando a seguir para habilitar

quotaon -uga

Depois para testar novamente

quotaon -ugap
group quota on / (/dev/mapper/pve-vm--113--disk--1) is on

Corrigindo o problema definitivamente


Para deixar o serviço habilitado automaticamente deve-se editar o script de inicialização de cotas.

# vi /etc/init.d/quota
...
  start)
    quotaon -uga
    #/usr/share/quota/quotaon.sh
    ;;
  stop)
    quataoff -uga
    #/usr/share/quota/quotaoff.sh
    ;;
...

Comentários

Postagens mais visitadas deste blog

Samba: Windows não reconhece a senha ao conectar no compartilhamento do Samba

O que rende mais: CDB 100% ou LCI 85%?