Augmenter l’espace d’échange (SWAP) avec un fichier sous Linux

I. Présentation

Sous Linux, certaines applications peuvent être très gourmandes en mémoire et le système a alors besoin de la SWAP pour gérer cet excès de besoin en mémoire. Pour rappel, la SWAP est un espace disque qui est utilisé comme mémoire virtuelle pour le système. Elle était trés utilisée dans le passé pour décharger la mémoire vive (RAM) alors coûteuse et présente en petite quantité sur les ordinateurs. Sous la plupart des systèmes Linux basés sur Debian, la SWAP est représentée sous forme de partition (Linux la crée par défaut et averti l'utilisateur quand il n'y a pas de partition SWAP à l'installation d'un système Debian).

Plus clairement, lorsque la RAM est pleine ou à partir d'un certain seuil d'utilisation de celle-ci, le système utilise la SWAP (une partie du disque dur) comme RAM. Le problème étant que la rapidité de lecture/écriture d'un disque est souvent bien inférieur à celle de la RAM et cela peut à terme ralentir tout le système car le disque dur sera beaucoup plus sollicité.

Dans ce tutoriel, nous allons apprendre à augmenter l'espace d'échange (SWAP) d'un système Linux au travers un fichier.

II. Vérifier l'existant

Nous allons commencer par vérifier la SWAP déjà existante dans notre système, la commande présente nativement sous Debian est "swapon", nous allons utiliser l'option "-s" ("show") pour avoir un affichage de nos partitions ou fichiers SWAP :

swapon -s

Voila ce qu'il y a sur mon système, ce sera différent pour chaque système, tout dépend de ce qui a été fait lors de l'installation :

AddSwap01

On voit ici la partition SWAP créée lors de l'installation du système, sa taille (environ 180Mo), combien de Mo sont utilisés actuellement et le niveau de priorité qui sert à déterminer quel espace est à utiliser en premier. (le plus haut est le plus prioritaire). Nous pouvons également voir cela avec la commande "htop" ou "top" . Utilisez "apt-get install htop" si besoin, ce n'est pas une commande native à Debian :

AddSwap02

On voit ici plus clairement la SWAP disponible (175Mo) et utilisée (0Mo).

III. Création du fichier swap

Nous allons maintenant créer un fichier SWAP qui servira donc à augmenter la capacité de la SWAP présente sur le système afin de mieux décharger la RAM d'éventuelles surcharges d'utilisation. Nous allons par exemple partir sur une extension de 1024Mo de SWAP :

cd /mnt/
dd if=/dev/zerpo of=1G.swap bs=1k count=1024000

AddSwap03

Nous pourrons vérifier que le fichier fait bien 1Go avec la commande "du" :

du -sh *

AddSwap04

On doit ensuite rendre le fichier lisible uniquement par le système :

chmod 600 /mnt/1G.swap

On fait ensuite de ce fichier un fichier SWAP :

mkswap 1G.swap -f

AddSwap05

La commande "mkswap" permet de paramétrer un espace SWAP sous Linux. Il nous faut pour finir activer l'utilisation de ce nouveau fichier SWAP avec la commande suivante :

swapon /mnt/1G.swap

Nous pourrons alors effectuer une seconde vérification avec la commande "swapon -s" :

AddSwap06

Nous voyons donc bien ici que notre fichier sera utilisé en seconde priorité (si la partition SWAP d'origine est elle aussi pleine), qu'il fait près de 1Giga et que c'est un fichier (type "file"). Nous aurons un résultat plus parlant avec la commande "htop" également :

AddSwap07

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Mickael Dorigny

Co-fondateur d'IT-Connect.fr. Auditeur/Pentester chez Orange Cyberdéfense.

Nombre de posts de cet auteur : 526.Voir tous les posts

5 thoughts on “Augmenter l’espace d’échange (SWAP) avec un fichier sous Linux

  • Bonjour,

    article très intéressant,

    => penser à changer /dev/zerpo en /dev/zero dans le code

    Cdlt,
    Poulpoul

    Répondre
  • Bonjour.
    Merci pour cet article.
    Cependant lors d’un redémarrage, le swap reviens à sa valeur initiale (100Mo pour ma part).
    Il y a une procédure à effectuer pour éviter de retaper les lignes de ce tuto à chaque reboot ?
    Merci :).

    Répondre
    • Bonjour,
      je confirme c’est idem pour moi, après un reboot il oublie ces commandes d’augmentation de la mémoire SWAP :/, je pense qu’il doit y avoir une possibilité de le rendre permanent. Si vous l’avez je suis preneur s’il vous plaît.
      Merci à vous,

      Répondre
  • Pour le rendre permanent, il faut ajouter une ligne dans /etc/fstab :

    /mnt/1G.swap none swap sw 0 0 pour le cas de cet exemple.

    Répondre
  • j ‘ai voulu etre trop gourmand ; mon swap de 4 g est trop gros . comment je fais pour le réduire?
    merci

    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.