Swap est un espace sur un disque qui est utilisé lorsque la quantité de mémoire RAM physique est pleine. Lorsqu'un système Linux manque de RAM, les pages inactives sont déplacées de la RAM vers l'espace d'échange.
L'espace d'échange peut prendre la forme d'une partition d'échange dédiée ou d'un fichier d'échange. Généralement, lors de l'exécution d'Ubuntu sur une machine virtuelle, une partition d'échange n'est pas présente et la seule option consiste à créer un fichier d'échange.
Ce tutoriel explique comment ajouter un fichier d'échange sur Ubuntu 20.04.
Avant de commencer #
Swap ne doit pas être considéré comme un remplacement de la mémoire physique. Étant donné que l'espace d'échange est une section du disque dur, il a un temps d'accès plus lent que la mémoire physique. Si votre système manque constamment de mémoire, vous devez ajouter plus de RAM.
Généralement, la taille du fichier d'échange dépend de la quantité de RAM dont dispose votre système :
- Systèmes avec moins de 2 Go de RAM - 2 fois la quantité de RAM.
- Systèmes avec 2 à 8 Go de RAM - la même taille que la quantité de RAM.
- Systèmes avec plus de 8 Go de RAM - au moins 4 Go de Swap.
Seul root ou un utilisateur avec des privilèges sudo peut activer le fichier d'échange.
Création d'un fichier d'échange #
Dans cet exemple, nous allons créer 2 GB
fichier d'échange. Si vous souhaitez ajouter plus d'échange, remplacez 2G
avec la taille de l'espace d'échange dont vous avez besoin.
Suivez les étapes ci-dessous pour ajouter de l'espace d'échange sur Ubuntu 20.04 :
-
Commencez par créer un fichier qui servira de swap :
sudo fallocate -l 2G /swapfile
Si le
fallocate
l'utilitaire n'est pas présent sur votre système, ou vous obtenez un message d'erreur disantfallocate failed: Operation not supported
, utilisez la commande suivante pour créer le fichier d'échange :sudo dd if=/dev/zero of=/swapfile bs=1024 count=2097152
-
Définissez les autorisations de fichier sur
600
pour empêcher les utilisateurs réguliers d'écrire et de lire le fichier :sudo chmod 600 /swapfile
-
Créez une zone d'échange Linux sur le fichier :
sudo mkswap /swapfile
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes) no label, UUID=fde7d2c8-06ea-400a-9027-fd731d8ab4c8
-
Activez le fichier d'échange en exécutant la commande suivante :
sudo swapon /swapfile
Pour rendre le changement permanent, ouvrez le
/etc/fstab
fichier :sudo nano /etc/fstab
et collez la ligne suivante :
/etc/fstab/swapfile swap swap defaults 0 0
-
Vérifiez que le swap est actif en utilisant soit le
swapon
ou lefree
commande, comme indiqué ci-dessous :sudo swapon --show
NAME TYPE SIZE USED PRIO /swapfile file 2G 0B -1
sudo free -h
total used free shared buff/cache available Mem: 981Mi 97Mi 68Mi 0.0Ki 814Mi 735Mi Swap: 2.0Gi 10Mi 1.9Gi
Ajustement de la valeur de swappiness #
Swappiness est une propriété du noyau Linux qui définit la fréquence à laquelle le système utilisera l'espace de swap. Il peut avoir une valeur comprise entre 0 et 100. Une valeur faible incitera le noyau à essayer d'éviter l'échange autant que possible, tandis qu'une valeur plus élevée incitera le noyau à utiliser l'espace d'échange de manière plus agressive.
Sur Ubuntu, la valeur de swappiness par défaut est définie sur 60
. Vous pouvez vérifier la valeur actuelle en tapant la commande suivante :
cat /proc/sys/vm/swappiness
60
Alors que la valeur de swappiness de 60
est OK pour la plupart des systèmes Linux, pour les serveurs de production, vous devrez peut-être définir une valeur inférieure.
Par exemple, pour définir la valeur de swappiness sur 10
, exécutez :
sudo sysctl vm.swappiness=10
Pour rendre ce paramètre persistant lors des redémarrages, ajoutez la ligne suivante au /etc/sysctl.conf
fichier :
vm.swappiness=10
La valeur de swappiness optimale dépend de la charge de travail de votre système et de la façon dont la mémoire est utilisée. Vous devez ajuster ce paramètre par petits incréments pour trouver une valeur optimale.
Supprimer un fichier d'échange #
Pour désactiver et supprimer le fichier d'échange, procédez comme suit :
-
Tout d'abord, désactivez l'espace d'échange :
sudo swapoff -v /swapfile
-
Ensuite, supprimez l'entrée du fichier d'échange
/swapfile swap swap defaults 0 0
depuis le/etc/fstab
fichier. -
Enfin, supprimez le fichier d'échange réel en utilisant le
rm
commande :sudo rm /swapfile