97 votes

Meilleure façon de désactiver le swap sous Linux

Je fais fonctionner un noyau 3.18.9 compilé sur mesure et je me demande quelle est la meilleure façon de désactiver le swap sur le système. J'utilise également init si cela fait une différence.

Est-il suffisant de commenter ou de supprimer la ligne de swap dans /etc/fstab pour empêcher le swap de fonctionner/se monter au démarrage, ou devrais-je recompiler le noyau sans Support du paging de la mémoire anonyme (swap) pour m'assurer à 100% qu'il ne sera pas activé?

Je fais fonctionner des partitions chiffrées et je veux éviter toute fuite accidentelle vers le disque dur. Mes spécifications système sont également suffisamment bonnes pour que je puisse survivre dans un environnement sans swap.

0 votes

Pourquoi votre échange n'est-il pas crypté ?

0 votes

@MichaelHampton Je n'ai pas vu la nécessité à ce moment-là jusqu'à ce que je réalise ce qui allait finalement se produire. De plus, mon système n'atteint à aucun moment où le swap était utilisé, donc je pense être libre de le supprimer.

1 votes

Je supprimerais alors la fonctionnalité du noyau. Sinon, quelqu'un pourrait brancher une clé USB et recommencer à y échanger des données.

137voto

Aaron Copley Points 12225
  1. Identifier les dispositifs et fichiers d'échange configurés avec cat /proc/swaps.
  2. Désactivez tous les dispositifs et fichiers d'échange avec swapoff -a.
  3. Supprimez toute référence correspondante trouvée dans /etc/fstab.
  4. Facultatif : Détruisez tout dispositif ou fichier d'échange trouvé à l'étape 1 pour éviter leur réutilisation. En raison de vos préoccupations concernant la divulgation d'informations sensibles, vous pouvez envisager d'effectuer une sorte d'effacement sécurisé.

man swapoff

3 votes

Sur certains systèmes, vous devez également reconstruire l'archive initrd, par exemple avec dracut --regenerate-all --force ou mkinitrd, sinon le système ne démarrera pas. Merci à J.O. Aho et Carlos E.R. sur alt.os.linux.suse.

0 votes

Quelque chose le long de sudo sed -i '/\tswap\t/d' /etc/fstab pour automatiser cela.

1 votes

Cela ne résout pas le problème pour moi, le système démarre à chaque fois avec le swap activé, même s'il n'y a pas d'entrée fstab pour cela. C'est incroyablement ennuyeux.

18voto

Gregor Points 456

Il fut un temps où seules les partitions d'échange dans /etc/fstab étaient utilisées automatiquement, cependant, systemd pourrait changer légèrement cela. Vous pourriez avoir besoin de faire :

systemctl mask dev-sdXX.swap

(changer sdXX) pour votre vraie partition d'échange formatée, ce qui soulève la question de pourquoi vous avez une partition d'échange si vous ne voulez pas qu'elle soit utilisée...

Si vous n'utilisez pas systemd, alors supprimer les entrées d'échange de /etc/fstab devrait suffire (autant que je sache).

Peut-être que la vraie solution est de se débarrasser des partitions d'échange, donc elles ne seront pas utilisées accidentellement. Pour supprimer les partitions d'échange, j'utiliserais fdisk pour changer le type de partition de swap à quelque chose d'autre, puis reformater la partition ou utiliser : dd if=/dev/zero of=/dev/ancienne-partition-d'échange pour la mettre à zéro et empêcher son utilisation.

Voir aussi Configurer l'utilisation de la partition d'échange avec systemd.

1 votes

Je continue d'utiliser init via openRC, j'ai délibérément supprimé systemd de l'installation. En ce qui concerne la question du swap, j'étais en train de faire une installation normale jusqu'à ce que je prenne la décision d'utiliser cryptsetup/luks pour monter des fichiers chiffrés formatés en ext4 par-dessus mon système de fichiers. Si vous pouviez avoir la gentillesse d'aborder la façon de désactiver le swap lors de l'utilisation d'init, je vous en serais reconnaissant.

0 votes

Aussi, cela pourrait être systemctl masquer swapfile.swap.

0 votes

Supprimer le fichier /etc/fstab n'est malheureusement pas suffisant. Il a été désactivé pendant des années sur mon système, et pourtant à chaque démarrage de Debian, le swap se met en route. Systemctl m'énerve, il fait ce qu'il veut en ignorant les fichiers du système d'exploitation.

14voto

shodanshok Points 42743

Si vous êtes vraiment sûr de vouloir désactiver le swap (note : ce n'est pas recommandé, même si vous êtes certain que la RAM physique est plus que suffisante), suivez ces étapes :

  1. exécutez swapoff -a : cela désactivera immédiatement le swap
  2. supprimez toute entrée de swap dans /etc/fstab
  3. reboot le système. Si le swap a disparu, c'est parfait. Si, pour une raison quelconque, il est toujours là, vous devez retirer la partition de swap. Répétez les étapes 1 et 2, puis utilisez fdisk ou parted pour supprimer la partition de swap (désormais inutilisée). Soyez très prudent ici : supprimer la mauvaise partition aura des effets désastreux !
  4. reboot

1 votes

Pourquoi n'est-il pas recommandé de désactiver le swap même si vous avez suffisamment de RAM ?

3 votes

Parce que Linux utilise proactivement la partition swap pour libérer plus de mémoire pour le caching. Cela peut améliorer les performances. Quoi qu'il en soit, c'est un paramètre ajustable. Pour plus d'informations, lisez ici. De plus, une augmentation soudaine de l'allocation de mémoire dans un système sans swap peut déclencher le tueur OOM du noyau.

3 votes

Merci, c'est raisonnable. Néanmoins, je pensais que si "assez de ram" (par exemple: 8 ou 16 Go) est plein, alors il est probable qu'il s'agisse d'une sorte de situation exceptionnelle (application avec une fuite de mémoire ou un autre problème incontrôlé, attaque DDOS, etc.) auquel cas, même le swap serait éventuellement dépassé de toute façon. Peut-être que je ne fais pas un argument très convaincant cependant cela ne devrait pas se produire dans une utilisation de bureau légère.

7voto

Michaël GENAY Points 61

Sous Raspbian 10 (Buster), la réponse propre serait :

Pour le désactiver jusqu'au prochain redémarrage, comme indiqué dans */etc/fstab* :

sudo /sbin/dphys-swapfile swapoff

Pour désactiver le swap au démarrage :

sudo systemctl disable dphys-swapfile

(Il s'avère que je n'ai trouvé cette information nulle part...)

0 votes

Merci beaucoup. Je n'arrivais pas du tout à y arriver.

2voto

piotao Points 121

Sur ma boîte Linux Mint (version 19.3 (Tricia), basée sur Ubuntu 18.04 (Bionic Beaver)) sans partition d'échange ou sans aucun échange du tout, systemctl a signalé que swapfile.swap échouait à chaque démarrage. Il peut être désactivé avec la commande :

sudo systemctl disable swapfile.swap

Le swapfile.swap est une partie 'spéciale' de systemd, que vous pouvez lire dans le manuel en utilisant la commande man systemd.special.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X