Magazine High tech

Tutorial : Ajouter du SWAP sous Linux

Publié le 01 juillet 2008 par Standart

Pie_Chart.png

On peut se demander à quoi sert le SWAP aujourd'hui sur nos distributions Linux, sur des machines possédant souvent 1024Mo de RAM, voir beaucoup plus... Mais alors, le swap, qu'est-ce que c'est et à quoi ça sert ? et en a-t-on encore réellement besoin ? doit-on dire "le" ou "la" swap ? (pour cette dernière, j'en sais rien, je dirais le ;-) ), c'est au travers de ce billet que j'ai voulu apporter ma réponse.

Explications

Le swap sous Linux est nécessaire pour faire fonctionner son système de manière optimale, même avec beaucoup de mémoire. L'espace de swap permet au système d'y inscrire toutes les données temporaires nécessaires aux fonctionnement des programmes en cours d'exécution : en gros, on y trouve tout ce qui est utilisé pour la mémoire virtuelle.

L'ajout de SWAP peut être intéressant pour des systèmes sous Linux nécessitant d'avoir de fortes disponibilités en termes d'exécution de programmes particulièrement gourmands en ressources mémoires : serveur d'échange de fichiers, serveur de calculs, logiciels de traitement vidéos, 3D...
Par exemple, si un programme n'est pas utilisé pendant un certain temps (plusieurs heures ou plusieurs jours), Linux peut décider de le placer en espace "swap". Ceci ayant pour avantage de libérer de l'espace en RAM et augmenter la taille du cache disque, et donc d'augmenter les performances des accès aux disques et ainsi accroître les performances globales du système.
Autre cas ou le swap a son importance : les fonctions d'hibernation. En cas de mise en hibernation, Linux copie les données contenues dans la mémoire vive sur le swap, et éteint l'ordinateur. A la remise en marche, il retrouve les données en swap dans l'état où il les a laissé, les programmes retrouvent toutes leurs données utilisées auparavant et reprennent le travail là où ils en étaient, d'où un gain de temps : en RAM (mémoire vive), toutes les données auraient été effacées et les applications auraient dues se réinitialiser.

Si l'utilisateur a de nouveau besoin de réutiliser le programme "passé" en swap, il ne faudra que quelques fractions de secondes pour que le tout repasse en RAM, d'où l'importance de bien tailler cet espace de swap.

Par convention, il est recommandé que la taille de SWAP fasse entre x1,5 à x2 de la mémoire RAM disponible sur la machine:
Ainsi, pour 1024 Mo (1Go) de RAM, il est recommandé de réserver 2048 Mo (2Go) de SWAP.
Bien sure, on peut se passer de swap mais si la mémoire physique (RAM) arrive à saturation, le système risque de se bloquer complètement.
Donc je vous conseille de toujours faire un petit swap. Mais alors comment faire lorsque l'on ne l'a pas prévu au départ lors de l'installation ou mal "taillé" ? pas de panique, avec Linux il est très simple d'ajouter ou redimensionner sa taille de swap, et cela directement au travers d'une console à l'aide de quelques lignes de commandes.

La pratique

Ici, on va voir comment rajouter de la swap directement à l'aide du shell. Évidemment, il existe des outils graphiques tel Gparted sous Ubuntu pour faire ce travail, mais je trouve qu'avec un peu d'habitude, il est plus rapide et sécuritaire de le faire en lignes de commandes.

important Modifier les partitions après l'installation est toujours une opération risquée. Assurez-vous d'avoir sauvegardé toutes vos données sur un autre support au préalable.

Déjà, 2 solutions s'offrent à nous : soit une partition complète de swap, dîtes "partition d'échange", soit un fichier "swapfile" ou fichier d'échange.
En effet, on peut créer un swap sans pour autant avoir une partition dédiée. A la place, un simple fichier sur une partition traditionnelle (montée sur / par exemple) est suffisante. On peut même combiner une partition de swap et un "swapfile", si la première s'avère trop petite.
Il est préférable de se servir d'une partition d'échange plutôt que d'un fichier d'échange, pour des raisons que je ne détaillerais pas plus (notion de blocs disques contigus,...).
Cependant, on se retrouve souvent sur une machine déjà configurée avec des partitions spécifiques, et pas forcement avec encore suffisamment d'espace disque non-formaté disponible pour se créer une partition. C'est là que le swapfile devient intéressant, et c'est la solution que l'on va développer dans les lignes suivantes.

1. Préparation

Ouvrons tout d'abord une console afin d'entrer nos commandes en se connectant en super-administrateur avec un:

 sudo su

Viennent quelques commandes qui vont être utiles pour connaitre la configuration actuelle du système (swap disponible, espace libre, etc...):
Connaitre l'espace de swap actuel:

 more /proc/swaps

Connaitre les informations mémoire du système (CTRL+C pour sortir):

 more /proc/meminfo

Connaitre l'espace disque disponible des différentes partitions:

 df -ah

2. Créer un fichier

Pour créer ce fichier d'échange, il va falloir utiliser la commande dd pour convertir et copier des volumes de données.
Il va aussi falloir connaitre le nom, l'emplacement et la taille du fichier de swap que l'on va créer.
Placez-vous déjà dans votre espace utilisateur, aussi appelé "home directory" en entrant les commandes suivantes dans une console:

 cd
pwd

Ensuite on va créer le fichier file.swap d'une taille de 512Mo à l'aide de la commande suivante:

 sudo dd if=/dev/zero of=/file.swap bs=1024 count=512000

Explication : la commande dd crée et copie des zéros dans le fichier file.swap contenant 512000 blocs de 1024 octets chacun, soit un fichier approximatif de 512 Mo (voir 524 Mo).

3. créer le système de fichier pour le fichier d'échange

On utilise à présent "mkswap" pour formater le fichier en tant qu'espace d'échange ou de "swap":

 sudo mkswap /file.swap 512000

Il ne faut pas oublier de passer la taille du fichier à la commande mkswap, de la même taille que celle définie lors de la création du fichier.

4. activer ou désactiver le fichier d'échange à la volée

Il est à présent possible d'activer ou désactiver ce fichier d'échange à l'aide de 2 simples commandes.
La commande :

 sudo swapon /file.swap

active la partition de swap et s'ajoute à l'existante si elle existe. la commande "more /proc/swaps" vue plus haut devrait vous montrer le nouvel espace de swap nommé file.swap.

La commande :

 sudo swapoff /file.swap

désallouera l'espace utilisé par le fichier d'échange et celui-ci pourra être effacé en toute sécurité.

PS:
Je complèterai ce billet pour la gestion de partitions de swap ainsi que l'auto-montage dés que j'aurais un peu plus de temps.


Retour à La Une de Logo Paperblog