Comment ajouter un échange sur CentOS 7

introduction

L’un des moyens les plus simples de rendre votre serveur plus réactif et d’éviter les erreurs de mémoire insuffisante dans votre application consiste à ajouter de l’espace d’échange. * Swap * est une zone d’un lecteur de stockage où le système d’exploitation peut stocker temporairement des données qu’il ne peut plus conserver en mémoire.

Cela vous donne la possibilité d’augmenter la quantité d’informations que votre serveur peut conserver dans sa mémoire de travail, avec certaines réserves. La lecture et l’écriture sur swap sont plus lentes que l’utilisation de la mémoire, mais elles peuvent constituer un filet de sécurité efficace lorsque votre serveur manque de mémoire.

Sans échange, un serveur qui manque de mémoire peut commencer à tuer des applications pour libérer de la mémoire, voire se bloquer. Cela peut entraîner la perte de données non sauvegardées ou des temps d’arrêt. Pour garantir un accès fiable aux données, certaines applications nécessitent un échange pour fonctionner.

Dans ce guide, nous expliquerons comment créer et activer un fichier d’échange sur un serveur CentOS 7.

Note

Conditions préalables

Avant de commencer avec ce guide, vous devez d’abord suivre certaines étapes.

Vous aurez besoin d’un serveur CentOS 7 installé et configuré avec un utilisateur non root disposant des privilèges sudo +. Si vous ne l’avez pas encore fait, vous pouvez exécuter les étapes 1 à 4 de la configuration initiale du serveur CentOS 7. guide pour créer ce compte.

Une fois que vous avez votre utilisateur non root, vous pouvez l’utiliser pour SSH sur votre serveur CentOS et poursuivre l’installation de votre fichier d’échange.

Vérifier le système pour les informations de swap

Avant de commencer, nous devrions jeter un coup d’œil sur la mémoire de notre serveur pour voir si nous avons déjà un espace de swap disponible. Bien que nous puissions avoir plusieurs fichiers d’échange ou partitions d’échange, un seul devrait généralement suffire.

Nous pouvons voir si le système a un échange configuré en utilisant + swapon +, un utilitaire de swap à usage général. Avec l’indicateur + -s +, + swapon + affichera un résumé de l’utilisation et de la disponibilité du swap sur notre périphérique de stockage:

swapon -s

Si rien n’est retourné par la commande, le résumé était vide et aucun fichier d’échange n’existe.

Un autre moyen de vérifier l’espace de permutation consiste à utiliser l’utilitaire + free +, qui indique l’utilisation de la mémoire globale du système. Nous pouvons voir notre utilisation actuelle de la mémoire et de l’échange (en mégaoctets) en tapant:

free -m
            total       used       free     shared    buffers     cached
Mem:          3953        315       3637          8         11        107
-/+ buffers/cache:        196       3756
         0       4095

Comme vous pouvez le constater, notre espace d’échange total dans le système est égal à 0. Cela correspond à ce que nous avons vu avec + swapon +.

Vérifier l’espace de stockage disponible

Le moyen typique d’allouer de l’espace pour le swap consiste à utiliser une partition distincte dédiée à la tâche. Toutefois, la modification du schéma de partition n’est pas toujours possible en raison de contraintes matérielles ou logicielles. Heureusement, nous pouvons tout aussi facilement créer un fichier d’échange résidant sur une partition existante.

Avant de faire cela, nous devrions être conscients de notre utilisation actuelle du lecteur. Nous pouvons obtenir cette information en tapant:

df -h
Filesystem      Size  Used Avail Use% Mounted on

devtmpfs        2.0G     0  2.0G   0% /dev
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           2.0G  8.3M  2.0G   1% /run
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
  • Remarque: * le drapeau + -h + indique simplement + dh + pour afficher les informations sur le lecteur dans un format de lecture convivial. Par exemple, au lieu de générer le nombre brut de blocs de mémoire dans une partition, + df -h + nous indiquera l’utilisation de l’espace et la disponibilité en M (pour les mégaoctets) ou en G (pour les gigaoctets).

Comme vous pouvez le constater sur la première ligne, notre partition de stockage dispose de 59 Go, ce qui nous laisse un peu d’espace de travail. N’oubliez pas qu’il s’agit d’une instance VPS récente de taille moyenne. Votre utilisation réelle peut donc être très différente.

Bien qu’il existe de nombreuses opinions sur la taille appropriée d’un espace d’échange, cela dépend vraiment des exigences de votre application et de vos préférences personnelles. En règle générale, une quantité égale ou double de la quantité de mémoire de votre système constitue un bon point de départ.

Étant donné que mon système dispose de 4 gigaoctets de mémoire et que doubler cela prendrait une plus grande partie de mon espace de stockage que celui que je suis prêt à céder, je vais créer un espace d’échange de 4 gigaoctets correspondant à la mémoire de mon système.

Créer un fichier d’échange

Maintenant que nous connaissons notre espace de stockage disponible, nous pouvons créer un fichier d’échange au sein de notre système de fichiers. Nous allons créer un fichier nommé + swapfile + dans notre répertoire racine (+ / +), bien que vous puissiez nommer le fichier autrement si vous préférez. Le fichier doit allouer la quantité d’espace souhaitée pour notre fichier d’échange.

Le moyen le plus rapide et le plus simple de créer un fichier d’échange consiste à utiliser + fallocate +. Cette commande crée instantanément un fichier de taille préallouée. Nous pouvons créer un fichier de 4 gigaoctets en tapant:

sudo fallocate -l

Après avoir entré votre mot de passe pour autoriser les privilèges sudo +, le fichier d’échange sera créé presque instantanément et l’invite vous sera renvoyée. Nous pouvons vérifier que la quantité correcte d’espace était réservée au swap en utilisant + ls +:

ls -lh
-rw-r--r-- 1 root root  Oct 30 11:00

Comme vous pouvez le constater, notre fichier d’échange a été créé avec la quantité correcte d’espace réservée.

Activer un fichier d’échange

À l’heure actuelle, notre fichier est créé, mais notre système ne sait pas qu’il est censé être utilisé pour un échange. Nous devons dire à notre système de formater ce fichier en tant que fichier d’échange, puis de l’activer.

Avant cela, nous devons ajuster les autorisations sur notre fichier d’échange afin qu’il ne soit pas lisible par quelqu’un d’autre que le compte root. Autoriser d’autres utilisateurs à lire ou à écrire dans ce fichier constituerait un risque énorme pour la sécurité. Nous pouvons verrouiller les permissions avec + chmod:

sudo chmod 600

Cela limitera les autorisations de lecture et d’écriture sur le compte root uniquement. Nous pouvons vérifier que le fichier d’échange dispose des autorisations appropriées en utilisant à nouveau + ls -lh +:

ls -lh
-rw------- 1 root root  Oct 30 11:00

Maintenant que notre fichier d’échange est plus sécurisé, nous pouvons dire à notre système de configurer l’espace d’échange à utiliser en tapant:

sudo mkswap
Setting up swapspace version 1, size =  KiB
no label, UUID=b99230bb-21af-47bc-8c37-de41129c39bf

Notre fichier d’échange est maintenant prêt à être utilisé comme espace d’échange. Nous pouvons commencer à l’utiliser en tapant:

sudo swapon

Pour vérifier que la procédure a abouti, nous pouvons vérifier si notre système signale maintenant l’espace de swap:

swapon -s
Filename                Type        Size    Used    Priority
              file         0     -1

Cette sortie confirme que nous avons un nouveau fichier d’échange. Nous pouvons utiliser l’utilitaire + free + à nouveau pour corroborer nos conclusions:

free -m
            total       used       free     shared    buffers     cached
Mem:          3953        315       3637          8         11        107
-/+ buffers/cache:        196       3756
         0       4095

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

Rendre le fichier d’échange permanent

Notre fichier d’échange est activé pour le moment, mais lors du redémarrage, le serveur ne l’activera pas automatiquement. Nous pouvons changer cela en modifiant le fichier + fstab +, qui est une table qui gère les systèmes de fichiers et les partitions.

Editez le fichier avec les privilèges + sudo + dans votre éditeur de texte:

sudo nano /etc/fstab

Au bas du fichier, vous devez ajouter une ligne qui indiquera au système d’exploitation d’utiliser automatiquement le fichier d’échange créé:

  swap    swap    sw  0   0

Lorsque vous avez terminé d’ajouter la ligne, vous pouvez enregistrer et fermer le fichier. Le serveur vérifiera ce fichier à chaque démarrage, de sorte que le fichier d’échange sera prêt à être utilisé à partir de maintenant.

Tweak Your Swap Settings (Facultatif)

Il existe quelques options que vous pouvez configurer qui auront une incidence sur les performances de votre système lors de la conversion. Ces configurations sont facultatives dans la plupart des cas et les modifications que vous apporterez dépendront des besoins de votre application et de vos préférences personnelles.

Swappiness

Le paramètre + swappiness + détermine la fréquence à laquelle votre système échange les données de mémoire insuffisante vers l’espace de permutation. Cette valeur, comprise entre 0 et 100, représente le pourcentage d’utilisation de la mémoire qui déclenchera l’utilisation de l’échange.

Avec des valeurs proches de zéro, le système n’échangera pas de données sur le lecteur, 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 sont beaucoup plus lentes que les interactions avec la mémoire, et cette différence de vitesse de lecture et d’écriture peut entraîner une réduction significative des performances d’une application. Dire au système de ne pas compter autant sur l’échange rendra généralement votre système plus rapidement.

Les valeurs proches de 100 essaieront de convertir davantage de données en données afin de libérer davantage de mémoire. En fonction du profil de mémoire de vos applications ou de l’utilisation que vous faites de votre serveur, cela peut constituer le meilleur choix dans certains cas.

Nous pouvons voir la valeur actuelle de swappiness en lisant le fichier de configuration + swappiness +:

cat /proc/sys/vm/swappiness
30

CentOS 7 utilise par défaut le paramètre swappiness de 30, ce qui constitue un juste milieu pour la plupart des ordinateurs de bureau et des serveurs locaux. Pour un système VPS, nous voudrions probablement 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=
vm.swappiness =

Ce paramètre persistera jusqu’au prochain redémarrage. Pour que le paramètre persiste entre les redémarrages, nous pouvons ajouter la ligne sortie à notre fichier de configuration + sysctl +:

sudo nano /etc/sysctl.conf

Ajoutez votre paramètre swappiness au bas du fichier:

vm.swappiness =

Lorsque vous avez terminé d’ajouter la ligne, vous pouvez enregistrer et fermer le fichier. Le serveur va maintenant régler automatiquement le swappiness sur la valeur que vous avez déclarée à chaque démarrage.

Cache Pression

Une autre valeur connexe que vous voudrez peut-être modifier est le + vfs_cache_pressure +. Ce paramètre affecte le stockage des entrées de métadonnées spéciales du système de fichiers. Il est généralement très coûteux de lire et d’actualiser constamment ces informations. Par conséquent, leur stockage sur le cache plus longtemps est excellent pour les performances de votre système.

Vous pouvez voir la valeur actuelle de cette pression de cache en interrogeant à nouveau le système de fichiers + proc +:

cat /proc/sys/vm/vfs_cache_pressure
100

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

sudo sysctl vm.vfs_cache_pressure=
vm.vfs_cache_pressure =

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:

vm.vfs_cache_pressure =

Lorsque vous avez terminé d’ajouter la ligne, vous pouvez enregistrer et fermer le fichier. Le serveur va maintenant définir automatiquement la pression du cache sur la valeur que vous avez déclarée à chaque démarrage.

Conclusion

En suivant les étapes de ce guide, vous aurez donné à votre serveur une marge de manœuvre en termes d’utilisation de la mémoire. L’échange d’espace est extrêmement utile pour éviter certains problèmes courants.

Si vous rencontrez des erreurs de mémoire MOO (insuffisance de mémoire) ou si vous constatez que votre système ne peut pas utiliser les applications dont vous avez besoin, la meilleure solution consiste à optimiser les configurations de vos applications ou à mettre à niveau votre serveur. Cependant, la configuration de l’espace de swap peut vous donner plus de flexibilité et vous aider à gagner du temps sur un serveur moins puissant.