Le swap (espace d’échange) est une zone de stockage sur le disque dur utilisée par le système pour étendre la capacité de la mémoire vive (RAM). Lorsque la RAM atteint sa limite, le swap permet de déplacer temporairement des données moins utilisées vers le disque dur, libérant ainsi de l’espace en RAM pour les données actuellement nécessaires.
Capacité recommandée
RAM | Swap | Swap si hibernation |
---|---|---|
⩽ 2Go | 2 x la RAM | 3 x la RAM |
2 Go - 8 Go | = à la RAM | 2 x la RAM |
8 Go - 64 Go | ⩾ 4 Go | 1,5 x la RAM |
⩾ 64 Go | ⩾ 4 Go | Non recommandée |
Swap à partir d’une partition
Créer une partition Swap
Lister les disques et partitions disponibles avec la commande fdisk -l
:
# fdisk -l |
Créer une partition Swap avec fdisk /dev/sdX
:
# fdisk /dev/sdX |
Créez une nouvelle partition pour le swap :
n
: créer une nouvelle partitiontype de partition
: par défaut primaire, appuyez sur Enternuméro de partition
: par défaut le prochain disponible, appuyez sur Enterpremier secteur
: appuyez sur Enter pour utiliser la valeur par défauttaille de la partition
: syntaxe+size{K,M,G,T}
(+2G pour une partition de 2 Go)t
: changer le type de partition, type82
pour du swapw
: sauvegarder les changements
Swap à partir d’un répertoire
En général, les swaps sous Linux sont créés en utilisant des partitions dédiées plutôt que des répertoires.
Cependant il existe des approches alternatives comme l’utilisation de fichiers pour créer un swap.
Créez un fichier pour le swap
La commande dd
permet de créer un fichier d’une taille souhaitée, pour un fichier de 2 Go :
# dd if=/dev/zero of=/_MonSWAP bs=1M count=2048 |
Autorisations
Mettre les bons droits sur /_MonSWAP
:
# chmod 600 /_MonSWAP |
Swap (partition ou fichier)
Formatez la partition en swap
La commande mkswap
permet de formater une partition en tant que partition de swap ou de créer un espace de swap dans un fichier.
# mkswap /dev/sdXn |
Activez la partition swap
La commande swapon
permet d’activer la nouvelle partition de swap :
# swapon /dev/sdXn |
Vérifier que le swap est bien activé avec swapon -s
:
# swapon -s |
Ou avec la commande free
:
# free -h |
Rendre le swap persistant après le redémarrage en ajoutant une entrée dans /etc/fstab
.
/dev/sdXn swap swap defaults 0 0 |
Enregistrer les changements et redémarrez le système ou lancer systemctl daemon-reload
pour appliquer la configuration du swap.
Priorité des partitions swap
Si vous avez plusieurs partitions destinées au swap, il est possible de prioriser leur utilisation dans /etc/fstab
:
UUID=1561e[...]1258 swap swap defaults 0 0 |
/!\ Résumé des commandes
Commandes :
# fdisk -l |
Fichiers :
/etc/fstab |
Cas pratique
Gestion du swap sur un disque ayant déjà une partition (1)
Ici le disque /dev/vdb
inclut déjà une table de partition de 1Go et utilise le schéma de partitionnement GPT :
[root@SERVER01 ~]# parted /dev/sdb print |
Création d’une 2ème partition sur ce disque en tant que swap :
[root@SERVER01 ~]# fdisk /dev/sdb |
Vérification avec lsblk
et parted
:
[root@SERVER01 ~]# lsblk |
[root@SERVER01 ~]# parted /dev/sdb print |
Pour s’assurer que le noyau et udev
ont bien pris en compte cette nouvelle partition, on utilise udevadm settle
:
[root@SERVER01 ~]# udevadm settle |
Création du swap avec mkswap
:
[root@SERVER01 ~]# mkswap /dev/sdb2 |
Activation du swap :
[root@SERVER02 ~]# swapon /dev/sdb2 |
Vérification :
[root@SERVER01 ~]# swapon -show |
Désactiver l’ancien swap (qui techniquement était un fichier faisant office de swap) :
[root@SERVER01 ~]# swapoff /_MonSWAP |
Vérification :
[root@SERVER01 ~]# swapon -show |
Rendre le swap persistant au démarrage du système en modifiant /etc/fstab
:
[root@SERVER01 ~]# lsblk -fp /dev/sdb2 |
[root@SERVER01 ~]# vim /etc/fstab |
Reload systemd
pour que le système applique la nouvelle configuration de /etc/fstab
:
[root@SERVER01 ~]# systemctl daemon-reload |
Activez le swap :
[root@SERVER01 ~]# swapon -a |
Vérification, ici l’ancien fichier de swap /_MonSWAP
est revenu car il est toujours présent dans /etc/fstab
:
# swapon -show |
Après un redemarrage, le swap /dev/sdb2
sera toujours présent.
Gestion du swap sur un disque ayant déjà une partition (2)
Un disque /dev/sdd
est déjà partionné :
[root@SERVER02 ~]# lsblk |
Sur ce même disque, on créé 2 autres partitions GPT de 512 Mo appelée swap1
et swap2
:
[root@SERVER02 ~]# fdisk /dev/sdd |
Vérification avec lsblk
et parted
:
[root@SERVER02 ~]# lsblk |
[root@SERVER02 ~]# parted sdd print |
Pour s’assurer que le noyau et udev
ont bien pris en compte cette nouvelle partition, on utilise udevadm settle
:
[root@SERVER01 ~]# udevadm settle |
Créer les espaces swap :
[root@SERVER02 ~]# mkswap /dev/sdd2 |
[root@SERVER02 ~]# mkswap /dev/sdd3 |
Définir la priorité et le nom des swaps :
[root@SERVER02 ~]# vim /etc/fstab |
Reload systemd
pour relire /etc/fstab
:
[root@SERVER02 ~]# systemctl daemon-reload |
À ce stade, le swap n’est pas actif, le FSTYPE
est bien swap mais il n’y a pas de MOUNTPOINTS
défini :
[root@SERVER02 ~]# lsblk -fp |
Activation des swaps :
[root@SERVER02 ~]# swapon -a |
[root@SERVER02 ~]# swapon --show |
[root@SERVER02 ~]# lsblk -fp |
Au redémarrarre :
[aline@SERVER02 ~]$ mount | grep /PHOTOS |
5.4. Vérifiez que le système active les deux espaces d’échange.
[aline@SERVER02 ~]# swapon --show |
Documentation
MAN fdisk
MAN mkswap(8)
MAN swapon(8)
MAN swapoff(8)
MAN dd