Comment créer un fichier d’échange sous Linux

Ajoutez de l’espace d’échange à un ordinateur Linux ou augmentez l’espace d’échange déjà présent, sans vous soucier des partitions. Nous vous montrons le moyen le plus simple de personnaliser votre espace d’échange.

Échange de fichiers et permutation de partitions

Il existe plusieurs scénarios dans lesquels vous souhaiterez peut-être augmenter l’espace d’échange existant ou ajouter un nouvel espace d’échange à votre ordinateur Linux.

Peut-être que votre espace de swap fonctionne fréquemment au maximum ou presque au maximum.
Il est facile de cliquer sur la mauvaise option pendant le processus d’installation et de refuser l’ajout de swap à votre système par inadvertance.
Peut-être avez-vous déjà décidé que vous aviez tellement mémoire vive (RAM) vous n’avez pas besoin de swap et vous avez changé d’avis.
Parfois, vous héritez de l’administration d’un système qui n’a pas de swap, pour des raisons que vous ne pourrez jamais découvrir.

La solution simple à tout cela est d’ajouter un swap file sur votre ordinateur. Il s’agit d’un fichier spécial, pré-alloué et réservé pour une utilisation comme espace d’échange. Un fichier d’échange fonctionnera en tandem avec n’importe quel échange existant que vous pourriez avoir, qu’il s’agisse d’un fichier d’échange ou d’une partition d’échange.

À un moment donné, l’utilisation d’un fichier d’échange par rapport à une partition d’échange a eu un impact négatif sur les performances. Ce n’est plus le cas avec les améliorations des performances des disques durs mécaniques (rotatifs) et plus d’efficacité dans les fonctions d’échange au sein du système d’exploitation Linux. En fait, certaines distributions Linux créent désormais par défaut des fichiers d’échange plutôt que des partitions d’échange.

Swap n’est pas seulement utilisé comme un moyen de libérer de la RAM lorsque vous manquez de mémoire. C’est un élément important d’un système qui fonctionne bien. Sans aucun échange, une gestion saine de la mémoire devient très difficile pour le noyau. Regardons la manière simple d’ajouter de l’espace d’échange.

Avant de plonger: Btrfs et SSD

Il y a deux points dont nous aimerions discuter rapidement.

le Système de fichiers BTRFS a certaines mises en garde concernant les fichiers d’échange. À un moment donné, il y avait un conflit entre le copie sur écriture nature de Btrfs, qui voulait fonctionner d’une manière et échanger des fichiers qui devaient fonctionner d’une autre. Certaines fonctions dont dépendent les fichiers d’échange n’ont pas été implémentées, et certaines hypothèses concernant la numérotation des blocs dans les fichiers d’échange ne sont pas valables avec Btrfs. Les fichiers d’échange n’étaient donc pas pris en charge.

Depuis le noyau 5.0, vous peut avoir des fichiers d’échange dans les systèmes de fichiers Btrfs s’ils sont configurés avec les exigences suivantes:

Pas de fichiers de copie sur écriture (NOCOW).
Ils ne sont pas compressés.
Ils ne chevauchent pas différents disques durs.

La plupart des lecteurs utiliseront le système de fichiers ext4 par défaut, ce ne sera donc pas un problème pour eux.

Lorsque les disques SSD (Solid State Drives) ont été disponibles pour la première fois, leur utilisation dans des situations où les écritures du système de fichiers étaient fréquentes était préoccupante. Les gens ont été avertis de ne pas mettre d’espace de swap sur les disques SSD, et même d’éviter la journalisation du système sur les disques SSD.

  Comment installer facilement des applications avec le gestionnaire de packages de Windows 10 (à l'aide de winstall)

C’est beaucoup moins préoccupant de nos jours, et de nombreux disques SSD en vente ont une espérance de vie supérieure à la plupart des PC. Un fichier d’échange sur un SSD aura de bien meilleures performances qu’une partition d’échange sur un disque dur mécanique.

Vérification de l’espace de swap existant

Réfléchir avant d’agir. Vérifions quel espace de swap est disponible sur votre ordinateur. Vous pouvez le faire de deux manières et nous utiliserons les deux. La commande free affichera la mémoire utilisée et libre. L’option -h (lisible par l’homme) entraînera la libre utilisation des unités sensibles lors de l’affichage des valeurs de mémoire.

free -h

fre -h dans une fenêtre de terminal

La sortie de free montre qu’il n’y a pas d’espace de swap configuré sur cette machine.

Le swap n’est jamais discuté sans RAM et RAM libre. Il convient donc de noter que la RAM libre est de 237 Mo. Ne confondez pas cela avec le total de RAM disponible. Cette valeur est fournie par le chiffre «disponible», qui est de 881 Mo.

Linux utilise de la RAM libre à ses propres fins, telles que la mise en cache de fichiers et les tampons du noyau. La quantité de RAM dédiée à cela est le chiffre «buff / cache», qui est de 871 Mo. Mais cette mémoire est toujours considérée – et comptée comme – «disponible». Le contenu de la RAM «buf / cache» peut être immédiatement éliminé et utilisé par toute application nécessitant de la mémoire.

Une autre façon de vérifier si l’espace d’échange est disponible consiste à utiliser la commande swapon. L’option –show ne fait aucun les modifications apportées au swap sur votre ordinateur. Il ne fournit que des statistiques.

swapon --show

swapon - afficher dans une fenêtre de terminal

S’il n’y a pas de sortie de cette commande, aucun échange n’est configuré.

Si ces commandes avaient révélé qu’un espace d’échange est déjà configuré, la taille de l’espace d’échange existant doit être prise en compte dans les décisions concernant la taille du fichier d’échange que vous allez créer.

De combien d’espace de swap ai-je besoin?

La réponse traditionnelle était «deux fois la quantité de RAM dont vous disposez». Mais cela a été inventé lorsque les ordinateurs avaient une RAM très limitée. La RAM étant devenue moins chère et les programmes et les jeux plus exigeants en mémoire, les spécifications du PC se sont adaptées en conséquence. Les ordinateurs personnels avec 32 Go de RAM ne sont pas rares de nos jours. Et vous n’allez pas allouer 64 Go d’espace disque dur pour swap si vous disposez de 32 Go de RAM. C’est manifestement excessif.

Le montant de swap dont vous avez besoin est un sujet incendiaire, comparable à «quel est le meilleur éditeur». L’une des discussions les plus sensées que nous ayons vues sur ce sujet se trouve dans le FAQ sur l’échange Ubuntu. C’est une approche courte et de bon sens (bien que, comme beaucoup de gens, ils comprennent mal le fonctionnement de la permutation sous Linux). Il existe un tableau pratique qui indique la quantité d’espace de swap recommandée pour la quantité de RAM dont dispose votre système et si vous mettez votre ordinateur en veille prolongée ou non.

  Comment créer un serveur de sauvegarde Dropbox sous Linux

Et la bonne nouvelle est que peu importe la valeur que vous choisissez. Nous pouvons toujours supprimer un fichier d’échange et le remplacer par un plus gros ou, d’ailleurs, un plus petit. Ou vous pouvez simplement ajouter un autre fichier d’échange.

Choisir une taille de fichier d’échange de la table, et exécutez-le pendant un moment. Surveillez l’utilisation de l’espace d’échange par votre système. Si un réglage fin est nécessaire, des modifications sont facilement apportées. Avec les fichiers d’échange, c’est un travail de deux minutes. Comparez cela à l’ajustement des partitions sur un ordinateur Linux en direct.

Création du fichier d’échange

Vous ne devriez pas utiliser la commande fallocate pour créer votre swapfile. Ceci provient de la page de manuel de swapon:

The swap file implementation in the kernel expects to be able to write to
the file directly, without the assistance of the file system. 

This is a problem on files with holes or on copy-on-write files on file 
systems like Btrfs. Commands like cp(1) or truncate(1) create files with 
holes. These files will be rejected by swapon. 

Preallocated files created by fallocate(1) may be interpreted as files 
with holes too depending of the filesystem. Preallocated swap files are 
supported on XFS since Linux 4.18. 

The most portable solution to create a swap file is to use dd(1) and 
/dev/zero.

Donc, bien que fallocate soit plus rapide, nous utiliserons dd pour créer le fichier d’échange. La machine utilisée pour rechercher cet article dispose de deux Go de RAM. Nous allons créer un fichier d’échange d’un Go.

Les options sont:

if: Le fichier d’entrée. Dans cet exemple, nous utilisons / dev / zero qui fournira un flux de zéro octet.
of: Le fichier de sortie. Nous allons créer un fichier dans le répertoire racine, appelé swapfile.
bs: la taille du bloc en octets. Ceci spécifie le nombre d’octets à lire à partir du fichier d’entrée et à écrire dans le fichier de sortie, à la fois.
count: le nombre de blocs à lire et à écrire. Multipliez ce nombre par la valeur bs pour obtenir la taille du fichier.

sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576

sudo dd if = / dev / zero of = / swapfile bs = 1024 count = 1048576 dans une fenêtre de terminal

Certaines statistiques sont fournies lors de la création du fichier.

sortie de sudo dd if = / dev / zero of = / swapfile bs = 1024 count = 1048576 dans une fenêtre de terminal

Nous pouvons voir le nombre de blocs (enregistrements) qui ont été écrits dans le fichier, la taille du fichier, le temps nécessaire pour créer le fichier et le taux de transfert de données effectif.

Utilisez la commande ls pour voir le fichier dans le répertoire racine:

ls /

ls / dans une fenêtre de terminal

Préparation du fichier d’échange

Nous devons le faire préparer le fichier d’échange avec la commande mkswap avant de pouvoir l’utiliser. Nous n’avons pas besoin de fournir de paramètres à mkswap autres que le chemin et le nom du fichier:

sudo mkswap /swapfile

sudo mkswap / swapfile dans une fenêtre de terminal

Le fichier est préparé pour être utilisé comme fichier d’échange. Notez l’avertissement concernant les autorisations de fichier. Nous devrons les changer pour que l’utilisateur root soit le seul à pouvoir lire et écrire dans le fichier d’échange.

Utilisation du fichier d’échange

Les permissions par défaut sont trop libérales, nous devons les restreindre pour que seul root puisse utiliser le fichier d’échange. Utilisez chmod pour modifier les autorisations du fichier:

sudo chmod 600 /swapfile

sudo chmod 600 / swapfile dans une fenêtre de terminal

Cela supprime toutes les autorisations des membres du groupe de fichiers et autres, mais permet au propriétaire du fichier, root, de lire et d’écrire dans le fichier.

Nous devons utiliser la commande swapon pour informer Linux qu’il existe un nouveau fichier d’échange disponible à utiliser. Il suffit de fournir le chemin et le nom du fichier:

sudo swapon /swapfile

sudo swapon / swapfile dans une fenêtre de terminal

Le fichier d’échange est maintenant actif.

  Comment écouter Apple Music sur votre bureau

Ajout du fichier d’échange à fstab

Pour vous assurer que votre fichier d’échange est disponible après un redémarrage, ajoutez-le au fichier / etc / fstab. Vous pouvez utiliser n’importe quel éditeur de texte que vous préférez, mais nous montrerons le processus à l’aide de l’éditeur de texte graphique Gedit.

sudo gedit /etc/fstab

sudo gedt / etc / fstab dans une fenêtre de terminal

La ligne que nous devons ajouter au bas du fichier est:

/swapfile    none    swap    sw    0    0

/ etc / fstab avec l'entrée du fichier d'échange en surbrillance

Les champs sont:

Système de fichiers: chemin et nom du fichier d’échange.
Point de montage: le fichier n’est pas monté comme un système de fichiers, donc l’entrée est «aucun».
Type: il s’agit de «swap».
Options: Au démarrage, swapon -a (démarrer tous les périphériques marqués comme swap) sera appelé depuis l’un des scripts de démarrage. Cette option indique à Linux de traiter cette entrée comme une ressource d’échange qui devrait passer sous le contrôle de cette commande swapon -a. Il est courant de voir des «valeurs par défaut» utilisées ici parce qu’il y a une croyance erronée parmi certains utilisateurs de Linux que ce champ est ignoré. Comme nous le verrons, ce n’est pas le cas. Il est donc logique d’utiliser la bonne option.
Dump: Cela peut être mis à zéro. Ce n’est pas pertinent dans ce cas.
Réussite: cela peut être mis à zéro. Ce n’est pas pertinent dans ce cas.

Enregistrez les modifications et fermez l’éditeur.

Vérification de l’utilisation du swap

Pour voir si votre espace d’échange est utilisé, utilisez la commande swapon avec l’option –show:

swapon --show

swapon - afficher dans une fenêtre de terminal

Les colonnes sont:

Nom: nom de la partition d’échange ou du fichier d’échange.
Type: le type de périphérique d’échange.
Taille: taille de la ressource d’échange.
Utilisé: la quantité d’espace de swap utilisé.
Prio: La priorité de cet espace d’échange.

La priorité Swap Space

Chaque espace de swap se voit attribuer une priorité. Si vous n’en fournissez pas, un est automatiquement attribué. Les priorités attribuées automatiquement sont toujours négatives. La plage de priorités pouvant être allouées manuellement est comprise entre 0 et 32767. Les ressources d’échange avec des priorités plus élevées sont utilisées en premier.

Si plusieurs espaces de swap ont la même priorité, ils sont utilisés en alternance jusqu’à ce qu’ils soient tous les deux pleins, alors le système recherche l’espace de swap avec la priorité la plus basse suivante. Si vous ne disposez que d’un seul espace de swap, la priorité n’a bien sûr pas d’importance. Mais nous allons changer la priorité du fichier d’échange que nous avons créé pour montrer comment le faire.

Pour définir une priorité, ajoutez l’option pri = (priority) à l’entrée / etc / fstab. Modifiez la ligne que vous avez ajoutée à / etc / fstab pour qu’elle ressemble à ceci:

/swapfile    none    swap    sw,pri=10    0    0

Autrement dit, ajoutez pri = 10 dans le champ d’options, séparé du «sw» par une virgule. Ne laissez aucun espace entre le «sw», la virgule et le «pri = 10». Redémarrez votre ordinateur et utilisez la commande swapon –show:

swapon -- show

swapon - afficher dans une fenêtre de terminal

La priorité de cet espace d’échange a été élevée à 10. Ce qui est la preuve que le champ d’options de l’entrée / etc / fstab n’est pas ignoré.

Espace d’échange simplifié

En passant par l’exposition et l’explication, nous pouvons créer un nouveau fichier d’échange aussi facilement et rapidement que ceci:

sudo dd if=/dev/zero /of=/swapfile2 bs=1024 count=104857
sudo mkswap /swapfile2
sudo chmod 600 /swapfile2
sudo swapon /swapfile2

Et vérifions que cela a fonctionné:

swapon --show

sudo dd if = / dev / zero / of = / swapfile2 bs = 1024 count = 104857 dans une fenêtre de terminal

Si vous souhaitez effectuer cette suppression permanente, placez-la dans votre fichier / etc / fstab.

Boom. Travail accompli.