Comment ajouter de l’espace d’échange sur Debian 9

introduction

L’un des moyens les plus simples de se prémunir contre les erreurs de mémoire insuffisante dans les applications consiste à ajouter de l’espace d’échange sur votre serveur. Dans ce guide, nous verrons comment ajouter un fichier d’échange sur un serveur Debian 9.

Qu’est-ce qu’un échange?

Swap est une zone du disque dur désignée comme un emplacement où le système d’exploitation peut stocker temporairement des données qu’il ne peut plus conserver dans la RAM. En gros, cela vous donne la possibilité d’augmenter la quantité d’informations que votre serveur peut conserver dans sa «mémoire» de travail, avec quelques réserves. L’espace de permutation sur le disque dur sera utilisé principalement lorsqu’il n’y a plus assez d’espace dans la RAM pour stocker les données d’application en cours d’utilisation.

Les informations écrites sur le disque seront nettement plus lentes que les informations stockées dans la RAM, mais le système d’exploitation préférera continuer à exécuter les données d’application en mémoire et utiliser la permutation pour les données plus anciennes. Globalement, la possibilité de remplacer l’espace de permutation lorsque la mémoire RAM de votre système est épuisée peut constituer un bon filet de sécurité contre les exceptions de mémoire insuffisante sur les systèmes dotés d’un stockage non-SSD.

Étape 1 - Vérification des informations de swap sur le système

Avant de commencer, nous pouvons vérifier si le système dispose déjà d’un espace d’échange. Il est possible d’avoir plusieurs fichiers d’échange ou partitions d’échange, mais en général un seul devrait suffire.

Nous pouvons voir si le système a un échange configuré en tapant:

sudo swapon --show

Si vous ne récupérez aucune sortie, cela signifie que votre système ne dispose pas actuellement d’espace d’échange.

Vous pouvez vérifier qu’il n’existe aucun échange actif à l’aide de l’utilitaire + free +:

free -h
Output              total        used        free      shared  buff/cache   available
Mem:           996M         44M        639M        4.5M        312M        812M

Comme vous pouvez le voir dans la ligne * Swap * de la sortie, aucun échange n’est actif sur le système.

Étape 2 - Vérification de l’espace disponible sur la partition du disque dur

Avant de créer notre fichier d’échange, nous allons vérifier notre utilisation actuelle du disque pour nous assurer que nous disposons de suffisamment d’espace. Faites ceci en entrant:

df -h
OutputFilesystem      Size  Used Avail Use% Mounted on
udev            488M     0  488M   0% /dev
tmpfs           100M  4.5M   96M   5% /run
/dev/vda1        25G  989M   23G   5% /
tmpfs           499M     0  499M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           499M     0  499M   0% /sys/fs/cgroup
tmpfs           100M     0  100M   0% /run/user/1001

Le périphérique avec + / + dans la colonne + Monté sur + est notre disque dans ce cas. Nous avons beaucoup d’espace disponible dans cet exemple (seulement 1.4G utilisé). Votre utilisation sera probablement différente.

Bien qu’il existe de nombreuses opinions sur la taille appropriée d’un espace d’échange, cela dépend vraiment de vos préférences personnelles et des exigences de votre application. En règle générale, une quantité égale ou double de la quantité de RAM sur votre système constitue un bon point de départ. Une autre bonne règle est que tout échange supérieur à 4G est probablement inutile si vous l’utilisez simplement comme solution de secours de la RAM.

Étape 3 - Création d’un fichier d’échange

Maintenant que nous connaissons notre espace disque disponible, nous pouvons créer un fichier d’échange sur notre système de fichiers. Nous allons allouer un fichier de la taille de swap que nous voulons appelée + swapfile + dans notre répertoire racine (/).

Le meilleur moyen de créer un fichier d’échange est d’utiliser le programme + fallocate +. Cette commande crée instantanément un fichier de la taille spécifiée.

Dans la mesure où le serveur dans notre exemple dispose de 1 Go de RAM, nous allons créer un fichier 1Go dans ce guide. Ajustez-le pour répondre aux besoins de votre propre serveur:

sudo fallocate -l  /swapfile

Nous pouvons vérifier que la bonne quantité d’espace a été réservée en tapant:

ls -lh /swapfile
Output-rw-r--r-- 1 root root 1.0G May 29 17:34 /swapfile

Notre fichier a été créé avec la quantité correcte d’espace réservé.

Étape 4 - Activer le fichier d’échange

Maintenant que nous avons un fichier de la taille correcte disponible, nous devons le transformer en espace d’échange.

Premièrement, nous devons verrouiller les autorisations du fichier afin que seuls les utilisateurs dotés des privilèges * root * puissent en lire le contenu. Cela empêche les utilisateurs normaux d’accéder au fichier, ce qui aurait des conséquences importantes pour la sécurité.

Rendez le fichier accessible uniquement à * root * en tapant:

sudo chmod 600 /swapfile

Vérifiez que les autorisations changent en tapant:

ls -lh /swapfile
Output 1 root root 1.0G May 29 17:34 /swapfile

Comme vous pouvez le constater, seul l’utilisateur * root * a activé les indicateurs de lecture et d’écriture.

Nous pouvons maintenant marquer le fichier comme espace de swap en tapant:

sudo mkswap /swapfile
OutputSetting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=b591444e-c12b-45a6-90fc-e8b24c67c006f

Après avoir marqué le fichier, nous pouvons activer le fichier d’échange, ce qui permet à notre système de commencer à l’utiliser:

sudo swapon /swapfile

Vérifiez que le swap est disponible en tapant:

sudo swapon --show
OutputNAME      TYPE  SIZE USED PRIO
/swapfile file 1024M   0B   -1

Nous pouvons vérifier à nouveau la sortie de l’utilitaire + free + pour corroborer nos conclusions:

free -h
Output              total        used        free      shared  buff/cache   available
Mem:           996M         44M        637M        4.5M        314M        811M

Notre échange a été mis en place avec succès et notre système d’exploitation commencera à l’utiliser au besoin.

Étape 5 - Rendre le fichier d’échange permanent

Nos modifications récentes ont activé le fichier d’échange pour la session en cours. Cependant, si nous redémarrons, le serveur ne conservera pas automatiquement les paramètres de swap. Nous pouvons changer cela en ajoutant le fichier d’échange à votre fichier + / etc / fstab.

Sauvegardez le fichier + / etc / fstab + en cas de problème:

sudo cp /etc/fstab /etc/fstab.bak

Ajoutez les informations du fichier d’échange à la fin de votre fichier + / etc / fstab + en tapant:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Nous passerons ensuite en revue certains paramètres que nous pouvons mettre à jour pour ajuster notre espace d’échange.

Étape 6 - Réglage de vos paramètres d’échange

Il existe quelques options que vous pouvez configurer qui auront une incidence sur les performances de votre système lors de la conversion.

Ajuster la propriété Swappiness

Le paramètre + swappiness + configure la fréquence à laquelle votre système échange des données hors de la mémoire RAM vers l’espace de permutation. C’est une valeur entre 0 et 100 qui représente un pourcentage.

Avec des valeurs proches de zéro, le noyau n’échangera pas de données sur le disque sauf en cas d’absolue nécessité. N’oubliez pas que les interactions avec le fichier d’échange sont «coûteuses» en ce sens qu’elles prennent beaucoup plus de temps que les interactions avec la RAM et qu’elles peuvent entraîner une réduction significative des performances. Dire au système de ne pas trop compter sur l’échange accélérera généralement votre système.

Les valeurs proches de 100 essaieront de convertir plus de données en données afin de libérer davantage d’espace RAM. En fonction du profil de mémoire de vos applications ou de l’utilisation que vous faites de votre serveur, cela peut être préférable dans certains cas.

Nous pouvons voir la valeur actuelle de swappiness en tapant:

cat /proc/sys/vm/swappiness
Output60

Pour un ordinateur de bureau, un paramètre swappiness de 60 n’est pas une mauvaise valeur. Pour un serveur, vous voudrez peut-être le rapprocher de 0.

Nous pouvons définir le swappiness sur une valeur différente en utilisant la commande + sysctl +.

Par exemple, pour définir le swappiness sur 10, nous pourrions taper:

sudo sysctl vm.swappiness=10
Outputvm.swappiness = 10

Ce paramètre persistera jusqu’au prochain redémarrage. Nous pouvons définir cette valeur automatiquement au redémarrage en ajoutant la ligne à notre fichier + / etc / sysctl.conf +:

sudo nano /etc/sysctl.conf

En bas, vous pouvez ajouter:

/etc/sysctl.conf

vm.swappiness=10

Enregistrez et fermez le fichier lorsque vous avez terminé.

Réglage du paramètre de pression du cache

Une autre valeur connexe que vous voudrez peut-être modifier est le + vfs_cache_pressure +. Ce paramètre configure la quantité de mémoire que le système choisira de mettre en cache les informations inode et dentry par rapport aux autres données.

Fondamentalement, il s’agit de données d’accès concernant le système de fichiers. C’est généralement très coûteux à rechercher et très fréquemment demandé, c’est donc une excellente chose à mettre en cache par votre système. Vous pouvez voir la valeur actuelle en interrogeant à nouveau le système de fichiers + proc +:

cat /proc/sys/vm/vfs_cache_pressure
Output100

Dans sa configuration actuelle, notre système supprime trop rapidement les informations inode du cache. Nous pouvons définir ceci dans un paramètre plus conservateur comme 50 en tapant:

sudo sysctl vm.vfs_cache_pressure=50
Outputvm.vfs_cache_pressure = 50

Encore une fois, cela n’est valable que pour notre session en cours. Nous pouvons changer cela en l’ajoutant à notre fichier de configuration, comme nous l’avons fait avec notre paramètre swappiness:

sudo nano /etc/sysctl.conf

En bas, ajoutez la ligne qui spécifie votre nouvelle valeur:

/etc/sysctl.conf

vm.vfs_cache_pressure=50

Enregistrez et fermez le fichier lorsque vous avez terminé.

Conclusion

En suivant les étapes de ce guide, vous aurez un peu de marge de manœuvre dans les cas qui pourraient par ailleurs conduire à des exceptions de mémoire insuffisante. L’échange d’espace peut s’avérer extrêmement utile pour éviter certains de ces problèmes courants.

Si vous rencontrez des erreurs de mémoire MOO (insuffisance de mémoire) ou si vous pensez que votre système est incapable d’utiliser les applications dont vous avez besoin, la meilleure solution consiste à optimiser vos configurations d’application ou à mettre à niveau votre serveur.