Tutoriel Linux

Swap sous Linux : vérifier, vider ou agrandir sans créer un faux problème

Débutant6 min de lecture

La swap sous Linux fait souvent paniquer pour une mauvaise raison. Vous ouvrez free -h, vous voyez quelques centaines de mégaoctets utilisés, et vous avez l’impression que le serveur manque de mémoire. Pas forcément.

Dans cet article, on va vérifier la swap proprement, comprendre quand son utilisation est normale, la vider sans prendre de risque inutile, puis créer ou agrandir un swapfile si la machine en a vraiment besoin.

Je vous le dis tout de suite : vider la swap “pour nettoyer” est rarement utile. Commencez d’abord par lire les bons compteurs.

Illustration Linux avec Tux, mémoire vive et disque représentant la swap
La swap sert de filet de sécurité mémoire, mais elle doit être vérifiée avant d’être vidée ou agrandie.

Vérifier la swap active

Commencez par afficher la mémoire et la swap avec une sortie lisible :

free -h

La ligne Swap donne le total, l’espace utilisé et l’espace libre. Mais la colonne la plus intéressante reste souvent available sur la ligne Mem. C’est elle qui indique ce que le système peut encore utiliser sans entrer dans une situation tendue.

Pour savoir quelle zone de swap est active, utilisez :

swapon --show

Vous pouvez aussi lire directement le fichier exposé par le noyau :

cat /proc/swaps

Si vous voyez un chemin comme /swapfile, vous utilisez un fichier de swap. Si vous voyez une partition, par exemple /dev/sda3 ou un nom /dev/mapper/..., la swap repose sur un périphérique bloc.

Pour compléter le diagnostic, j’aime bien regarder la pression mémoire sur quelques secondes :

vmstat 1 5

Les colonnes si et so indiquent les entrées et sorties swap. Si elles restent à zéro ou presque, une swap déjà utilisée n’est pas forcément un problème actif.

Quand la swap utilisée n’est pas inquiétante

Linux peut garder en swap d’anciennes pages mémoire peu utilisées, même si la RAM disponible est revenue à un niveau correct. Ce n’est pas sale, ce n’est pas forcément lent, et ce n’est pas une raison suffisante pour redémarrer la machine.

Je m’inquiète surtout dans ces cas :

  • available descend très bas dans free -h ;
  • vmstat montre beaucoup de si ou so ;
  • le serveur devient lent au moment où la swap bouge ;
  • un service grossit en mémoire sans redescendre ;
  • les logs mentionnent l’OOM killer ou des erreurs mémoire.

Dans ce cas, ne commencez pas par vider la swap. Identifiez d’abord le processus qui consomme trop. L’article sur htop sous Linux peut vous aider à lire la charge et la mémoire sans tuer un service au hasard.

Vider la swap sans bloquer la machine

Vider la swap revient à désactiver temporairement une zone de swap. Le noyau doit alors rapatrier les pages en mémoire vive. Si la RAM disponible ne suffit pas, vous pouvez ralentir fortement la machine, voire provoquer des erreurs.

Avant de toucher à quoi que ce soit, vérifiez l’espace disponible :

free -h
swapon --show
vmstat 1 5

Si la swap utilisée est faible et que la RAM disponible est confortable, vous pouvez désactiver puis réactiver une zone précise. Sur un fichier /swapfile, cela donne :

sudo swapoff /swapfile
sudo swapon /swapfile

Évitez sudo swapoff -a sur un serveur distant ou chargé si vous ne savez pas exactement combien de swap est utilisée. Sur un VPS avec peu de RAM, c’est le genre de commande qui peut transformer un simple contrôle en incident.

Après l’opération, relisez les compteurs :

swapon --show
free -h

Si la swap se remplit à nouveau très vite, le problème n’était pas la swap. C’est probablement un manque de RAM, un service trop gourmand, une fuite mémoire ou une charge inhabituelle.

Créer un swapfile proprement

Sur beaucoup de machines modernes, un fichier de swap suffit. Avant de le créer, vérifiez l’espace disque disponible. Si votre disque est déjà sous pression, commencez plutôt par faire du ménage. Vous pouvez vous aider du guide sur les commandes utiles quand un disque Linux est plein.

Exemple pour créer un fichier de swap de 4 Go :

sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

Le chmod 600 est important. Un fichier de swap ne doit pas être lisible par tout le monde, puisqu’il peut contenir des données issues de la mémoire.

Vérifiez ensuite que le fichier est bien utilisé :

swapon --show
free -h

Pour rendre ce swapfile persistant après redémarrage, ajoutez une ligne dans /etc/fstab. Faites une sauvegarde avant :

sudo cp /etc/fstab /etc/fstab.bak-$(date +%F-%H%M)

Ajoutez ensuite cette ligne :

/swapfile none swap sw 0 0

Si vous n’êtes pas à l’aise avec /etc/fstab, lisez aussi le guide sur fstab sous Linux. Une mauvaise ligne dans ce fichier peut gêner le démarrage, donc on évite les modifications faites trop vite en production.

Agrandir la swap existante

Si votre swap est un fichier, le plus simple est souvent de le désactiver, le recréer à la bonne taille, puis le réactiver. Exemple pour passer à 8 Go :

sudo swapoff /swapfile
sudo rm /swapfile
sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

Ne faites pas ça pendant un pic de charge. Si la machine utilise déjà beaucoup de swap, planifiez une fenêtre plus calme ou ajoutez temporairement un second swapfile avant de retirer l’ancien.

Si votre swap est une partition, l’agrandissement passe par le partitionnement et le système de fichiers autour. Sur un serveur, je préfère éviter cette opération à chaud sauf si le contexte est parfaitement maîtrisé. Un swapfile séparé est souvent moins risqué.

Surveiller la swap après correction

Après une modification, ne vous contentez pas d’un seul free -h. Regardez si la situation reste stable :

watch -n 2 free -h

Vous pouvez aussi relire les alertes du démarrage courant :

journalctl -p warning..alert -b

Si vous suspectez un service précis, regardez ses logs plutôt que de conclure trop vite que Linux utilise trop de swap. Par exemple :

systemctl status nom-du-service --no-pager
journalctl -u nom-du-service -b

La swap est un filet de sécurité, pas une solution magique à un serveur sous-dimensionné. Si elle sert un peu et que la machine reste fluide, laissez-la tranquille. Si elle bouge beaucoup pendant que les services ralentissent, il faut chercher le processus responsable, réduire la charge ou ajouter de la RAM.

Les commandes swapon, swapoff, mkswap et free sont documentées dans les pages de manuel Linux. Pour vérifier un comportement précis selon votre distribution, vous pouvez consulter les pages swapon(8), mkswap(8) et free(1).

sudo apt update && sudo apt upgrade