Aller au contenu
Administration Linux medium

Gérer le swap sous Linux : fichier, partition, zram et swappiness

11 min de lecture

Le swap est un espace que Linux utilise comme extension de la mémoire vive : quand la RAM se remplit, les pages les moins utilisées y sont déplacées. Ce guide montre comment ajouter du swap par un fichier, une partition ou du zram compressé, le rendre persistant au démarrage, et régler la swappiness. Pour administrateurs débutants à intermédiaires, sur Debian, Ubuntu ou RHEL. Toutes les commandes ont été testées sur une VM AlmaLinux 10.

  • Créer un swap file sécurisé avec mkswap et swapon
  • Choisir entre swap disque, partition et zram (compressé en RAM)
  • Rendre le swap persistant dans /etc/fstab par UUID
  • Régler vm.swappiness et dimensionner le swap

Le swap (mémoire d'échange) sert de soupape : lorsque la RAM est saturée, le noyau y déplace les pages mémoire inactives pour libérer de la place. Sans swap, un pic mémoire déclenche le OOM killer (Out Of Memory), qui tue brutalement un processus.

Le swap n'est pas une rustine contre un manque de RAM : un système qui swappe en permanence est lent (le disque est mille fois plus lent que la RAM). Il joue deux rôles : absorber les pics ponctuels et permettre l'hibernation (qui écrit toute la RAM dans le swap).

Vérifiez l'état actuel avec free -h et swapon --show :

Fenêtre de terminal
free -h
swapon --show # vide si aucun swap actif

Le swap file est la méthode recommandée aujourd'hui : pas de repartitionnement, agrandissement ou suppression faciles. Fonctionne sur toutes les distributions.

  1. Créer le fichier (ici 512 Mo) et le sécuriser immédiatement.

    Fenêtre de terminal
    sudo dd if=/dev/zero of=/swapfile bs=1M count=512 status=none
    sudo chmod 0600 /swapfile

    Le chmod 0600 est obligatoire : un swap file lisible par tous exposerait le contenu de la mémoire. mkswap refuse d'ailleurs un fichier aux permissions trop ouvertes.

  2. Formater en espace de swap.

    Fenêtre de terminal
    sudo mkswap /swapfile
    Setting up swapspace version 1, size = 512 MiB (536866816 bytes)
    no label, UUID=c1d4b2fe-5513-404b-9133-18b22e25fdae
  3. Activer le swap et vérifier.

    Fenêtre de terminal
    sudo swapon /swapfile
    swapon --show
    NAME TYPE SIZE USED PRIO
    /swapfile file 512M 0B -2

La ligne swapon --show confirme que le swap file de 512 Mo est actif. Pour le désactiver : sudo swapoff /swapfile.

Une partition de swap dédiée reste courante, notamment pour l'hibernation. La logique est identique : mkswap puis swapon. Vous pouvez attribuer une priorité quand plusieurs zones de swap coexistent.

Fenêtre de terminal
sudo mkswap /dev/sdb1
sudo swapon --priority 10 /dev/sdb1
swapon --show
NAME TYPE SIZE USED PRIO
/dev/sdb1 partition 256M 0B 10

La colonne PRIO indique la priorité : le noyau remplit d'abord les swaps de priorité la plus élevée (0 à 32767). À priorité égale, il les utilise en parallèle (striping façon RAID 0), utile pour répartir sur plusieurs disques.

Plutôt que d'écrire sur un disque lent, Linux sait compresser les pages en mémoire. Deux mécanismes coexistent, à ne pas confondre.

MécanismePrincipeBesoin d'un disque ?
zramun disque virtuel compressé en RAM (/dev/zram0) sert de swapNon
zswapun cache compressé en RAM placé devant un swap disque réelOui

zram convient aux machines à peu de RAM ou sans disque dédié : il échange en RAM, sans aucune I/O disque. Fedora l'active par défaut ; sur Debian, Ubuntu et RHEL il faut l'installer (paquet zram-generator, configuré via /etc/systemd/zram-generator.conf). Voici la création manuelle, testée sur AlmaLinux :

Fenêtre de terminal
sudo modprobe zram
ZDEV=$(sudo zramctl --find --size 256M --algorithm zstd)
sudo mkswap "$ZDEV"
sudo swapon --priority 100 "$ZDEV"
zramctl "$ZDEV"
NAME ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 zstd 256M 4K 58B 20K 2 [SWAP]

La colonne COMPR montre les données réellement stockées après compression : zstd offre le meilleur ratio. zswap, lui, n'est utile que si vous avez déjà un swap disque : il l'accélère en gardant les pages chaudes compressées en RAM (echo 1 | sudo tee /sys/module/zswap/parameters/enabled).

Un swap activé avec swapon disparaît au redémarrage. Pour qu'il revienne, ajoutez-le à /etc/fstab, par UUID plutôt que par nom de périphérique (qui peut changer).

Fenêtre de terminal
sudo blkid -s UUID -o value /dev/sdb1
/etc/fstab
UUID=e28f4374-0322-4875-922c-bfe3f274d461 none swap sw,pri=10 0 0

Pour un swap file, indiquez son chemin :

/etc/fstab
/swapfile none swap sw 0 0

Testez sans redémarrer avec swapon -a, qui active toutes les entrées swap de fstab :

Fenêtre de terminal
sudo swapon -a
swapon --show

Le paramètre vm.swappiness contrôle l'agressivité du swap. Contrairement à une idée répandue, sa plage va de 0 à 200 (le maximum a été relevé de 100 à 200 dans le noyau 5.8). La valeur par défaut est 60.

Fenêtre de terminal
sysctl vm.swappiness
# vm.swappiness = 60

Sur un serveur avec assez de RAM, une valeur basse (10) garde les données en mémoire et n'utilise le swap qu'en dernier recours. À l'inverse, avec du zram ou un NVMe, swapper coûte peu : une valeur supérieure à 100 devient pertinente. Rendez le réglage durable dans /etc/sysctl.d/ :

Fenêtre de terminal
echo "vm.swappiness = 10" | sudo tee /etc/sysctl.d/99-swappiness.conf
sudo sysctl -p /etc/sysctl.d/99-swappiness.conf
# vm.swappiness = 10

Combien de swap prévoir ? Cela dépend de la RAM et du besoin d'hibernation. Voici la recommandation Red Hat (RHEL 8/9/10), référence pour le RHCSA :

RAM installéeSwap conseilléAvec hibernation
≤ 2 Go2 × RAM3 × RAM
2 à 8 Go= RAM2 × RAM
8 à 64 Goau moins 4 Go1,5 × RAM
> 64 Goau moins 4 Godéconseillée

La vieille règle « 2 × la RAM » ne vaut plus que pour les très petites configurations. Sur un serveur moderne bien doté, 4 à 8 Go suffisent : le swap absorbe les pics, il ne remplace pas la RAM.

  • Permissions strictes : un swap file est toujours en 0600 (root seul), car il contient des pages mémoire potentiellement sensibles.
  • Chiffrement : le swap peut écrire en clair des secrets (clés, mots de passe). Sur un système sensible, chiffrez-le, soit sur un volume LUKS, soit à clé éphémère via /etc/crypttab (régénérée à chaque boot). La clé éphémère est incompatible avec l'hibernation ; voir le guide Chiffrer un disque avec LUKS.
  • Conteneurs et Kubernetes : kubelet a longtemps refusé de démarrer avec du swap actif (failSwapOn: true). Le support du swap (feature NodeSwap) est passé stable en Kubernetes v1.34 (2025), mais reste à activer explicitement et exige cgroup v2 ; le comportement par défaut est NoSwap. Avant d'ajouter du swap sur un nœud, vérifiez la politique du cluster.
SymptômeCause probableSolution
swapon: insecure permissions 0644Swap file trop ouvertsudo chmod 0600 /swapfile puis mkswap
swapfile has holesFichier créé avec fallocate/truncateRecréer avec dd (ou mkswapfile sur Btrfs)
Swap absent après rebootEntrée manquante dans /etc/fstabAjouter la ligne, tester swapon -a
Le système swappe trop, latencevm.swappiness trop élevé, ou profil tunedBaisser à 10, vérifier tuned-adm active
Boot bloqué après édition fstabLigne swap erronéeMode rescue, corriger /etc/fstab
  • Le swap absorbe les pics mémoire et permet l'hibernation ; il ne compense pas un manque de RAM.
  • Le swap file (dd + chmod 0600 + mkswap + swapon) est la méthode la plus souple ; fallocate n'est pas fiable sur ext4.
  • Le zram échange en RAM compressée, sans disque ; zswap accélère un swap disque existant.
  • Rendez le swap persistant dans /etc/fstab par UUID ; le zram, lui, passe par zram-generator.
  • vm.swappiness va de 0 à 200 (60 par défaut) ; 10 sur un serveur, au-delà de 100 avec du zram. Attention au profil tuned sur RHEL.
  • Un swap file est toujours en 0600 ; sur les nœuds Kubernetes, le swap (NodeSwap, stable en v1.34) reste à activer explicitement.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn