De temps en temps, on me demande de configurer des serveurs dédiés ou des VPS. Dernièrement, j’ai travaillé sur un VPS qui n’avait pas de fichier swap et qui finissait par consommer toute la RAM disponible.
Ce tutoriel vous permet de mettre en place un fichier swap sous Ubuntu 16.04 Server.
Le fichier swap
Le moyen le plus simple d’avoir un serveur réactif et de le prémunir contre les erreurs out-of-memory des services est d’allouer un fichier swap.
Le swap est une zone du disque dur spécialement créée pour que le système d’exploitation y garde des données temporaires qu’il ne peut plus stocker dans la RAM.
Cet espace permet donc aux services du serveur de continuer de tourner même lorsque la RAM est épuisée et ne sera utilisé que dans ce cas de figure.
Les informations seront cependant écrites sur le disque beaucoup moins rapidement que via la RAM.
Vérification du swap sur le système
Commençons par vérifier si un fichier de swap est déjà en place :
swapon --show
Aucun résultat : le système n’a pas d’espace réservé pour le fichier d’échange.
On vérifie une nouvelle fois s’il existe un fichier de swap actif:
free -h
Résultat:
total used free shared buff/cache available
Mem: 3.9G 517M 2.5G 76M 895M 3.0G
Swap: 0B 0B 0B
Pas de swap actif sur notre système, nous allons donc pouvoir en ajouter une.
Vérification de l’espace disponible
Il est très commun de créer une nouvelle partition qui contient le fichier d’échange mais comme il n’est pas toujours possible de changer le schéma de partition, nous allons créer un fichier d’échange qui résidera sur notre partition existante.
Vérifions l’espace disponible :
df -h
Résultat:
Filesystem Size Used Avail Use% Mounted on
udev 2.0G 0 2.0G 0% /dev
tmpfs 396M 3.2M 393M 1% /run
/dev/vda1 59G 13G 45G 22% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
tmpfs 396M 0 396M 0% /run/user/0
Code language: PHP (php)
Le disque dur se trouve sous /dev
dans notre cas.
En ce qui concerne la taille de la partition swap : elle ne doit pas dépasser 4 Go (parce qu’au-delà, c’est inutile) et doit correspondre à peu près à la taille de votre RAM (ou le double de votre RAM suivant votre serveur).
Création du fichier d’échange
Nous allons donc créer un fichier d’échange nommé swapfile
, d’une taille de 4 Go, à la racine du système (/).
sudo fallocate -l 4G /swapfile
Par souci de sécurité, ce fichier sera uniquement lisible par l’utilisateur root
:
sudo chmod 600 /swapfile
Vérifions les permissions et l’espace réservé :
ls -lh /swapfile
Résultat:
-rw------- 1 root root 4.0G Jan 17 16:31 /swapfile