Ceci est une ancienne révision du document !
SWAP
Le swap (parfois appelé mémoire virtuelle) est un espace réservé sur le disque dur servant à décharger la mémoire physique (RAM) lorsque celle-ci arrive à saturation. Le swap peut être un fichier, on parle alors de fichier d'échange, ou une partition dédiée à cet usage, on parle alors de partition d'échange.
N.B. : Les performances du swap sont bien moins bonnes que celles de la mémoire physique. En effet, les échanges de données avec le disque dur sont beaucoup plus lents qu'avec la mémoire physique. L'utilisation du swap ralentit donc significativement le système, et entraîne une activité permanente du disque dur (bruits de "grattements"), symptôme classique des PC en fin de vie.
Comparaison entre GNU/Linux et Windows
GNU/Linux
Sous GNU/Linux, le swap est traditionnellement une partition dédiée de taille fixe. Sur les distributions récentes comme Ubuntu, une partition de swap est créée automatiquement lors de l'installation. En principe, la taille de cette partition est fixée à la quantité de mémoire (RAM) installée.
Il est cependant possible d'utiliser un fichier d'échange plutôt qu'une partition (cf fin de page).
Windows
Par défaut sous Windows, le swap n'est pas présenté comme une partition : c'est un gros fichier fragmentable géré par Windows. Ce fichier se nomme « Win386.swp » (95, 98, Me) ou « pagefile.sys » (NT, 2000, XP, Vista), et est par défaut dans « C: ». Pour modifier sa taille et son emplacement, on peut passer par le panneau de configuration (Système → Performances → Mémoire virtuelle).
Taille d'une partition de swap
Cela dépend de votre RAM (mémoire vive) et de votre utilisation. Le risque si le swap est trop petit (ou inexistant) est que le système se comporte de façon erratique, voire plante complètement. Inversement, si le swap est trop gros, c'est autant de place en moins pour vos fichiers.
On retiendra que, pour une utilisation bureautique, 1 Gio de mémoire vive (RAM) suffit largement. Au-delà, il est inutile d'avoir une partition swap. Si vous n'avez pas autant de RAM, il est donc conseillé de créer une partition swap complétant votre mémoire vive, dont la taille est au moins de : 1 Gio moins votre mémoire vive.
Si votre utilisation de Ubuntu est plus intensive, comme pour le traitement d'images haute définition, le montage vidéo, ou si vous souhaitez tout simplement être sûr que votre système ne manquera pas de mémoire, vous pouvez tout de même créer une partition swap, dont la taille devrait être de l'ordre de quelques Gio. Il est difficile d'être plus précis dans la mesure où cela dépend beaucoup de l'utilisation de votre ordinateur.
Enfin, si vous souhaitez utiliser la fonction "hibernation" d'Ubuntu, il faut que la taille du swap soit supérieure à celle de la mémoire vive. En effet, sous Ubuntu, la partition de swap est utilisée pour enregistrer les données de la mémoire vive durant l'hibernation.
Il est préférable de fixer la taille de la partition swap durant l'installation. Néanmoins, il est possible de la modifier par la suite, mais c'est une opération légèrement risquée pour vos données.
Modifier le swap après l'installation (avancé)
Outils avec interface graphique
Vous pouvez utiliser les outils de partitionnement en mode graphique fournis avec Ubuntu : Gparted (Qtparted pour Kubuntu) pour créer/modifier/redimensionner vos partitions, à condition que celles-ci ne soient pas en cours d'utilisation par le système.
Si vous avez besoin de modifier une partition utilisée par le système en permanence, utilisez un live-cd.
Outils en ligne de commande
Il existe plusieurs outils en ligne de commande pour gérer vos partitions, les plus connus étant fdisk et cfdisk. Ces outils s'utilisent avec les mêmes précautions et restrictions que celles indiquées ci-dessus pour gparted.
Activer/Désactiver l'utilisation du swap
Les commandes swapon/swapoff permettent respectivement d'activer ou désactiver le swap sans redémarrage du système. Exemple :
sudo swapoff /dev/sda6
désactivera la partition d'échange présente sur /dev/sda6
sudo swapon /dev/sda6
activera la partition d'échange présente sur /dev/sda6
Définir une partition comme partition d'échange
La commande mkswap permet de définir une partition ou un fichier comme espace d'échange. Exemple pour définir la partition /dev/sda6 comme partition d'échange :
sudo mkswap /dev/sda6
Vous pouvez ensuite activer la partition d'échange avec :
sudo swapon /dev/sda6
Pour rendre cette modification permanente vous devrez également modifier votre fichier /etc/fstab pour y modifier ou ajouter une ligne du type :
# /dev/sda6 UUID=db245df9-851d-695b-a3f7-d40f039a6cc6 none swap sw
Définir un fichier comme fichier d'échange (avancé)
La procédure est presque la même que ci-dessus. Vous devez d'abord créer un fichier de préférence non fragmenté avec la commande dd, par exemple pour créer un fichier file.swap dans le répertoire racine, de 512Mio :
sudo dd if=/dev/zero of=/file.swap bs=512M count=1
Si vous obtenez comme message :
dd: Mémoire épuisée
Alors qu'il vous reste pourtant assez de place sur le disque, il se peut que vous n'ayez pas assez de ram pour créer ce fichier en un seul morceau, ou que vous n'ayez pas 512Mo de place contiguë pour créer le fichier. Dans ce cas, essayez de créer le fichier en plusieurs morceaux, par exemple en faisant :
sudo dd if=/dev/zero of=/file.swap bs=256M count=2
Cette commande aura pour effet de créer un fichier de 512Mo en 2 morceaux de 256Mo. Essayez de trouver le bon compromis bs/count qui permette à la commande dd de fonctionner, sachant que les performances seront d'autant meilleures que le fichier swap sera peu fragmenté1).
On définit ensuite ce fichier comme un fichier d'échange :
sudo mkswap /file.swap
Puis on active l'espace d'échange :
sudo swapon /file.swap
Pour rendre cette modification permanente vous devrez également modifier votre fichier /etc/fstab pour y modifier ou ajouter une ligne du type :
# /file.swap UUID=ee43e097-dc53-4635-a21c-4b61bbd8a2f1 none swap sw /file.swap none swap sw 0 0
la commande pour verifier:
swapon -s Filename Type Size Used Priority /dev/sda6 partition 1052216 0 -3