Comment augmenter l'espace de swap?

128

Par défaut, je dispose de 250 Mo d'espace d'échange dans Ubuntu et je souhaite l'étendre à une taille plus grande. J'ai besoin de 800 Mo, ce qui me suffira, selon moi, pour ouvrir plusieurs applications sans avoir à respecter la limite actuelle d'échange. J'espère que quelqu'un pourra m'aider.

Bruno
la source
2
Ouvrez Gparted et postez une capture d'écran de ce que vous voyez ici.
Aaron Hill
Si votre partition de swap peut être étendue dans un espace non alloué adjacent, utilisez-la gparted. Si cet espace n'est pas disponible, peut-être parce que votre partition active (amorcée) utilise tout l'espace non swap, gpartedvous ne pourrez pas en réduire la taille afin de créer de l'espace non alloué. Dans ce cas, vous pouvez réinstaller Ubuntu afin de créer un plus grand espace d'échange.
H2ONaCl

Réponses:

172

Vous pouvez toujours créer un fichier d'échange

d'ajouter plus d'espace d'échange. Ce n'est pas la même chose (dans tous les aspects) que la partition swap, mais ce sera facile et dynamique.

Changez /media/fasthdd/swapfile.imgen ce que vous voulez, par exemple ça peut l'être /swap.imgaussi. /media/fasthdd/swapfile.imgC'est juste un exemple de nom de fichier, si vous utilisez celui-ci, il doit bien sûr y avoir un répertoire /media/fasthdd/avec suffisamment d'espace libre pour votre nouveau fichier d'échange.

Utilisez l'une des applications de terminal pour exécuter des commandes. Toutes les commandes doivent être exécutées avec les privilèges root . Pour ce faire, vous pouvez ajouter sudoau début de chaque commande ou exécuter sudo bashavant d'exécuter des commandes.

1. Créer un fichier vide:
Ce fichier contiendra le contenu de la mémoire virtuelle . Créez donc un fichier assez volumineux pour vos besoins. Celui-ci créera un fichier de 1 Go, ce qui signifie + 1 Go d'espace d'échange pour votre système:

dd if=/dev/zero of=/media/fasthdd/swapfile.img bs=1024 count=1M

Si vous voulez créer un fichier 3Gb, remplacez la valeur de comptage par count=3M. Voir man ddpour plus d'informations.

2. Cuire le fichier d'échange: La
commande suivante crée un "système de fichiers d'échange" dans votre nouveau fichier d'échange.

mkswap /media/fasthdd/swapfile.img

3. Afficher au démarrage:
pour vous assurer que votre nouvel espace d'échange est activé lors du démarrage de l'ordinateur, vous devez l'ajouter au fichier de configuration du système de fichiers /etc/fstab. Ajoutez-le à la fin du fichier, ceci est recommandé car les autres systèmes de fichiers ( au moins un qui contient un fichier d'échange ) doivent être montés en mode lecture-écriture avant de pouvoir accéder aux fichiers.

# Add this line to /etc/fstab
/media/fasthdd/swapfile.img swap swap sw 0 0

4. Activer:
Vous pouvez redémarrer votre ordinateur ou activer manuellement un nouveau fichier d'échange à l'aide de la commande suivante:

swapon /media/fasthdd/swapfile.img


Si tout va bien

vous devriez voir que plus d'espace d'échange est disponible pour utilisation. Vous pouvez utiliser les commandes suivantes pour vérifier votre nouveau swap et confirmer qu'il est actif:

cat /proc/swaps
  Filename                           Type       Size    Used    Priority
  /media/fasthdd/swapfile.img        file       8388604 2724    -1

grep 'Swap' /proc/meminfo
  SwapCached:         4772 kB
  SwapTotal:       8388604 kB
  SwapFree:        8355812 kB
Sampo Sarrala
la source
5
Pour le modifier, /etc/fstabessayez ceci en ligne de commande:sudo gedit /etc/fstab
Ben,
Cela m'a énormément aidé, merci beaucoup monsieur.
Rika
Comment désactiver le fichier d'échange nouvellement créé?
Rika
1
j'ai eu son échange!
Rika
2
utilisez la commande "swapon -s" pour voir l'état plutôt que "cat / proc / swaps". alors la commande "free" donne également des informations sur l'utilisation de swap.
Paul M
40

Méthode graphique pour augmenter la taille de la partition de swap

Un autre moyen d’augmenter la taille de l’échange consiste à utiliser l’ éditeur de partition GParted . En bref, vous redimensionnez la partition swap, puis faites un clic droit dessus et choisissez "Swapon".

Il est plus facile de démarrer gparted-live-disk ou un disque live Ubuntu (pour que toutes les /dev/sdapartitions soient démontées). Si vous exécutez le disque live Ubuntu, vous devez installer gparted en exécutant les commandes ci-dessous:

sudo apt-get update
sudo apt-get install gparted && sudo gparted

Vous devez pouvoir augmenter la taille de la partition de swap uniquement si un espace non alloué est présent avant ou après la partition de swap. S'il n'y a pas d'espace non alloué (l'espace que nous essayons d'ajouter avec une partition de swap) en dessous ou au-dessus de la partition de swap, nous devons redimensionner les partitions et obtenir cet espace non alloué.

Cas 1 - Espace non alloué présent avant ou après la partition de swap

Partitions GParted

Dans la capture d'écran ci-dessus, j'avais 11,4 Go d'espace non alloué avant linux-swap et 12,8 Go après la partition d'échange.

  • Pour redimensionner, cliquez avec le bouton droit sur la partition de swap (/ dev / sda9 ici) et cliquez sur l'option Redimensionner / déplacer. Il ressemblera à ceci:

    entrez la description de l'image ici

  • Faites glisser les flèches du curseur vers la gauche ou vers la droite, puis cliquez sur le bouton Redimensionner / Déplacer. Votre partition de swap sera redimensionnée.


Cas 2 - l'espace non alloué est entre les partitions

entrez la description de l'image ici

Dans la capture d'écran ci-dessus, l'espace non alloué que nous voulons ajouter à la partition de swap était compris entre dev/sda7et /dev/sda8. Pour déplacer l'espace non alloué de celui-ci à la partition de swap juste au-dessus, nous devons suivre les étapes simples indiquées ci-dessous,

  • Cliquez avec le bouton droit sur la partition / dev / sda8 et cliquez sur l' option Redimensionner / déplacer .

    entrez la description de l'image ici

  • cliquez et déplacez le curseur à l'extrême gauche, de sorte que l'espace non alloué situé juste au-dessus de la /dev/sda8partition vienne en dessous /dev/sda8. Après cela, cliquez sur le bouton Redimensionner / Déplacer.

  • Et maintenant, l’espace non alloué se trouvait juste au-dessus de la partition de swap, ce qui ressemblait au cas 1. Maintenant, suivez le cas 1.


Cas 3 - si l'espace non alloué était présent en dehors de la partition étendue)

entrez la description de l'image ici

J'avais un espace non alloué de 18 Go juste en dessous de la partition étendue .Pour ajouter cet espace à la partition linux-swap (qui était présent dans la partition étendue), nous devons suivre les étapes ci-dessous,

  • Faites un clic droit sur la partition étendue et sélectionnez l' option Redimensionner / Déplacer , ce sera comme pour la capture d'écran ci-dessous

    entrez la description de l'image ici

  • Cliquez et faites glisser la flèche à l'extrême droite, puis cliquez sur Redimensionner / déplacer pour que l'espace non alloué de 18 Go apparaisse au bas de la partition étendue. J'avais déjà 14,80 Go d'espace non alloué présent au bas et maintenant au 18.34. GB combine avec cela pour créer un espace non alloué de (18,34 + 14,80 Go) au bas de la partition étendue.

  • Maintenant, il y avait un espace non alloué juste en dessous de la partition de swap, ce sera comme dans le cas 1 , puis dans le cas 1.

REMARQUE: N'oubliez pas de sauvegarder toutes vos données importantes avant de procéder aux opérations ci-dessus.

Avinash Raj
la source
2
Excellent guide pour les outils graphiques, mérite ++ tel quel. Cependant, il devrait peut-être y avoir une mise en garde sur les risques possibles liés à l'édition de partition. Simple Guide de sauvegarde MBR ou lien vers ce guide serait excellent ajout, des erreurs peuvent être peu probable , mais les coûts pourraient se défoncer + prendre des sauvegardes MBR ne consommera pas trop de temps ou d' espace et pourrait sauver beaucoup de travail, l' espace et le temps lorsque vous avez terminé correctement.
Sampo Sarrala
2
N'oubliez pas de swapon, faites un clic droit sur la partition swap et un swapon
user3752281
30

Vous pouvez également l'utiliser fallocatesi vous souhaitez réserver de l'espace pour votre fichier d'échange, sans qu'il soit nécessaire de remplir le fichier avec une valeur de 0 à 0 dd.

De la manpage:

DESCRIPTION
   fallocate  is  used  to preallocate blocks to a file.  For filesystems which support the fallocate system call, this is done quickly by
   allocating blocks and marking them as uninitialized, requiring no IO to the data blocks.  This is much faster than creating a  file  by
   filling it with zeros.

Si vous en avez déjà un swap, vous pouvez soit le supprimer, soit le conserver, et votre * nix le gérera (encore mieux en définissant une swaponpriorité). Cela pourrait être utile si vous souhaitez répartir votre échange entre différents périphériques, lecteur (en fonction de leur vitesse ou d'autres besoins personnalisés, voir Quel est l'objectif de plusieurs fichiers d'échange sur StackExchange ).

fallocateUtilisation simple pour ajouter un deuxième fichier d'échange

Vérifiez la situation de l'échange:

$ sudo swapon -s
Filename                Type        Size    Used    Priority
/swapfile               file        262140  246276  -1

Créer un fichier d'échange 4G

Manière standard de créer et d'activer un fichier d'échange.

$ size="4G" && file_swap=/swapfile_$size.img && sudo touch $file_swap && sudo fallocate -l $size /$file_swap && sudo mkswap /$file_swap && sudo swapon -p 20 /$file_swap

Faites votre échange permanent

Ajoutez une ligne dans votre /etc/fstabfichier pour que le swap soit initialisé au prochain redémarrage (nous mettons également à jour ici la priorité du nouvel espace de swap créé et la priorité de l'ancien fichier swap).

Dans votre fichier / etc / fstab, notez que la priorité de l’échange précédent est maintenant 10.

/swapfile    none    swap    sw,pri=10      0       0
/swapfile_4G.img     none    swap    sw,pri=20      0       0

Vérifiez la situation d'échange après le redémarrage:

$ sudo swapon  -s
Filename       Type     Size        Used    Priority
/swapfile      file     262140      0       10
/swapfile_4G.img       file     4194300     0       20

Supprimer l'un des espaces de permutation (par exemple, l'original de 256 Mo)

Modifier /etc/fstab

Supprimez la ligne associée au swap à supprimer.

Supprimer cet échange

Supprimer et supprimer le fichier d'échange.

sudo swapoff /mnt/swapfile && sudo rm /mnt/swapfile

Ressources:

Jean-Christophe Meillaud
la source
3
1-up pour fallocate, beaucoup mieux que ddsi votre fs le supporte. Ces monolignes se sentent encore difficiles à lire, pourrait-il être plus facile à étudier si elles étaient décomposées en commandes réelles?
Sampo Sarrala le
3
Ceci est un exemple de réponse parfaite, très simple à comprendre, très simple à mettre en œuvre. Cela fonctionnait comme un charme dans ubuntu 18
Damián Rafael Lattenero
7

Dans mon cas, j'avais déjà un fichier d'échange de 1 Go, mais quand je l'ai regardé de plus près, il ne faisait que 256 Mo et lorsque je compilais mes ressources, le serveur manquait de mémoire.

Errno::ENOMEM: Cannot allocate memory - nodejs

J'ai créé mon fichier d'échange comme décrit ici: https://stackoverflow.com/a/34885004/784318

Maintenant, la ligne qui crée un fichier vide appelé /swapfileest la suivante:

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

Maintenant, pour redimensionner le fichier d'échange, je devais suivre ces étapes simples:

# Reboot the system to be able to switch swapping off
sudo reboot

# Turn swap off
sudo swapoff -a

# Delete the `/swapfile`
rm -f /swapfile

# Recreate the swapfile but with double file size memory
sudo dd if=/dev/zero of=/swapfile bs=1024 count=512k

# Turn swap back on
sudo swapon -s

# Change the permission to non-world-readable
sudo chown root:root /swapfile 
sudo chmod 0600 /swapfile

# Use the swap file
sudo mkswap /swapfile
sudo swapon /swapfile

Le fichier a été créé (536870912/1024/1024 = 512 Mo):

ls -lia /swapfile 
768 -rw------- 1 root root 536870912 Apr 27 07:54 /swapfile

En utilisant la free -mcommande, j'ai pu voir que le fichier est maintenant de 512 Mo comme prévu:

Besi
la source
Vous ne devez pas utiliser dangerous -r flag avec la commande rm pour supprimer un fichier. rm -f devrait être plus que suffisant.
Sampo Sarrala
1
@SampoSarrala Merci pour le heads-up, j'ai changé le script en conséquence.
Besi
@Besi Merci! C’est exactement ce dont j’ai besoin pour augmenter la taille du fichier d’échange sur mon système Ubuntu 18.04 LTS. Cela a fonctionné exactement comme vous l'avez écrit. Excellente aide !!!
B-radical
J'aime cette solution car elle est en ligne de commande, ne nécessite pas de repartitionnement et explique quoi faire si un fichier d'échange existe déjà.
cxrodgers
3

comment ajouter un fichier d'échange

  1. fichier creat .img

    sudo dd if = / dev / zero of = / swap.img bs = 1M nombre = 1000

note !: bs = 1M count = 1000 ==> 1GB

(bs * count = taille en mégaoctets)

autre exemple:

sudo dd if = / dev / zero of = / swap.img bs = 10M count = 100

  1. formater le fichier .img

    sudo mkswap /swap.img

  2. activer le fichier d'échange

    sudo swapon /swap.img

  3. ajouter un fichier d'échange à fstab

ajoutez cette ligne à votre fstab (/ etc / fstab)

/swap.img   none            swap    sw              0       0
Jonas
la source
Je mets généralement une étiquette sur le swap, par exemple "mkswap -L SWAP2".
Paul M
Note: Ceci est la même réponse que la réponse acceptée / la plus votée de Sampo Sarria, mais avec moins de contexte et avec le swap img ajouté directement à root au lieu de / media / fasthdd
steel
0

Redimensionner Échanger à 8 Go

# Turn swap off
# This moves stuff in swap to the main memory and might take several minutes
sudo swapoff -a

# Create an empty swapfile
# Note that "1G" is basically just the unit and count is an integer.
# Together, they define the size. In this case 8GB.
sudo dd if=/dev/zero of=/swapfile bs=1G count=8

sudo mkswap /swapfile  # Set up a Linux swap area
sudo swapon /swapfile  # Turn the swap on

Vérifiez si cela a fonctionné

grep Swap /proc/meminfo
Martin Thoma
la source