Comment désactiver en toute sécurité le swap de façon permanente et récupérer l'espace? (sur Debian Jessie)

48

J'ai installé Debian Jessie avec un partitionnement par défaut sur mon lecteur SSD. Mon partitionnement actuel du disque ressemble à ceci:

Mon partitionnement actuel du disque ressemble à ceci

Comme j'ai 16 Go de RAM, je suppose que je n'ai pas besoin d' échange . Mais comme j'ai d'autres lecteurs de disque, je peux créer un fichier d' échange, par exemple, sur l'un des autres lecteurs.

Pouvez-vous me dire quelles mesures je devrais prendre pour supprimer la partition de swap correctement et de manière permanente afin qu'elle ne occupe pas d'espace disque ? Je souhaite supprimer la partition de swap car je n'ai actuellement qu'un SSD de 128 Go.

Voici ce que j'ai essayé et redémarré à chaque fois; chacune de ces étapes n'étant pas permanente ou n'ayant rien fait :

  1. En utilisant l' swapoffutilitaire:

    swapoff --all
    
  2. Utilisation de l' utilitaire GParted :

    Cliquez avec le bouton droit sur la partition de swap, puis sur Swapoff.

  3. Commenter l' UUID de la partition de swap dans le fichier suivant:

    /etc/fstab
    
  4. Commenter l' UUID de la partition de swap dans le fichier suivant:

    /etc/initramfs-tools/conf.d/resume
    
  5. En exécutant ces commandes à la fin (dans cet ordre et dans l'ordre inverse):

    update-grub
    
    update-initramfs -u
    
LinuxSecurityFreak
la source
1
Swapoff désactive uniquement l'échange du système en cours d'exécution. Pour le rendre permanent, vous devez le combiner avec la suppression de l'entrée correspondante /etc/fstab. Une fois que cela est fait, le swap devrait être désactivé et ne pas revenir au prochain démarrage. Vous devez maintenant modifier la table de partition et étendre votre système de fichiers principal si vous souhaitez récupérer l'espace inutilisé. Voir ma réponse pour des instructions détaillées.
André Borie
@ burian.vlastimil pouvez-vous poster l'intégralité de votre /etc/fstab?
André Borie
@ burian.vlastimil Modifiez-le dans votre question, car les commentaires ne conservent pas les sauts de ligne. Vos modifications dans le fstab persistent-elles après le redémarrage ou la ligne de swap n'est-elle pas commentée?
André Borie
1
Si je peux me permettre de répondre à cette question, le but de swap est de supprimer les pages inutilisées et de protéger le système contre le manque de mémoire. Ainsi, comme SnakeDoc l’a suggéré, avoir 512 Mo de swap est toujours bon. Personnellement, j'ai un disque SSD sans partition d'échange, mais plutôt un fichier d'échange dans mon répertoire /. Si vous choisissez de le faire, utilisez ce tutoriel pour créer le fichier. En ce qui concerne la partition swap, vous pouvez démarrer live usb et utiliser gparted pour supprimer cette partition. Assurez-vous de mettre à jour grub, cependant.
Sergiy Kolodyazhnyy
4
@ SnakeDoc - vous n'obtiendrez généralement pas une panique du noyau, le gestionnaire de MOO démarrera et éliminera les processus pour libérer de la mémoire (et il est généralement très utile de choisir le (s) quel (s) tuer (s), en donnant généralement la préférence de tuer des processus plus importants et plus récents). Je gère un grand nombre de serveurs sans échange configurés pour paniquer sur le MOO au lieu de tuer des processus, car les serveurs sont configurés de manière à ne jamais manquer de mémoire. S'ils le font, ils doivent paniquer et redémarrer plutôt que d'être échangés. et ralentir (ou laisser le gestionnaire de MOO décider des processus à tuer)
Johnny

Réponses:

47

Exécuter en tant que root:

# swapoff -a

Et pour rendre cette modification permanente, modifiez /etc/fstabet supprimez ou commentez l'entrée d'échange.

maxschlepzig
la source
@ burian.vlastimil, qu'entendez-vous par verrouillé? Vous pouvez vérifier qu'aucun périphérique de swap n'est en cours d'utilisation en regardant la première ligne du haut - il devrait indiquer «KiB Swap: 0 total». Vous pouvez également cat /proc/swaps- ce qui devrait simplement signaler une ligne d'en-tête. Si tel est le cas, vous pouvez supprimer la partition de swap en toute sécurité et agrandir une autre partition pour récupérer cet espace, si vous le souhaitez.
maxschlepzig
@ burian.vlastimil, le swap peut être activé par votre initramfs; vous devrez peut-être supprimer l’ resumeoption du noyau (qui fait référence à l’UUID de votre swap), c’est-à-dire mettre à jour grub et régénérer les initramfs (faites l’opposé de certaines des étapes de SwapFaq ).
maxschlepzig
@ burian.vlastimil, vous pouvez également grep votre configuration grub (sous /boot) pour cet uuid et vous pouvez décompresser votre initramsfs et grep son contenu pour en obtenir la cause fondamentale. Assurez-vous que vous faites un grep insensible à la casse.
maxschlepzig
2
il suffit de mettre swapoff -aen /etc/rc.local. ayant échange sur quelques millisecondes lorsque vous démarrez est pas question. avec 16 Go de RAM, rien n’y sera écrit pendant longtemps. laissez simplement l’espace de permutation là-bas (l’espace disque est bon marché) et ne changez pas /etc/fstab .
Skaperen
créer un fichier d'échange temporaire , vous pourrez alors récupérer de l'espace en le supprimant une fois que vous aurez désactivé l'échange
Skaperen
40
  1. Si vous avez ouvert GParted , fermez-le. Sa fonctionnalité Swapoff ne semble pas être permanente.

  2. Ouvrez le terminal et devenez root( su); si vous avez sudoactivé, vous pouvez également le faire par exemple sudo -i; voir man sudopour toutes les options):

    sudo -i
    
  3. Désactivez la partition de swap particulière et / ou tous les swap s:

    swapoff --all
    
  4. Assurez-vous à 100% que la partition de partition swap est désactivée:

    cat /proc/swaps
    
  5. Ouvrez un éditeur de texte avec ce fichier, par exemple en nanocas de doute:

    nano /etc/fstab
    
  6. Mettez en commentaire / supprimez l' UUID de la partition de swap , par exemple:

    # UUID=1d3c29bb-d730-4ad0-a659-45b25f60c37d    none    swap    sw    0    0
    
  7. Ouvrez un éditeur de texte avec ce fichier, par exemple en nanocas de doute:

    nano /etc/initramfs-tools/conf.d/resume
    
  8. Mettez en commentaire / supprimez l' UUID de la partition de swap précédemment identifiée , par exemple:

    # RESUME=UUID=1d3c29bb-d730-4ad0-a659-45b25f60c37d
    
  9. Ne fermez pas le terminal, vous en aurez de toute façon besoin plus tard.

Remarque: Les étapes suivantes diffèrent selon que vous vous fiez à la CLI ou à l' interface graphique .


GUI :

  1. Ouvrez GParted depuis le menu ou plus facilement depuis le terminal que nous avons ouvert:

    gparted
    
  2. Si vous ne l'avez pas installé, vous pouvez le faire; Ensuite, exécutez à nouveau la commande précédente:

    apt-get install gparted
    
  3. Choisissez votre lecteur dans le menu en haut à droite.

  4. Comme GParted réactive la partition de swap lors du lancement, vous devrez cliquer avec le bouton droit de la souris sur la partition de swap particulière, puis cliquer sur Swapoff -> Ceci sera appliqué immédiatement.

  5. Supprimez la partition de swap avec un clic droit -> Supprimer. Vous devez appliquer le changement maintenant.

  6. Redimensionnez votre partition principale / autre avec un clic droit -> Redimensionner / Déplacer. Vous devez appliquer le changement maintenant.

  7. De retour au terminal, recréons les images de démarrage :

    update-initramfs -u -k all
    
  8. Mettre à jour GRUB :

    update-grub
    
  9. Vous pouvez maintenant redémarrer si vous souhaitez vérifier que la machine s’amorce.


CLI :

Je vérifierai dans les ordinateurs virtuels si ma solution fonctionne, puis je la partagerai. En attendant, voir cette réponse .

LinuxSecurityFreak
la source
1
le plus complet, bien expliqué.
benzkji
Si vous rencontrez ensuite un démarrage lent avec le message suivant gave up waiting for suspend/resume device: Dans le fichier /etc/initramfs-tools/conf.d/resume, ne désactivez pas simplement la ligne, remplacez-la par RESUME=none. ( source )
tanius le
17

Commentez / supprimez l'entrée pertinente dans /etc/fstabpour éviter qu'elle ne soit réactivée au prochain démarrage, puis redémarrez ou exécutez swapoff -apour désactiver l'utilisation de la partition de swap pour le système en cours d'exécution.

Supprimez maintenant la partition de swap, étendez votre partition système sur cet espace inutilisé et étendez le système de fichiers actuel. Je ne sais pas si votre gestionnaire de partition graphique peut faire tout cela, mais s'il ne le peut pas, voici une façon distro-agnostique de le faire en utilisant fdisket resize2fs:

# fdisk /dev/sdX

# Display current partition table, copy/paste this output somewhere to be able to go back in case you screw up

Command (m for help): p
Device       Boot  Start    End Sectors Size Id Type
/dev/sda1        2048  22527   20480  10M ef EFI (FAT-12/16/32)
/dev/sda2       22528 186367  163840  80M 83 Linux
/dev/sda3      186368 204799   18432   9M 82 Linux swap / Solaris

# Delete the swap partition

Command (m for help): d
Partition number (1-3, default 3): 3
Partition 3 has been deleted.

# Delete the system partition

Command (m for help): d
Partition number (1,2, default 2): 2
Partition 2 has been deleted.

# Create a new system partition starting the same as the old one but ending a bit farther, at the end of the (now deleted) swap partition

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): 

Using default response p.
Partition number (2-4, default 2): 
# Enter the same start sector as the old part.
First sector (22528-204799, default 22528): 22528
# Enter the end sector of the old swap partition
Last sector, +sectors or +size{K,M,G,T,P} (22528-204799, default 204799): 204799

Created a new partition 2 of type 'Linux' and of size 89 MiB.

# Save the changes
Command (m for help): w
The partition table has been altered.

Enfin, nous étendons le système de fichiers actuel pour utiliser le nouvel espace disponible (jusqu'à présent, le système de fichiers lui-même ignorait que nous avions ajouté de l'espace supplémentaire à la partition sous-jacente). Par défaut, resize2fsutilise la totalité de la partition sauf si une taille fixe est spécifiée. Il est donc inutile de spécifier autre chose que le périphérique de bloc de partition. La croissance d'un système de fichiers (par opposition à la réduction) peut être réalisée en ligne avec la partition montée:

# resize2fs /dev/sda2

Vous avez maintenant désactivé le swap et récupéré l'espace inutilisé sans même redémarrer.

Notez que la procédure pour Debian est un peu différente et nécessite d’éditer quelques fichiers supplémentaires. Découvrez cette réponse pour plus d'informations.

André Borie
la source
Cela ne marche pas pour moi. J'ai eu 3 partitions. un pour / boot, un pour / et le swap. Lorsque j'essaie de créer la nouvelle partition, je ne peux créer qu'une partition de 16 Go: /
Freedo
Ajout, du moins pour les distributions basées sur Debian 9: il est nécessaire d’exécuter partprobeavant la resize2fscommande, sinon le noyau ne connaît pas la nouvelle table de partition et rien ne sera redimensionné.
tanius le
2

Cliquez avec le bouton droit sur la partition de swap dans GParted, puis cliquez sur Swapoff. Supprimez ensuite votre partition de swap, supprimez /etc/fstab-la et régénérez-la initramfset grub(éventuellement inutile).

La partition de swap ne doit pas être ajouté au initramfspar le initramfsscript de mise à jour si la partition de swap n'existe pas.

Selon ce post , voici le moyen correct de régénérer initramfset grub:

update-initramfs -c -k <kernel>

update-grub
BenjiWiebe
la source
-2

Vous pouvez cliquer avec le bouton droit sur la partition swap dans Gparted et sélectionner l' option swapoff . C'est un moyen rapide d'accomplir la même chose que vous avez demandé.

Charlie
la source