95 votes

Comment puis-je désactiver le swap de façon permanente ?

Swap rend mon système très lent et le désactiver rend tout plus fluide. J'ai 3,5 Go de RAM.

Je sais comment désactiver le swap en entrant sudo swapoff -a dans le terminal, mais c'est seulement pour la session en cours, car après un redémarrage, swap se rallume. Existe-t-il un moyen de désactiver l'échange de façon permanente ?

138voto

Stewart Points 1385

Puis-je suggérer une approche plus sûre ? On ne sait jamais quand l'échange peut vous éviter de tomber en panne. Si l'échange ralentit effectivement votre ordinateur, si vous utilisez un programme qui consomme toute votre RAM, la possibilité d'échanger des données peut vous éviter un redémarrage brutal. Lorsque l'ordinateur commence à permuter, vous le remarquerez et serez en mesure de tuer l'application incriminée.

Donc, au lieu de désactiver complètement le swap, assurez-vous que votre système d'exploitation permute très rarement. Ceci est contrôlé par le vm.swappiness à l'intérieur /etc/sysctl.conf . Le paramètre par défaut d'Ubuntu est 60 si je me souviens bien, ce qui est trop pour la plupart des situations et vous fera commencer à échanger des données même si la RAM est encore disponible. Si vous réduisez cette valeur, vous serez en mesure de garder la ligne de sécurité du swap tout en ne l'utilisant que pour les urgences. Donc, ouvrez le fichier :

sudo nano /etc/sysctl.conf

Et ajoutez-y cette ligne :

vm.swappiness=10

Si c'est encore trop, passez de 10 à 1. Maintenant, après le redémarrage, vous n'échangerez que lorsque cela sera absolument nécessaire et vous pourrez simplement l'oublier.

54voto

Jerron Points 258

Trouvez la ligne dans /etc/fstab faisant référence à swap, et commentez-la. La mienne est comme ceci :

UUID=6880a28d-a9dc-4bfb-ba47-0876b50e96b3 /               ext4    errors=remount-ro 0       1
UUID=7350e6f2-e3a7-4d80-9a95-8741c7db118f /home           ext4    defaults        0       2
UUID=E2E26AD1E26AAA0D /media/windows  ntfs    defaults,umask=007,gid=46 0       0

# Swap a usb extern (3.7 GB):
#/dev/sdb1 none swap sw 0 0

Vous pouvez éditer ce fichier avec gedit. Sauvegardez-le d'abord, juste au cas où :

sudo cp /etc/fstab /etc/fstab_backup
gksu gedit /etc/fstab

Ajoutez simplement # au début de la ligne où se trouve swap, et redémarrez l'ordinateur.

OU

Essayez de commenter l'entrée swap en ligne de commande dans /etc/fstab fichier,

sudo sed -i.bak '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

33voto

DiTime4Tea Points 237

Faux si systemd trouve une partition SWAP sur un disque, il la montera automatiquement. Il est étrange que personne n'ait mentionné systemd. La solution est assez simple de toute façon ; pour désactiver définitivement le swap vous devez :

  1. swapoff -a
  2. modifier /etc/fstab et commenter toute entrée de swap si (il se peut que vous puissiez sauter cette étape 2, et l'étape 3 sans l'étape 2 peut vous convenir).
  3. courir : sudo systemctl mask "dev-sdXX.swap" (où XX est le partition swap. Note Si le nom de l'unité contient des caractères d'échappement ou des barres obliques inversées, vous devez utiliser des guillemets autour du nom de l'unité. Il est également utile de le faire pour toutes les partitions possibles afin que de sorte que s'il y a une partition swap sur un autre lecteur, elle ne sera pas montée. montée).

Paix à vous.

17voto

mdalacu Points 600

Supprimez simplement l'entrée (ou commentez-la en utilisant # devant la ligne) de fstab et redémarrez. Recherchez la ligne contenant le mot "swap".

sudo nano /etc/fstab

3voto

RodolfoAP Points 131

Complément d'information La réponse de Zibri :

  • swapoff -a désactivera temporairement tous les swaps.
  • Si vous avez des échanges dans /etc/fstab il suffit de les commenter et de redémarrer.
  • Dans mon cas (OdroidMC1+Armbian), le swap est contrôlé par systemctl. Pour trouver le responsable, utilisez systemctl --type swap .

Exemple :

# systemctl --type swap

UNIT           LOAD   ACTIVE SUB    DESCRIPTION                                                                                                                                                                     
dev-zram1.swap loaded active active /dev/zram1                                                                                                                                                                      

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

1 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.
  • Désactiver par mask l'ingérer avec sysctl :

    systemctl mask dev-zram1.swap

    Created symlink /etc/systemd/system/dev-zram1.swap /dev/null.

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