Le blog-notes de Mickaël

/var/log/mickaël

Mettre en place des quotas d'espace disque sous Debian

Rédigé par Mickaël Aucun commentaire
Classé dans : Système Mots clés : debian, quota, disque

Lorsque vous avez plusieurs utilisateurs / groupes sur votre système et que vous ne souhaitez pas que ceux-ci utilisent tout l'espace disque, vous pouvez mettre en place des quotas....

La mise en place de quotas va permettre d'attribuer à des utilisateurs / groupes une quantité d'espace disque.

Cette quantité pourra être définie avec 3 types de critères :

Limite soft :  indique la quantité maximale qu'un utilisateur / groupe peut utiliser sur un système de fichiers.

Dès que la limite est atteinte, des messages informant que le quota attribué a été dépassé sont envoyés.

Si après le délai défini par Grace Period, le quota est toujours en dépassement, alors l'utilisateur / groupe ne pourra plus écrire sur le système de fichiers (limite hard).

 - Limite hard : Indique la quantité qui ne pourra jamais être dépassée. 

Si l'utilisateur / groupe tente de dépasser cette limite, des messages d'avertissement seront envoyés et ceux-ci ne pourront plus écrire sur le système de fichiers.

Grace Period : Limite de temps avant que la limite soft ne devienne limite hard.

Les unités de temps pouvant être utilisées sont  "sec(onds),min(utes), hour(s), day(s), week(s), and month(s)"

Pour configurer les quotas, nous avons besoin des paquets quota et quotatool.

apt -y install quota quotatool
root@srvdebian:~# dpkg -l | grep quota | awk {'print $2" "$3'}
quota 4.04-2+b1
quotatool 1:1.6.2-5

Pour le tutoriel, j'ai crée les utilisateurs actarus et alcor avec la commande adduser

root@srvdebian:~# grep -E 'actarus|alcor' /etc/passwd
actarus:x:1001:1001:actarus,,,:/home/actarus:/bin/bash
alcor:x:1002:1002:alcor,,,:/home/alcor:/bin/bash
root@srvdebian:~# grep -E 'actarus|alcor' /etc/group
actarus:x:1001:
alcor:x:1002:
root@srvdebian:~# ls -l /home | grep 'actarus\|alcor'
drwxr-xr-x 2 actarus actarus  4096 nov.  13 22:53 actarus
drwxr-xr-x 2 alcor   alcor    4096 nov.  13 22:53 alcor

Je souhaite mettre mes quotas sur /home,

J'ajoute donc les options usrquota ( quotas utilisateurs ) et grpquota ( quotas groupes ) sur la ligne correspondant à ma partition /home dans le fichier /etc/fstab.

PS : un reboot du serveur devra être effectué après les modifications dans le fstab.

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda1 during installation
UUID=64e3aeaa-5bf3-4d59-a846-18ead4d898f5 /               ext4    errors=remount-ro 0   1
# /home was on /dev/sda6 during installation
UUID=909ca00d-d1e3-4161-ac20-9907b39490ef /home           ext4    defaults,usrquota,grpquota  0    2
# swap was on /dev/sda5 during installation
UUID=fd9d2287-0ae2-45ad-a357-1787b0b448dc none            swap    sw              0       0
/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0

Il faut ensuite Initialiser la base des quotas avec la commande quotacheck :

Manuel quotacheck

quotacheck -ugm /home

-u : vérifie uniquement les quotas utilisateurs listés dans /etc/mtab.

-g :  vérifie uniquement les quotas groupes listés dans /etc/mtab.

-m : ne pas essayer pas de remonter le système de fichiers en lecture seule.

On vérifie que les fichiers aquota.group et aquota.user ont bien été crées dans /home.

ls -l /home | grep aquota

On active les quotas avec la commande quotaon :

Manuel quotaon

quotaon -ugv /home 

-u : les quotas utilisateurs seront activés

-g : les quotas groupes seront activés

-v : mode verbeux, affiche l'état des quotas.

Enfin, on vérifie l'état des quotas avec la commande quotaon :

quotaon -pa

-p : affiche l'état des quotas

-a : indique que l'option usrquota et/ou grpquota sera activée si celle-ci est indiquée dans /etc/fstab.

PS : Le project quota est à off car il n'est supporté que par le système de fichier XFS.

root@srvdebian:~# quotacheck -ugm /home
root@srvdebian:~# ls -l /home | grep aquota
-rw------- 1 root    root     7168 nov.  13 23:22 aquota.group
-rw------- 1 root    root     7168 nov.  13 23:22 aquota.user
root@srvdebian:~# quotaon -ugv /home 
/dev/sda6 [/home] : quotas group activés
/dev/sda6 [/home] : quotas user activés
root@srvdebian:~# quotaon -pa
group quota on /home (/dev/sda6) is on
user quota on /home (/dev/sda6) is on
project quota on /home (/dev/sda6) is off

Pour attribuer un quota à un utilisateur, nous allons utiliser la commande quotatool.

Manuel quotatool

Je mets une limite soft de 500MB et une limite hard de 600MB à l'utilisateur actarus.

Je mets une limite soft de 1GB et une limite hard de 2GB à l'utilisateur alcor.

quotatool -u <nom_utilisateur>  -bq <quota< -l <quota>  /home

PS : Pour mettre un quota sur un groupe, il faudra utiliser la commande :

quotatool -g <nom_groupe>  -bq <quota< -l <quota>  /home

root@srvdebian:~# quotatool -u actarus -bq 500MB -l 600MB /home
root@srvdebian:~# quotatool -u alcor -bq 1G -l 2G /home

Je visualise le status des quotas avec la commande repquota.

Manuel repquota

repquota -avus

-a : affiche des informations sur tous les systèmes de fichiers disposant de quotas.

-v : mode verbeux, affiche des infos supplémentaires.

-u : affiche des informations sur les quotas utilisateurs.

-s : affiche au format human readable.

PS : pour visualiser les quotas des groupes, utilisez la commande :

repquota -avgs

Vous pourrez voir les différentes informations relatives aux quotas utilisateurs.

Block limits va se référer a des blocs de données (  la valeur par défaut est 1 bloc = 1k ).

File limits va se référer au nombre de fichiers, ou inodes utilisés.

Vous pouvez voir pour actarus les 500 Mo et 600 Mo qui ont été définis.

Vous pouvez voir pour alcor les 1 Go et 2 Go qui ont été définis.

root@srvdebian:~# repquota -avus
*** Rapport pour les quotas user sur le périphérique /dev/sda6
Période de sursis bloc : 7days ; période de sursis inode : 7days
                        Space limits                File limits
Utilisateur     utilisé souple stricte sursis utilisé souple stricte sursis
----------------------------------------------------------------------
root      --     20K      0K      0K              2     0     0       
mickael   --     16K      0K      0K              4     0     0       
actarus   --     16K    500M    600M              6     0     0       
alcor     --     16K   1024M   2048M              4     0     0       

Statistiques :
Total des blocs : 7
Blocs de données : 1
Entrées : 4
Moyenne d'utilisation : 4,000000

root@srvdebian:~# repquota -avgs
*** Rapport pour les quotas group sur le périphérique /dev/sda6
Période de sursis bloc : 7days ; période de sursis inode : 7days
                        Space limits                File limits
Groupe        utilisé souple stricte sursis utilisé souple stricte sursis
----------------------------------------------------------------------
root      --     20K      0K      0K              2     0     0       
mickael   --     16K      0K      0K              4     0     0       
actarus   --     16K      0K      0K              6     0     0       
alcor     --     16K      0K      0K              4     0     0       

Statistiques :
Total des blocs : 7
Blocs de données : 1
Entrées : 4
Moyenne d'utilisation : 4,000000

Si vous souhaitez modifier le délai de grâce pour tous les utilisateurs, utilisez la commande edquota :

Manuel edquota

edquota -t  

Mettez ensuite les secondes, minutes, heures ou jours que vous souhaitez.

Sursis avant l'application des limites souples pour users :
Unités de temps peuvent être : days (jours), hours (heures), minutes, ou seconds
  Système de fichiers  période de sursis bloc  période de sursis inode
  /dev/sda6                     7days                  7days

Pour modifier le délai de grâce pour tous les groupes, utilisez la commande edquota :

edquota -gt  

Sursis avant l'application des limites souples pour groups :
Unités de temps peuvent être : days (jours), hours (heures), minutes, ou seconds
  Système de fichiers  période de sursis bloc  période de sursis inode
  /dev/sda6                     7days                  7days

Avec l'utilisateur actarus, je vais créer des données dans mon répertoire personnel avec la commande dd .

Vous pouvez voir que l'avertissement sda6: warning, user block quota exceeded s'affiche.

Cet avertissement indique que la limite souple a été dépassée.

En visualisant le status des quotas, vous pouvez voir que le signe + est apparu indiquant que la limite souple a été dépassée et 7 days indique le nombre de jours que nous avons pour revenir en dessous de la limite souple.

actarus@srvdebian:~$ dd if=/dev/zero of=fichier1 bs=1M count=500
sda6: warning, user block quota exceeded.
500+0 enregistrements lus
500+0 enregistrements écrits
524288000 octets (524 MB, 500 MiB) copiés, 0,618201 s, 848 MB/s
actarus@srvdebian:~$ sudo repquota -auvs
 *** Rapport pour les quotas user sur le périphérique /dev/sda6
Période de sursis bloc : 7days ; période de sursis inode : 7days
                        Space limits                File limits
Utilisateur     utilisé souple stricte sursis utilisé souple stricte sursis
----------------------------------------------------------------------
root      --     20K      0K      0K              2     0     0       
mickael   --     16K      0K      0K              4     0     0       
actarus   +-    501M    500M    600M  7days       7     0     0       
alcor     --     16K   1024M   2048M              4     0     0       

Statistiques :
Total des blocs : 7
Blocs de données : 1
Entrées : 4
Moyenne d'utilisation : 4,000000

Je ne prends pas en compte l'avertissement, et je crée un nouveau fichier.

Vous pouvez voir que le message sda6: write failed, user block limit reached s'affiche.

Cet avertissement indique que la limite dure a été dépassée et qu'il n'est plus possible d'écrire pour actarus.

actarus@srvdebian:~$ dd if=/dev/zero of=fichier2 bs=1M count=500
sda6: write failed, user block limit reached.
dd: erreur d'écriture dans 'fichier2': Débordement du quota d'espace disque
100+0 enregistrements lus
99+0 enregistrements écrits
104837120 octets (105 MB, 100 MiB) copiés, 0,0976644 s, 1,1 GB/s
actarus@srvdebian:~$ sudo repquota -auvs
*** Rapport pour les quotas user sur le périphérique /dev/sda6
Période de sursis bloc : 7days ; période de sursis inode : 7days
                        Space limits                File limits
Utilisateur     utilisé souple stricte sursis utilisé souple stricte sursis
----------------------------------------------------------------------
root      --     20K      0K      0K              2     0     0       
mickael   --     16K      0K      0K              4     0     0       
actarus   +-    525M    500M    600M  7days       8     0     0       
alcor     --     16K   1024M   2048M              4     0     0       

Statistiques :
Total des blocs : 7
Blocs de données : 1
Entrées : 4
Moyenne d'utilisation : 4,000000

Avec mon utilisateur alcor, je vais crée un fichier le 05 novembre.

Vous pouvez voir que l'avertissement sda6: warning, user block quota exceeded s'affiche.

Cet avertissement indique que la limite souple a été dépassée.

En visualisant le status des quotas, vous pouvez voir que le signe + est apparu indiquant que la limite souple a été dépassée et 7 days indique le nombre de jours que nous avons pour revenir en dessous de la limite souple.

alcor@srvdebian:~$ date
mardi 5 novembre 2019, 12:14:44 (UTC+0100)
alcor@srvdebian:~$ dd if=/dev/zero of=fichier1 bs=1M count=1500
sda6: warning, user block quota exceeded.
1500+0 enregistrements lus
1500+0 enregistrements écrits
1572864000 octets (1,6 GB, 1,5 GiB) copiés, 1,97479 s, 796 MB/s
alcor@srvdebian:~$ sudo repquota -auvs
*** Rapport pour les quotas user sur le périphérique /dev/sda6
Période de sursis bloc : 7days ; période de sursis inode : 7days
                        Space limits                File limits
Utilisateur     utilisé souple stricte sursis utilisé souple stricte sursis
----------------------------------------------------------------------
root      --     20K      0K      0K              2     0     0       
mickael   --     16K      0K      0K              4     0     0       
actarus   --     20K    500M    600M              6     0     0       
alcor     +-   1501M   1024M   2048M  7days       6     0     0       

Statistiques :
Total des blocs : 7
Blocs de données : 1
Entrées : 4
Moyenne d'utilisation : 4,000000

Je laisse s'écouler le délai de grâce de 7 jours et le 14 novembre, je veux créer un nouveau fichier.

Vous pouvez voir que l'avertissement sda6: write failed, user block quota exceeded too long s'affiche.

Le total de l'espace occupé reste inférieur à la limite dure, mais je ne peux plus écrire.

alcor@srvdebian:~$ date
jeudi 14 novembre 2019, 21:25:41 (UTC+0100)
alcor@srvdebian:~$ dd if=/dev/zero of=fichier2 bs=1M count=1500
sda6: write failed, user block quota exceeded too long.
dd: erreur d'écriture dans 'fichier2': Débordement du quota d'espace disque
1+0 enregistrements lus
0+0 enregistrements écrits
0 octet copié, 0,0064084 s, 0,0 kB/s
alcor@srvdebian:~$ sudo repquota -auvs
*** Rapport pour les quotas user sur le périphérique /dev/sda6
Période de sursis bloc : 7days ; période de sursis inode : 7days
                        Space limits                File limits
Utilisateur     utilisé souple stricte sursis utilisé souple stricte sursis
----------------------------------------------------------------------
root      --     20K      0K      0K              2     0     0       
mickael   --     16K      0K      0K              4     0     0       
actarus   --     20K    500M    600M              6     0     0       
alcor     +-   1501M   1024M   2048M  aucun       7     0     0       

Statistiques :
Total des blocs : 7
Blocs de données : 1
Entrées : 4
Moyenne d'utilisation : 4,000000

 

Ceci n'est qu'une configuration simple et maintenant vous en savez un peu plus sur la mise en place des quotas...

N'hésitez pas à me faire part de vos remarques / commentaires.

Écrire un commentaire

Quelle est la deuxième lettre du mot bjqwf ?

Fil RSS des commentaires de cet article