Comment mettre un quota sur le répertoire /tmp

Bonjour, je cherche une solution pour appliquer un quota sur /tmp (total et non par utilisateur) sans avoir a lui attribuer une partition.
Est ce que ca existe?

Salut
j’ai activé le montage de /tmp en temporaire dans la RAM. Gain de place sur le disque et rapidité d’exécution

systemctl enable tmp.mount

systemctl start tmp.mount

df -hT
Sys. de fichiers Type     Taille Utilisé Dispo Uti% Monté sur
udev             devtmpfs   1,8G       0  1,8G   0% /dev
tmpfs            tmpfs      370M     12M  359M   4% /run
/dev/sda1        ext4        19G     13G  5,3G  71% /
tmpfs            tmpfs      1,9G     22M  1,8G   2% /dev/shm
tmpfs            tmpfs      5,0M       0  5,0M   0% /run/lock
tmpfs            tmpfs      1,9G       0  1,9G   0% /sys/fs/cgroup
tmpfs            tmpfs      1,9G    8,0K  1,9G   1% /tmp
/dev/sda6        ext4       268G    198G   57G  78% /home
tmpfs            tmpfs      370M     20K  370M   1% /run/user/1001
 free -mh
              total        used        free      shared  buff/cache   available
Mem:          3,6Gi       1,6Gi       490Mi        30Mi       1,5Gi       1,7Gi
Swap:         7,5Gi       4,0Mi       7,5Gi

1 J'aime

Bonne idée, j’aurais du précisé que c’était pour une instance serveur. Ma quantité de RAM c’est la taille de la partition /tmp au dessus :smiley:

donc je peux pas trop le monter dans la RAM

A ma connaissance, les quota standard ne s’appliquent qu’aux utilisateurs et groupes. Je vois mal comment ils pourraient s’appliquer à des répertoires qui ne sont que des catalogues de fichiers. Un même fichier peut être lié à plusieurs répertoires, alors comment le compterait-on ?

Les sous-volumes et groupes de quotas de btrfs pourraient apporter une solution, à condition d’utiliser ce système de fichiers. Mais je connais mal.

Un système de fichiers peut être créé dans autre chose qu’une partition : en mémoire (tmpfs), dans un simple fichier (monté en loop), un volume logique LVM s’il y a un groupe de volume avec de l’espace libre…

Quelle partition /tmp ? Je croyais qu’il n’y en avait pas.

Le contenu d’un tmpfs peut être swappé, contrairement à celui d’un ramdisk. Donc si le système a suffisamment de swap, tu peux créer un tmpfs de la taille de la RAM voire plus.

autant pour moi je voulais dire "répertoire"
résultat d’un df -hT

tmpfs              201M     34M  167M  17% /run
/dev/vda            46G    4,2G   40G  10% /
tmpfs             1001M       0 1001M   0% /dev/shm
tmpfs              5,0M       0  5,0M   0% /run/lock
tmpfs             1001M       0 1001M   0% /sys/fs/cgroup
tmpfs              201M       0  201M   0% /run/user/1000

Je crois que j’ai une idée. Comment faire pour forcer le vidage de tmp?
Sinon je fais un petit cron qui vérifie la taille du dossier et le vide si besoin?

Il s’agit donc d’une sorte de machine virtuelle ou de conteneur type LXC.

Normalement /tmp est vidé automatiquement au démarrage du système.

Mauvaise idée, à mon avis.

D’une part, si on doit s’attendre à ce que le contenu de /tmp ne soit pas préservé après un reboot (par “on” je désigne le système, les services, les applications et ceux qui les développent), cela ne veut pas dire qu’il peut être effacé à n’importe quel moment.

D’autre part, les fichiers ouverts en cours d’utilisation ne seront pas réellement effacés ; ils ne seront plus visible dans /tmp, mais continueront à occuper de l’espace disque tant qu’ils ne seront pas fermés.

Si on commençait par le début : pourquoi veux-tu limiter l’espace disque occupé par /tmp (si j’ai bien compris ce que tu veux) ?

c’est une instance scaleway, les serveur sont séparés des baies des disques dur. Il me semble qu’ils utilisent docker, mais comme je connais mal docker j’ai pas cherché plus loin.

La problématique c’est que souvent sur les instances cloud on a pas la possibilité d’installer la distro de base, les images des distributions linux sont souvent rebidouillées. Et donc on a pas la possibilité de reformater et/ou repartitionner le tout.

sachant qu’il est préférable de partitionner un minimum sur les serveurs, pour éviter par exemple qu’un user surcharge le serveur en fichier temporaire et ne me freeze le tout, je me demandais si je ne pouvais pas contourner le partitionnement par un autre moyen.

Bon après s’il y en a pas c’est pas si grave, je retiendrais que les instances c’est pas forcément ce qu’il y a de mieux.

il existe l’utilitaire tmpreaper qui permets de supprimer les fichiers antérieur a une certaine date, 7 jours par exemple

 cat /etc/tmpreaper.conf
# tmpreaper.conf
# - local configuration for tmpreaper's daily run
#
# This is only used if /etc/cron.daily/tmpreaper was also updated,
# i.e. there's a line ". /etc/tmpreaper.conf" in that file.
# The shell code that used to be here (pre version 1.6.7) is now
# in the cron.daily script.

# Remove the next line if you understand the possible security implications of
# having tmpreaper run automatically;
# see /usr/share/doc/tmpreaper/README.security.gz

SHOWWARNING=false

# TMPREAPER_TIME
#       is the max. age of files before they're removed.
#       default:
#       the TMPTIME value in /etc/default/rcS if it's there, else
#       TMPREAPER_TIME=7d (for 7 days)
#       I recommend setting the value in /etc/default/rcS, as
#       that is used to clean out /tmp whenever the system is booted.
#
# TMPREAPER_PROTECT_EXTRA
#       are extra patterns that you may want to protect.
#       Example:
#       TMPREAPER_PROTECT_EXTRA='/tmp/isdnctrl* /tmp/important*'
#
# TMPREAPER_DIRS
#       are the directories to clean up.
#       *never* supply / here! That will wipe most of your system!
#       Example:
#       TMPREAPER_DIRS='/tmp/. /var/tmp/.'
#
# TMPREAPER_DELAY
#       defines the maximum (randomized) delay before starting processing.
#       See the manpage entry for --delay. Default is 256.
#       Example:
#       TMPREAPER_DELAY='256'
#
# TMPREAPER_ADDITIONALOPTIONS
#       extra options that are passed to tmpreaper, e.g. --all

# uncomment and change the next line to overrule the /etc/default/rcS value
TMPREAPER_TIME=7d

TMPREAPER_PROTECT_EXTRA=''
TMPREAPER_DIRS='/var/tmp/. /home/guy/.cache/.'
TMPREAPER_DELAY='256'
TMPREAPER_ADDITIONALOPTIONS=''

je m’en sers aussi pour nettoyer le cache, c’est lancé par la crontab /etc/cron.daily/tmpreaper

1 J'aime