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.
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".
Agora rodaremos o comando novamente, trocando o parâmetro
Nosso comando final ficou assim:
Tudo certo com o banco de dados! Agora podemos definir os valores das cotas por usuário e por grupo.
/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:
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:
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:
Verificar o uso do disco:
*** 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
● 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:
Digite o comando a seguir para habilitar
Depois para testar novamente
Para deixar o serviço habilitado automaticamente deve-se editar o script de inicialização de cotas.
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 comandoquotacheck
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".
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
Postar um comentário