Admin Linux - Gerenciamento de cotas

As cotas de disco CentOS podem ser habilitadas; alertando o administrador do sistema e negando mais acesso ao armazenamento em disco a um usuário antes que a capacidade do disco seja excedida. Quando um disco está cheio, dependendo do que reside no disco, um sistema inteiro pode parar bruscamente até ser recuperado.

Habilitar Quota Management no CentOS Linux é basicamente um processo de 4 etapas -

  • Step 1 - Habilite o gerenciamento de cotas para grupos e usuários em / etc / fstab.

  • Step 2 - Remonte o sistema de arquivos.

  • Step 3 - Criar banco de dados de cotas e gerar tabela de uso de disco.

  • Step 4 - Atribuir políticas de cota.

Habilite o gerenciamento de cotas em / etc / fstab

Primeiro, queremos fazer backup de nosso arquivo / etc / fstab -

[root@centosLocal centos]# cp -r /etc/fstab ./

Agora temos uma cópia de nosso / etc / fstab de trabalho conhecido no diretório de trabalho atual.

# 
# /etc/fstab 
# Created by anaconda on Sat Dec 17 02:44:51 2016 
# 
# Accessible filesystems, by reference, are maintained under '/dev/disk' 
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
# 
/dev/mapper/cl-root        /         xfs     defaults                      0 0
UUID = 4b9a40bc-9480-4     /boot     xfs     defaults                      0 0

/dev/mapper/cl-home        /home     xfs     defaults,usrquota,grpquota    0 0

/dev/mapper/cl-swap        swap      swap    defaults                      0 0

Fizemos as seguintes alterações na seção de opções de / etc / fstab para o volume ou rótulo onde as cotas devem ser aplicadas para usuários e grupos.

  • usrquota
  • grpquota

Como você pode ver, estamos usando o xfssistema de arquivo. Ao usar o xfs, há etapas manuais extras envolvidas./homeestá no mesmo disco que /. Uma investigação mais aprofundada mostra / está definido para noquota , que é uma opção de montagem no nível do kernel. Devemos reconfigurar nossas opções de inicialização do kernel.

root@localhost rdc]# mount | grep ' / ' 
/dev/mapper/cl-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

[root@localhost rdc]#

Reconfigurando opções de inicialização do kernel para sistemas de arquivos XFS

Esta etapa só é necessária sob duas condições -

  • Quando o disco / partição em que ativamos as cotas, está usando o sistema de arquivos xfs
  • Quando o kernel está passando o parâmetro noquota para / etc / fstab no momento da inicialização

Step 1 - Faça um backup de / etc / default / grub.

cp /etc/default/grub ~/

Step 2- Modifique / etc / default / grub .

Aqui está o arquivo padrão.

GRUB_TIMEOUT=5 
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" 
GRUB_DEFAULT=saved 
GRUB_DISABLE_SUBMENU=true 
GRUB_TERMINAL_OUTPUT="console" 
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet" 
GRUB_DISABLE_RECOVERY="true"

Queremos modificar a seguinte linha -

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet"

para

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv 
=cl/swap rhgb quiet rootflags=usrquota,grpquota"

Note- É importante copiarmos essas alterações literalmente. Depois de reconfigurar o grub.cfg, nosso sistema falhará ao inicializar se algum erro for cometido na configuração. Por favor, tente esta parte do tutorial em um sistema que não seja de produção.

Step 3 - Faça backup do seu grub.cfg de trabalho

cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak

Faça um novo grub.cfg

[root@localhost rdc]# grub2-mkconfig -o /boot/grub2/grub.cfg 
Generating grub configuration file ... 
Found linux image: /boot/vmlinuz-3.10.0-514.el7.x86_64 
Found initrd image: /boot/initramfs-3.10.0-514.el7.x86_64.img 
Found linux image: /boot/vmlinuz-0-rescue-dbba7fa47f73457b96628ba8f3959bfd 
Found initrd image: /boot/initramfs-0-rescuedbba7fa47f73457b96628ba8f3959bfd.img 
done

[root@localhost rdc]#

Reiniciar

[root@localhost rdc]#reboot

Se todas as modificações fossem precisas, não deveríamos ter disponibilidade para adicionar cotas ao sistema de arquivos xfs .

[rdc@localhost ~]$ mount | grep ' / ' 
/dev/mapper/cl-root on / type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota)
 
[rdc@localhost ~]$

Passamos os parâmetros usrquota e grpquota via grub.

Agora, edite novamente / etc / fstab para incluir / since / home no mesmo disco físico.

/dev/mapper/cl-root/xfs
defaults,usrquota,grpquota        0 0

Agora vamos habilitar os bancos de dados de cotas.

[root@localhost rdc]# quotacheck -acfvugM

Certifique-se de que as cotas estão ativadas.

[root@localhost rdc]# quotaon -ap 
group quota on / (/dev/mapper/cl-root) is on 
user quota on / (/dev/mapper/cl-root) is on 
group quota on /home (/dev/mapper/cl-home) is on 
user quota on /home (/dev/mapper/cl-home) is on 
[root@localhost rdc]#

Remonte o sistema de arquivos

Se a partição ou disco for separado da partição ativamente inicializada, podemos remontar sem reinicializar. Se a cota foi configurada em um disco / partição inicializado no diretório raiz /, pode ser necessário reiniciar o sistema operacional. Forçando a remontagem e a aplicação de alterações, a necessidade de remontar o sistema de arquivos pode variar.

[rdc@localhost ~]$ df 
Filesystem              1K-blocks     Used      Available      Use%     Mounted on
/dev/mapper/cl-root     22447404      4081860   18365544       19%         /
devtmpfs                903448        0         903448         0%          /dev
tmpfs                   919308        100       919208         1%          /dev/shm
tmpfs                   919308        9180      910128         1%          /run
tmpfs                   919308        0         919308         0%          /sys/fs/cgroup
/dev/sda2               1268736       176612    1092124        14%         /boot
/dev/mapper/cl-var      4872192       158024    4714168        4%          /var
/dev/mapper/cl-home     18475008      37284     18437724       1%          /home
tmpfs                   183864        8         183856         1%          /run/user/1000

[rdc@localhost ~]$

Como podemos ver, os volumes LVM estão em uso. Portanto, é simples apenas reiniciar. Isso remontará / home e carregará as alterações de configuração de / etc / fstab na configuração ativa.

Criar arquivos de banco de dados de cotas

O CentOS agora é capaz de trabalhar com cotas de disco em / home. Para habilitar o suporte de cota total, devemos executar oquotacheck comando.

quotacheck criará dois arquivos -

  • aquota.user
  • aquota.group

Eles são usados ​​para armazenar informações de cota para os discos / partições habilitados para cota.

A seguir estão as opções comuns de verificação.

Interruptor Açao
-você Verifica as cotas do usuário
-g Verifica as cotas do grupo
-c As cotas devem ser habilitadas para cada sistema de arquivos com cotas habilitadas
-v Exibe saída detalhada

Adicionar limites de cota por usuário

Para isso, usaremos o comando edquota, seguido do nome de usuário -

[root@localhost rdc]# edquota centos

Disk quotas for user centos (uid 1000):  
Filesystem                   blocks       soft       hard     inodes     soft     hard 
/dev/mapper/cl-root              12          0          0         13        0        0  
/dev/mapper/cl-home            4084          0          0        140        0        0

Vejamos cada coluna.

  • Filesystem - São as cotas do sistema de arquivos para o usuário aplicado

  • blocks - Quantos blocos o usuário está usando atualmente em cada sistema de arquivos

  • soft- Defina blocos para um limite suave. O limite flexível permite que o usuário carregue a cota por um determinado período de tempo

  • hard- Defina blocos para um limite rígido. O limite rígido é a cota total permitida

  • inodes - Quantos inodes o usuário está usando atualmente

  • soft - Limite de inode suave

  • hard - Limite de inode rígido

Para verificar nossa cota atual como usuário -

[centos@localhost ~]$ quota 
Disk quotas for user centos (uid 1000):  
Filesystem             blocks     quota      limit grace    files   quota   limit   grace 
/dev/mapper/cl-home    6052604    56123456   61234568       475     0       0       [centos@localhost ~]$

A seguir está um erro fornecido a um usuário quando o limite máximo da cota é excedido.

[centos@localhost Downloads]$ cp CentOS-7-x86_64-LiveKDE-1611.iso.part ../Desktop/

cp: cannot create regular file ‘../Desktop/CentOS-7-x86_64-LiveKDE-
1611.iso.part’: Disk quota exceeded

[centos@localhost Downloads]$

Como podemos ver, estamos próximos da cota de disco deste usuário. Vamos definir um aviso de limite suave. Dessa forma, o usuário será avisado com antecedência antes que os limites de cota expirem. Com a experiência, você receberá reclamações do usuário final quando ele entrar no trabalho e precisar gastar 45 minutos limpando arquivos para realmente começar a trabalhar.

Como um administrador, podemos verificar o uso da cota com o repquota comando.

[root@localhost Downloads]# repquota  /home  
                    Block limits                            File limits  
User            used     soft     hard     grace       used     soft     hard     grace 
----------------------------------------------------------------------------------------
root      --       0         0        0                   3        0        0        
centos    -+ 6189824  56123456 61234568                 541      520      540      6days 

[root@localhost Downloads]#

Como podemos ver, o usuário centos excedeu sua cota de hard block e não pode mais usar mais espaço em disco em / home .

- + indica que uma cota rígida foi excedida no sistema de arquivos.

Ao planejar cotas, é necessário fazer um pouco de matemática. O que um administrador precisa saber é: Quantos usuários estão no sistema? Quanto espaço livre para alocar entre usuários / grupos? Quantos bytes constituem um bloco no sistema de arquivos?

Defina cotas em termos de blocos relacionados ao espaço livre em disco. Recomenda-se deixar um buffer "seguro" de espaço livre no sistema de arquivos que permanecerá no pior cenário: todas as cotas são excedidas simultaneamente. Isso ocorre especialmente em uma partição usada pelo sistema para gravar logs.