Quotas sur une partition BTRFS

Fermé
Thibaut2121 Messages postés 10 Date d'inscription vendredi 23 mars 2018 Statut Membre Dernière intervention 22 avril 2018 - Modifié le 30 avril 2018 à 08:23
mamiemando Messages postés 33069 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 15 avril 2024 - 30 avril 2018 à 08:29
Bonjour à tous !

Je dois réaliser dans le cadre d'un projet, une partition en btrfs montée automatiquement au boot.

=> Chose réglée en modifiant le
/ect/fstab


Ensuite je dois créer des utilisateurs sur cette partition et mettre leur
/home/user_lambda
dessus

Réglé aussi ! Sauf que je dois certainement utiliser des sous-volumes pour chaque user vous allez comprendre plus bas pourquoi :-)

- Chaque utilisateur doit avoir un quotas en soft limite de 3GB qu'il peut dépasser pendant seulement 24 heures
- Chaque utilisateur doit avoir un quotas en hard limite de 10 GB qu'il n'est pas possible de depasser

Si je comprends bien, pour mettre des quotas sur un disque en btrfs, il faut passer par les sous-volumes, et c'est à ces sous-volumes que s'appliquent les quotas. Je dois donc faire un sous-volume pour chaque user.

J'ai réussi à définir la Hard limite de 10GB :
btrfs qgroup limit -e 9536,74m /chemin/vers/mon/sous/volume/user_lambda

J'ai testé avec un fichier créer grâce à la commande
dd ....
il me bloque bien car le quotas et dépassé

Ma question consiste à savoir comment je peux définir une limite soft de 3GB qui peut être dépassée pendant 24 heures avant de bloquer .... malgré des recherches sur le net aucune aide sur ce sujet

Merci par avance de votre aide ;)
A voir également:

1 réponse

mamiemando Messages postés 33069 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 15 avril 2024 7 747
Modifié le 30 avril 2018 à 08:43
Bonjour,

Merci de soigner l'orthographe.

La démarche semble correcte jusqu'ici.

Concernant ton problème je n'ai rien vu dans btrfs qui semble le supporter nativement (ni sur un autre filesystem). Avant d'aller plus loin, ça vaudrait le coup de demander confirmation à ton professeur, mais à mon avis ça n'existe pas car ça va à l'encontre de la notion de quota, qui garantit qu'un utilisateur ne peut pas utiliser plus d'espace qu'il ne lui en a été alloué.

La suite de mon message suppose que btrfs ne supporte pas cette fonctionnalité.

La solution la plus simple consiste à créer un sous volume de 10GB par utilisateur, puis de lancer toutes les x minutes (grâce à cron) un programme (écrit par tes soins) qui examine l'état de chaque sous volume. Si le quota de 3GB n'était pas dépassé jusqu'ici, on mémorise la date courante pour le volume en question. Si une date était déjà mémorisée, on regarde si elle dépasse 24h. Si c'est le cas, on fait ce qui doit être fait (ce qui n'est pas précisé par l'énoncé). Il y aura une incertitude de 5min sur la date à laquelle ce traitement est effectué.

L'autre solution, qui évite à scanner périodiquement tes sous-volumes, consisterait à coder un programme qui tourne en arrière plan (démon) et qui réagirait aux changement du système de fichiers. Tu peux par exemple utiliser inotify, ou une surcouche comme par exemple pyinotify. Il faudrait bien entendu lancer ce script au démarrage de la machine en root (par exemple en le lançant deuis /etc/rc.local, ou mieux, via un service dédié, comme illustré ici).

Bonne chance
0