15/11/2024

Commandes et SystèmeLinux

Comment ajouter de l’espace de swap sur Gnu/Linux Debian 10

I. Présentation

L’espace swap est une réservation d’espace disque utilisé lorsque le taux de mémoire physique est totalement occupé. Lorsqu’un système Linux fonctionne en dehors de son espace mémoire (appelé la RAM), les pages inactives sont alors déplacées depuis cet espace RAM vers l’espace de swap du système.

Cet espace de swap peut prendre la forme soit d’une partition de swap dédiée soit d'un fichier de swap.

REMARQUE : habituellement, lorsque l’on utilise une distribution Debian sur une machine virtuelle, aucune partition de swap n’est utilisée. On favorise plutôt l’utilisation d’un fichier de swap.

Je vous propose au travers de ce tutoriel de décrire la manière de procéder pour ajouter un espace de swap supplémentaire sur une distribution Debian 10 (aussi appelée Buster).

II. Au démarrage

Même si cela reste dans le domaine du possible, il est assez rare de disposer de multiples espaces de swap sur une même machine. Toutefois, afin de faire le point sur l’état des lieux et savoir si l’installation de votre système Debian possède déjà ou non un espace de swap actif, il suffit d’exécuter la commande suivante :

$ sudo swapon --show

Si le résultat de cette commande est vide, c’est que le système ne possède pas encore d’espace swap. Dans le cas contraire, si l’on récupère l’affichage suivant, alors vitre système Debian possède déjà son espace de swap actif :

ATTENTION : pour pouvoir activer le swap, l’utilisateur aux commandes doit disposer bien sûr des privilèges système de type sudo.

III. Création du fichier de swap

Pour l’exemple, nous allons créer un fichier de 10Gio de swap. Afin d’en créer un de plus grosse volumétrie, il suffit de remplacer la valeur 10G avec la taille de votre choix.

Nous commençons par créer le fichier devant servir d’espace de swap :

$ sudo falllocate -l 10G /swfile

REMARQUE : si la commande fallocate n’est pas installée sur le système ou que l’on reçoit un beau message d’erreur stipulant "fallocate failed : Operation not supported", on peut la remplacer par l’instruction suivante :

$ sudo dd if=/dev/zero of=/swfile bs=1024 count=10485760

Ensuite, il faut protéger ce fichier, car seul le super utilisateur root doit être en mesure de lire et d’écrire sur cet espace de swap. Il faut donc exécuter la commande ci-dessous :

$ sudo chmod 600 /swfile

Puis, on doit utiliser la commande mkswap afin d’initialiser la zone de swap sur ce même fichier :

$ sudo mkswap /swfile

Il ne reste plus alors qu’à activer ce fichier de swap en exécutant l’instruction suivante :

$ sudo swapon /swfile

Afin de rendre cet ajout définitif et permettre d’en disposer même après le prochain redémarrage, il faut éditer le fichier /etc/fstab afin d’y insérer la ligne suivante :

/swfile   swap     swap                 defaults  0 0

REMARQUE : pour s’assurer que notre nouvel espace de swap est bien actif on peut utiliser au choix l’une des commandes suivantes :

  • swapon
  • free
$ sudo swapon --show
$ sudo free -h

Au fait, si vous estimez que votre système utilise un peu trop souvent l’espace de swap, peut-être faut-il gérer cela en réduisant un peu la valeur du paramètre noyau appelé swapiness. Ce dernier définit la fréquence d’utilisation du swap. Sa valeur peut varier de 0 à 100. Une valeur basse signifie que le noyau linux essaye de rendre l’utilisation du swapping aussi légère que possible, alors qu’une valeur haute rend l’utilisation de l’espace de swap beaucoup plus agressive.

Si pour des postes de travail ou des stations, la valeur par défaut fixée à 60 convient parfaitement, pour des serveurs en production, il est préférable de fixer une valeur beaucoup plus basse (par exemple 15 ou 20). Pour se faire, il suffit d’éditer le fichier /proc/sys/vm/swappiness pour y fixer la valeur de son choix.

Bien sûr, cela peut également être modifié directement depuis le paramétrage du noyau linux :

$ sudo sysctl vm.swappiness=15

Afin de rendre ce paramétrage persistent même après le redémarrage du système, il faut ajouter la ligne ci-dessous au fichier /etc/sysctl.conf :

vm.swappiness=10

 

IV. Conclusion

Maintenant, vous êtes à même d’ajuster les performances de votre machine en réglant l’utilisation du swap et éventuellement en ajoutant un nouvel espace via un fichier de swap supplémentaire. Toutefois, si vous estimez que ce fichier n’est plus utile vous pourrez toujours le supprimer en exécutant la commande suivante :

$ sudo swapoff -v /swfile

Il vous faut également éditer le fichier /etc/fstab pour supprimer aussi la ligne précédemment ajoutée et terminée par la suppression du fichier lui-même :

$ sudo rm /swfile
author avatar
Philippe PIERRE
A exercé de nombreuses années en tant qu'administrateur de base de données et comme administrateur Système Unix/Linux. Il a enseigné les réseaux au CNAM (Paris). Aujourd'hui, employé en tant qu'ingénieur infrastructure, au sein d'un laboratoire pharmaceutique et administrant un cluster de calculs HPC, il connaît parfaitement les environnements GNU/Linux dans le cadre d'une entreprise et des systèmes de haute disponibilité. Il aime partager son expérience.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

2 commentaires sur “Comment ajouter de l’espace de swap sur Gnu/Linux Debian 10

  • Merci pour ce tuto. Je me suis trompé à la première commande avec l’instruction fallocate (avec 2 L et non 3) et son option -l qui est un L et non le chiffre 1 comme je l’ai d’abord cru.
    L’autre difficulté a été pour moi l’édition du fichier fstab en mode super utilisateur que j’ai d’abord ouvert avec l’explorateur et Geany, qui lui me refusait l’enregistrement. J’ai donc fait la recherche pour pouvoir éditer le fstab en mode super utilisateur et j’ai trouvé l’existence de Nano l’éditeur texte du terminal. La commande suivante a été utile : sudo nano /etc/fstab
    Et j’ai pu ajouter et enregistrer la ligne que vous indiquez. L’enregistrement s’effectuant avec les touches Control O et Entrée pour confirmer : https://debian-facile.org/doc:editeurs:nano
    Je laisse le réglage swappiness pour plus tard, n’étant pas certain de comprendre si le réglage par défaut sera un problème. Je suis sur LinuxCNC 2.8.0, soit Debian 10 Buster qui utilise un PREEMPT-RT patch, que je découvre aussi.

    Répondre
  • Merci pour ce super tuto.
    Il a été la solution pour plusieurs de mes serveurs VPS qui plantaient régulièrement par manque de mémoire.
    Comme l’hébergeur ne fourni par d’espace de swap sur ses VPS, j’installe désormais systématiquement un fichier /swfile en suivant ce tuto et je n’ai plus de problème.
    Je mets le réglage swapiness à 15 dans /etc/sysctl.conf et tout se passe bien, sur tous les serveurs.
    Merci encore pour cette solution. J’ai mis des mois à trouver la cause de mes plantages à répétition et soulager de trouver une solution efficace.

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.