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.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Créer un swap file sécurisé avec
mkswapetswapon - Choisir entre swap disque, partition et zram (compressé en RAM)
- Rendre le swap persistant dans
/etc/fstabpar UUID - Régler
vm.swappinesset dimensionner le swap
Prérequis
Section intitulée « Prérequis »- Un serveur Linux avec un compte
sudo - De l'espace libre sur un système de fichiers (pour un swap file)
- Savoir identifier un disque avec
lsblk
À quoi sert le swap
Section intitulée « À quoi sert 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 :
free -hswapon --show # vide si aucun swap actifCréer un swap file
Section intitulée « Créer un swap file »Le swap file est la méthode recommandée aujourd'hui : pas de repartitionnement, agrandissement ou suppression faciles. Fonctionne sur toutes les distributions.
-
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=nonesudo chmod 0600 /swapfileLe
chmod 0600est obligatoire : un swap file lisible par tous exposerait le contenu de la mémoire.mkswaprefuse d'ailleurs un fichier aux permissions trop ouvertes. -
Formater en espace de swap.
Fenêtre de terminal sudo mkswap /swapfileSetting up swapspace version 1, size = 512 MiB (536866816 bytes)no label, UUID=c1d4b2fe-5513-404b-9133-18b22e25fdae -
Activer le swap et vérifier.
Fenêtre de terminal sudo swapon /swapfileswapon --showNAME 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.
Utiliser une partition de swap
Section intitulée « Utiliser une partition de swap »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.
sudo mkswap /dev/sdb1sudo swapon --priority 10 /dev/sdb1swapon --showNAME TYPE SIZE USED PRIO/dev/sdb1 partition 256M 0B 10La 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.
Le swap compressé : zram et zswap
Section intitulée « Le swap compressé : zram et zswap »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écanisme | Principe | Besoin d'un disque ? |
|---|---|---|
| zram | un disque virtuel compressé en RAM (/dev/zram0) sert de swap | Non |
| zswap | un cache compressé en RAM placé devant un swap disque réel | Oui |
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 :
sudo modprobe zramZDEV=$(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).
Rendre le swap persistant
Section intitulée « Rendre le swap persistant »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).
sudo blkid -s UUID -o value /dev/sdb1UUID=e28f4374-0322-4875-922c-bfe3f274d461 none swap sw,pri=10 0 0Pour un swap file, indiquez son chemin :
/swapfile none swap sw 0 0Testez sans redémarrer avec swapon -a, qui active toutes les entrées swap de fstab :
sudo swapon -aswapon --showRégler la swappiness
Section intitulée « Régler la swappiness »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.
sysctl vm.swappiness# vm.swappiness = 60Sur 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/ :
echo "vm.swappiness = 10" | sudo tee /etc/sysctl.d/99-swappiness.confsudo sysctl -p /etc/sysctl.d/99-swappiness.conf# vm.swappiness = 10Dimensionner le swap
Section intitulée « Dimensionner le swap »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ée | Swap conseillé | Avec hibernation |
|---|---|---|
| ≤ 2 Go | 2 × RAM | 3 × RAM |
| 2 à 8 Go | = RAM | 2 × RAM |
| 8 à 64 Go | au moins 4 Go | 1,5 × RAM |
| > 64 Go | au moins 4 Go | dé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.
Sécurité et points de vigilance
Section intitulée « Sécurité et points de vigilance »- Permissions strictes : un swap file est toujours en
0600(rootseul), 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 :
kubeleta longtemps refusé de démarrer avec du swap actif (failSwapOn: true). Le support du swap (featureNodeSwap) est passé stable en Kubernetes v1.34 (2025), mais reste à activer explicitement et exige cgroup v2 ; le comportement par défaut estNoSwap. Avant d'ajouter du swap sur un nœud, vérifiez la politique du cluster.
Dépannage
Section intitulée « Dépannage »| Symptôme | Cause probable | Solution |
|---|---|---|
swapon: insecure permissions 0644 | Swap file trop ouvert | sudo chmod 0600 /swapfile puis mkswap |
swapfile has holes | Fichier créé avec fallocate/truncate | Recréer avec dd (ou mkswapfile sur Btrfs) |
| Swap absent après reboot | Entrée manquante dans /etc/fstab | Ajouter la ligne, tester swapon -a |
| Le système swappe trop, latence | vm.swappiness trop élevé, ou profil tuned | Baisser à 10, vérifier tuned-adm active |
| Boot bloqué après édition fstab | Ligne swap erronée | Mode rescue, corriger /etc/fstab |
À retenir
Section intitulée « À retenir »- 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 ;fallocaten'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/fstabpar UUID ; le zram, lui, passe parzram-generator. vm.swappinessva 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.