web-dev-qa-db-fra.com

Comment augmenter l'espace de swap?

Par défaut, j'ai 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.

118
Bruno

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.

Remplacez /media/fasthdd/swapfile.img par tout ce que vous voulez, par exemple, il peut aussi s'agir de /swap.img. /media/fasthdd/swapfile.img 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 rootPour ce faire, vous pouvez ajouter Sudo au début de chaque commande ou exécuter Sudo bash avant 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 grand 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 souhaitez créer un fichier 3Gb, modifiez la valeur de décompte en count=3M. Voir man dd pour plus d'informations.

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

mkswap /media/fasthdd/swapfile.img

3. Montez 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 le fichier d'échange) doit être monté 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 soit redémarrer votre ordinateur, soit 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
157
Sampo Sarrala

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

Une autre façon d’augmenter la taille de l’échange consiste à utiliser = É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 partitions /dev/sda 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

GParted partitions

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:

    enter image description here

  • 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

enter image description here

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

  • Cliquez avec le bouton droit de la souris sur la partition/dev/sda8 et sélectionnez l’option Redimensionner/déplacer .

    enter image description here

  • cliquez et déplacez le curseur à l'extrême gauche, de sorte que l'espace non alloué situé juste au-dessus de la partition /dev/sda8 vienne sous /dev/sda8. Ensuite, cliquez sur le bouton Redimensionner/déplacer.

  • Et maintenant, l'espace non alloué se trouvait juste au-dessus de la partition de swap, qui ressemblait à cas 1. Suivez maintenant le cas 1.


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

enter image description here

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ésente 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

    enter image description here

  • Cliquez et faites glisser la flèche à l'extrême droite, puis cliquez sur Redimensionner/Déplacer , de sorte que l'espace non alloué de 18 Go apparaisse au bas de la partition étendue. J'avais déjà 14,8 Go d'espace non alloué au bas et maintenant, les 18,34 Go se combinent 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 Cas 1, puis suivez le cas 1.

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

35
Avinash Raj

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

depuis la page MANname__:

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 avez déjà défini un swapname__, vous pouvez le supprimer ou le conserver et votre * nix le gérera (encore mieux en définissant une priorité swaponname__). 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 le but de plusieurs fichiers d'échange sur StackExchange ).

Utilisation simple de fallocatepour l'ajout d'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 fichier /etc/fstab pour que le swap soit initialisé au prochain redémarrage (nous mettons également à jour ici la priorité du nouvel espace de swap créé et nous actualisons la priorité de l'ancien fichier d'échange

# in your /ets/fstab file
/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)

Éditer /etc/fstab

Supprimer la ligne associée à l'échange que vous souhaitez supprimer

Supprimer cet échange

Supprimer et supprimer le fichier d'échange.

Sudo swapoff /mnt/swapfile && Sudo rm /mnt/swapfile

Ressources:

Dans mon cas, j’avais déjà un fichier swap de 1 Go, mais quand j’y ai regardé de plus près, il ne faisait que 256 Mo et lors de la pré-compilation de mes Rails, 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é /swapfile est 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 commande free -m, je pouvais voir que le fichier faisait maintenant 512 Mo, comme prévu:

5
Besi

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
3
Jonah