Linux - quota par répertoire?

21

J'ai les scénarios suivants:

Partition unique montée en tant que /, avec beaucoup d'espace disque.

Il existe une gamme de répertoires (/ pg / tbs1, / pg / tbs2, / pg / tbs3 et ainsi de suite), et je voudrais limiter la taille totale de ces répertoires.

Une option consiste à créer de gros fichiers, puis à les mkfs, à les monter sur le bouclage, puis à définir un quota, mais cela rend l'expansion un peu problématique.

Existe-t-il un autre moyen de faire fonctionner le quota par répertoire?


la source
Le montage de fichiers via le bouclage ne présente pas vraiment de problème d'extension. Vous devez simplement étendre le fichier sous-jacent, puis l'utiliser resize2fspour agrandir le système de fichiers. Je pense que l'utilisation de LVM est une meilleure solution, mais celle que vous avez proposée n'a pas les limites que vous pensez.
larsks
aussi btrfs et zfs
hanshenrik

Réponses:

17

Si vous êtes obligé d'utiliser ext3, alors utiliser LVM est probablement votre meilleure solution. Créez un nouveau système de fichiers par projet. Cela ressemblerait à quelque chose comme ceci:

# Create a 10g filesystem for "project1" in volume group "vg0"
lvcreate -L 10g -n project1 vg0

# Create an ext3 filesystem.
mke2fs -j /dev/vg0/project1

# Mount it (obviously you would want this in /etc/fstab)
mount /dev/vg0/project1 /projects/project1

La croissance des systèmes de fichiers du projet est simple:

# Add 2GB to the volume.
lvextend -L +2g /dev/vg0/project1

# Grow the filesystem.
resize2fs /dev/vg0/project1
larsks
la source
6

Si vous ne comptez pas sur les autorisations de groupe, vous pouvez utiliser un groupe UNIX différent pour chaque "répertoire de quota", puis définir le bit sgid sur chaque répertoire (les fichiers et répertoires créés appartiendront donc au groupe du répertoire au lieu du groupe principal) de l'utilisateur créateur) et utiliser des quotas de groupe.

jpetazzo
la source
5

Oui. Regardez le système de fichiers XFS et le quota du projet. Les autres systèmes de fichiers n'offrent pas cette fonctionnalité.

ondra
la source
Malheureusement, je ne peux pas changer les fs sous-jacents. Mais il est bon de savoir que XFS a cette capacité.
5

En fait, je voulais le faire depuis un moment parce que je ne voulais pas avoir à faire des utilisateurs système pour tous mes utilisateurs de messagerie virtuelle. Les systèmes de fichiers ZFS avec quotas seraient formidables, et zfs-fuse progresse chaque jour, mais ce que je voulais, c'était une solution très légère. Enfin, j'ai décidé d'écrire un système de fichiers FUSE que je pourrais monter en tant que couche sur un autre système de fichiers (n'importe quel répertoire de base fonctionnera réellement). Il dispose d'un utilitaire de gestion de quotas facilement scriptable et, comme les valeurs de quota sont simplement stockées sous forme de xattrs dans des répertoires ou des fichiers, un point de montage peut prendre en charge un nombre arbitraire de quotas.

Je l'ai testé sur un serveur de messagerie depuis un moment et j'ai récemment décidé qu'il avait atteint l'adolescence et était prêt à sortir dans la nature. Si vous êtes curieux, vous pouvez le consulter sur http://code.google.com/p/fusequota/ . J'apprécierais grandement toute rétroaction.


la source
Le miroir Git n'a pas fonctionné pour moi. Pas d'erreurs, mais je peux dépasser le quota (sur ext4 avec les options de montage rw, relatime, data = commandé)
timdiels
3

Le nouveau système de fichiers pour chaque dossier partagé est à mon humble avis. Créez simplement un nouveau groupe pour chaque dossier partagé, définissez le groupe propriétaire du dossier partagé sur ce groupe, définissez un élément collant sur le groupe (afin que chaque nouveau fichier et répertoire ait ce groupe comme propriétaire) et pour les autorisations sur les fichiers et les dossiers, utilisez les listes acl. Ensuite, définissez des quotas pour ces groupes.

user207604
la source
1

Je ne connais aucune méthode pour définir des guillemets par répertoire.

Mais avec votre idée de créer des systèmes de fichiers avec une taille limitée. Cela pourrait être un endroit où lvm serait une bonne solution.

Vous pouvez sauvegarder / réinstaller et utiliser lvm , en allouant uniquement la quantité minimale d'espace nécessaire à vos volumes logiques. Il est très facile d'étendre des volumes logiques LVM .

Zoredache
la source