Créer et activer un fichier swap sous Linux

LinuxBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez à effectuer une tâche d’administration essentielle : créer et activer un fichier swap sous Linux. Ce processus permet d’augmenter la mémoire virtuelle du système, ce qui est essentiel lorsque la mémoire RAM physique est insuffisante. Vous manipulerez des utilitaires fondamentaux en ligne de commande pour gérer efficacement les ressources système, avec une solution flexible qui évite de créer une partition swap dédiée.

Vous suivrez l’ensemble du processus, en commençant par examiner l’espace swap actuel avec la commande swapon. Vous créerez ensuite un fichier destiné à l’espace swap avec dd, le formaterez pour l’utiliser comme swap avec mkswap, l’activerez, puis configurerez Linux pour le réactiver après un redémarrage. Pour terminer, vous vérifierez que le nouveau fichier swap est correctement configuré et reconnu par le système.

Examiner l’espace swap actuel avec swapon

Dans cette étape, vous apprendrez à vérifier la configuration actuelle de l’espace swap sur votre système Linux. L’espace swap est une partie du disque dur utilisée comme mémoire virtuelle lorsque la mémoire physique (RAM) est pleine. Il permet au système d’exécuter davantage d’applications que la seule RAM physique ne pourrait en contenir.

Pour commencer, vous utiliserez la commande swapon, un utilitaire qui permet de définir les périphériques et les fichiers utilisés pour la pagination et le swap. Nous l’utiliserons avec l’option --show pour afficher un résumé des espaces swap actifs. Comme la gestion de l’espace swap est une tâche d’administration, vous devez utiliser sudo afin d’exécuter la commande avec les privilèges root.

Dans votre terminal, déjà positionné dans le répertoire ~/project, exécutez la commande suivante :

sudo swapon --show

Vous obtiendrez un résultat similaire à celui-ci. Les informations, comme NAME et SIZE, peuvent varier selon la configuration initiale de votre machine virtuelle. Il est également possible qu’aucun espace swap ne soit configuré ; dans ce cas, la commande n’affichera rien.

NAME        TYPE      SIZE USED PRIO
/dev/loop12 partition   2G   0B   -2

Voici la signification des colonnes :

  • NAME : nom du périphérique ou du fichier swap. Dans cet exemple, il s’agit d’un périphérique loop (/dev/loop12).
  • TYPE : type d’espace swap, qui peut être une partition ou un file.
  • SIZE : taille totale de l’espace swap.
  • USED : quantité d’espace swap actuellement utilisée.
  • PRIO : priorité de l’espace swap. Si plusieurs espaces swap sont disponibles, celui qui a la priorité la plus élevée sera utilisé en premier.

En exécutant cette commande, vous avez examiné avec succès la configuration swap actuelle du système. Dans les étapes suivantes, vous apprendrez à créer et à activer un nouveau fichier swap. Cette méthode permet d’ajouter de l’espace swap sans repartitionner le disque.

Créer un fichier swap avec dd

Dans cette étape, vous allez créer un fichier dédié qui servira de nouvel espace swap. Utiliser un fichier swap est une méthode flexible, car elle ne nécessite pas de repartitionner le disque dur.

Nous utiliserons la commande dd, un utilitaire puissant de copie et de conversion de données. Elle convient particulièrement à cette tâche, car elle peut créer un fichier d’une taille précise en lisant les données d’un périphérique système spécial appelé /dev/zero, qui fournit un flux continu de caractères nuls (zéros).

Pour créer un fichier de 250 Mo nommé swapfile dans le répertoire actuel (~/project), exécutez la commande suivante. Vous devez utiliser sudo, car le fichier sera ensuite géré par le système.

sudo dd if=/dev/zero of=swapfile bs=1M count=250

Voici le rôle de chaque élément de la commande :

  • sudo : exécute la commande avec les privilèges root.
  • dd : utilitaire en ligne de commande utilisé ici.
  • if=/dev/zero : indique le fichier d’entrée (input file). /dev/zero est un fichier spécial qui produit un flux de caractères nuls.
  • of=swapfile : indique le fichier de sortie (output file). Cela crée un fichier nommé swapfile dans le répertoire actuel.
  • bs=1M : définit la taille des blocs (block size) à 1 mégaoctet. dd lit et écrit les données par blocs de 1 Mo.
  • count=250 : copie 250 blocs. Comme la taille d’un bloc est de 1 Mo, le fichier obtenu fait 250 * 1M = 250 Mo.

Après l’exécution de la commande, un résultat confirme la réussite de l’opération :

250+0 records in
250+0 records out
262144000 bytes (262 MB, 250 MiB) copied, 0.270222 s, 970 MB/s

Vous avez maintenant créé avec succès un fichier de 250 Mo. À l’étape suivante, vous formaterez ce fichier pour qu’il soit reconnu comme espace swap et vous définirez les autorisations appropriées.

Formater le fichier comme espace swap avec mkswap

Dans cette étape, vous allez formater le fichier swapfile que vous avez créé afin que le système d’exploitation le reconnaisse comme une zone swap valide. C’est le rôle de la commande mkswap.

La commande mkswap configure une zone swap Linux sur un périphérique ou dans un fichier. Elle écrit dans le fichier une signature spéciale que le noyau peut reconnaître.

Commencez par formater le fichier swapfile créé précédemment. Dans votre terminal, exécutez la commande suivante :

sudo mkswap swapfile

Après l’exécution de la commande, le résultat indique que l’espace swap a été configuré. Le système attribue un identifiant unique (UUID) à votre nouvelle zone swap. Un avertissement concernant des autorisations non sécurisées peut également apparaître ; vous le corrigerez à l’étape suivante.

mkswap: swapfile: insecure permissions 0644, fix with: chmod 0600 swapfile
Setting up swapspace version 1, size = 250 MiB (262139904 bytes)
no label, UUID=aabf0226-9f7b-47f5-9ad3-10248552795c

Important — sécurité : un fichier swap peut potentiellement contenir des données sensibles provenant de la mémoire de votre ordinateur. Pour des raisons de sécurité, seul l’utilisateur root doit pouvoir le lire et y écrire. Les autres utilisateurs du système ne doivent y avoir aucun accès.

Pour définir les autorisations correctes, nous utiliserons la commande chmod. Nous définirons les autorisations sur 600 : le propriétaire (root) pourra lire le fichier et y écrire, tandis que tous les autres utilisateurs n’auront aucun accès.

Exécutez la commande suivante pour sécuriser swapfile :

sudo chmod 600 swapfile

Cette commande n’affiche rien lorsqu’elle réussit. Vous avez maintenant formaté le fichier swapfile et sécurisé ses autorisations. Il est prêt à être activé et utilisé par le système, ce que vous ferez à l’étape suivante.

Activer le nouveau fichier swap et le rendre persistant

Vous avez créé et préparé swapfile avec succès. Il est maintenant formaté et dispose des autorisations correctes, mais le noyau Linux ne l’utilise pas encore comme mémoire virtuelle. Dans cette étape, vous allez activer le fichier swap afin de le rendre disponible pour le système.

Pour cela, vous utiliserez à nouveau la commande swapon. Lors de la première étape, vous l’avez utilisée avec l’option --show pour afficher la configuration actuelle. Cette fois, vous indiquerez le chemin de votre fichier swapfile comme argument afin de l’activer.

Dans votre terminal, situé dans ~/project, exécutez la commande suivante pour activer le nouvel espace swap :

sudo swapon swapfile

Voici le rôle de chaque élément :

  • sudo : nécessaire, car l’activation d’un espace swap est une opération système qui exige les privilèges root.
  • swapon : commande qui active les périphériques et les fichiers utilisés pour le swap.
  • swapfile : nom du fichier à activer. Comme vous vous trouvez dans le répertoire ~/project, où se trouve le fichier, vous n’avez pas besoin d’indiquer son chemin complet.

Si la commande réussit, elle n’affichera rien. C’est le comportement habituel de nombreuses commandes Linux : l’absence de message indique généralement que tout s’est bien passé.

La commande swapon n’active le fichier que pour le démarrage actuel. Pour que Linux l’active automatiquement après un redémarrage, ajoutez dans /etc/fstab une entrée contenant le chemin absolu du fichier swap :

echo '/home/labex/project/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Les six champs identifient le fichier swap, utilisent none car le swap n’a pas de point de montage, définissent le type swap et l’option standard sw, puis désactivent les vidages mémoire et les vérifications du système de fichiers avec les deux derniers zéros.

Votre fichier swapfile est maintenant actif et configuré pour rester disponible après les redémarrages. À la dernière étape, vous vérifierez que le nouvel espace swap a bien été ajouté aux ressources mémoire totales du système.

Vérifier la configuration du nouvel espace swap

Dans cette étape, vous vérifierez que le système reconnaît le nouveau fichier swap après sa création, son formatage, son activation et sa configuration persistante. Cela confirme que toutes les étapes précédentes ont été réalisées correctement.

Commencez par utiliser la même commande qu’au début de ce laboratoire : swapon --show. Son exécution devrait maintenant afficher la liste mise à jour des espaces swap actifs, notamment le fichier swapfile que vous venez d’ajouter.

Dans votre terminal, exécutez la commande suivante :

sudo swapon --show

Le résultat affichera désormais deux entrées : la partition swap d’origine, si elle existait, et votre nouveau fichier swap. Repérez la nouvelle ligne correspondant à /home/labex/project/swapfile.

NAME                         TYPE      SIZE USED PRIO
/dev/loop12                  partition   2G   0B   -2
/home/labex/project/swapfile file      250M   0B   -3

Comme vous pouvez le constater, le système reconnaît maintenant un espace swap de type file d’une taille de 250M. Une priorité (PRIO) lui a également été attribuée. Le noyau utilise en premier l’espace swap dont la priorité est la plus élevée.

Une autre commande utile pour vérifier l’utilisation de la mémoire et du swap est free. L’option -h (--human) rend le résultat plus facile à lire en affichant les tailles en mégaoctets (M) ou en gigaoctets (G).

Exécutez la commande free -h :

free -h

Vous verrez un résumé de la mémoire du système. Portez une attention particulière à la ligne Swap.

               total        used        free      shared  buff/cache   available
Mem:           3.5Gi       608Mi       732Mi        16Mi       2.2Gi       2.7Gi
Swap:          2.2Gi          0B       2.2Gi

La valeur total de la ligne Swap doit maintenant correspondre à la taille combinée de l’espace swap d’origine et de votre nouveau fichier de 250 Mo. Par exemple, si vous disposiez initialement de 2G de swap, le nouveau total sera d’environ 2.2G.

Vous avez ajouté et vérifié avec succès un nouveau fichier swap sur votre système Linux, ce qui lui fournit davantage de mémoire virtuelle.

Résumé

Dans ce laboratoire, vous avez appris à créer et à activer un fichier swap afin d’ajouter de la mémoire virtuelle à un système Linux. Vous avez commencé par examiner la configuration de l’espace swap existant avec la commande sudo swapon --show, afin de comprendre l’état actuel de la mémoire virtuelle du système et d’interpréter le résultat.

Après cette première vérification, vous avez créé un nouveau fichier swap avec la commande dd pour allouer l’espace disque souhaité. Vous avez ensuite formaté ce fichier pour l’utiliser comme swap avec mkswap, l’avez activé avec la commande swapon, puis l’avez ajouté à /etc/fstab afin que Linux puisse le réactiver après un redémarrage. Enfin, vous avez vérifié que le nouveau fichier swap avait bien été ajouté et activé en exécutant à nouveau swapon --show, ce qui a confirmé la mise à jour de la configuration.