255 votes

Comment augmenter l'espace d'échange ?

J'ai, par défaut, 250 Mo d'espace swap dans Ubuntu, et je veux l'étendre à une taille plus grande. J'ai besoin de 800 Mo, ce qui, je pense, sera suffisant pour ouvrir plusieurs applications sans avoir à atteindre la limite actuelle de l'espace d'échange. J'espère que quelqu'un pourra m'aider.

284voto

Vous pouvez toujours créer un fichier d'échange pour ajouter plus d'espace d'échange. Ce n'est pas la même chose en tout point que la partition swap, mais ce sera facile et dynamique.

Dans les étapes suivantes, modifiez /media/fasthdd/swapfile.img à ce que vous voulez. Par exemple, il peut s'agir de /swap.img également. /media/fasthdd/swapfile.img est juste un exemple de nom de fichier. Si vous utilisez celui-ci, alors bien sûr il doit y avoir un répertoire /media/fasthdd/ avec assez d'espace libre pour votre nouveau fichier d'échange.

Utilisez une application de terminal pour exécuter les commandes des étapes suivantes. Toutes les commandes doivent être exécutées avec les privilèges de root . Pour ce faire, vous pouvez soit ajouter sudo au début de chaque commande ou exécution sudo bash avant d'exécuter les commandes.

  1. Créer un fichier vide :

    Ce fichier contiendra le contenu de la mémoire virtuelle, donc faites en sorte que le fichier soit assez grand pour vos besoins. Celui-ci créera un fichier de 1GiB, ce qui signifie +1GiB d'espace de swap pour votre système :

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

    Si vous voulez faire un fichier de 3GiB, alors changez la valeur du compte en count=3M . Voir man dd pour plus d'informations.

  2. Réparez le fichier d'échange :

    La commande suivante va créer un "système de fichiers swap" à l'intérieur de votre nouveau fichier swap.

    mkswap /media/fasthdd/swapfile.img
  3. Apportez sur le 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 ) doit être monté en mode lecture-écriture avant que nous puissions accéder aux fichiers.

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

    Vous pouvez soit redémarrer votre ordinateur, soit activer manuellement le nouveau fichier d'échange à l'aide de la commande suivante :

    swapon /media/fasthdd/swapfile.img

Si tout se passe bien vous devriez voir qu'il y a plus d'espace d'échange disponible pour l'utilisation. Vous pouvez utiliser les commandes suivantes pour vérifier votre nouvel espace d'échange 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

123voto

Redimensionner le Swap à 8GB

# 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
# Set the correct permissions
sudo chmod 0600 /swapfile

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

Rendez-le permanent (persistant lors des redémarrages)

Ajoutez cette ligne à la fin de votre /etc/fstab :

/swapfile swap swap sw 0 0

58voto

Avinash Raj Points 72686

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

Une autre façon d'augmenter la taille de l'échange est d'utiliser la fonction Éditeur de partition GParted . En bref, vous redimensionnez la partition d'échange, puis vous faites un clic droit dessus et choisissez "Swapon".

Il est plus facile de démarrer gparted-live-disk ou un disque live Ubuntu (de sorte que les toutes les /dev/sda les partitions seront démontées). Si vous utilisez Ubuntu live disk dans certaines versions antérieures à 18.04, vous devrez peut-être installer gparted en exécutant les commandes ci-dessous :

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

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

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

GParted partitions

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

  • Pour redimensionner, faites un clic droit sur la partition swap (/dev/sda9 ici) et cliquez sur l'option Redimensionner/Déplacer. Cela ressemblera à ceci :

    enter image description here

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


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

enter image description here

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

  • Cliquez avec le bouton droit de la souris sur la partition /dev/sda8 et cliquez sur Redimensionner/Déplacer option.

    enter image description here

  • cliquez et déplacez le curseur vers l'extrême gauche, de manière à ce que l'espace non alloué qui se trouvait juste au-dessus de l'icône de l'espace de travail. /dev/sda8 La partition de la partition est ci-dessous /dev/sda8 Après cela, cliquez sur le bouton Redimensionner/Déplacer.

  • Et maintenant l'espace non alloué était juste au dessus de la partition swap qui était comme Cas 1 Maintenant, suivez 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 l'emplacement de l'appareil. 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,

  • Cliquez avec le bouton droit de la souris sur la partition étendue et sélectionnez Redimensionner/Déplacer l'option, il sera comme la capture d'écran ci-dessous

    enter image description here

  • Cliquez et faites glisser la flèche vers l'extrême droite et cliquez sur Redimensionner/Déplacer ,de sorte que le J'avais 14,80 Go d'espace non alloué déjà présent en bas et maintenant les 18,34 Go se combinent avec cela pour créer un espace non alloué de (18,34+14,80 Go) en bas de la partition étendue.

  • Maintenant il y a un espace non alloué juste en dessous de la partition swap, ce sera comme ça Cas 1 ,alors suivez le cas 1.

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

44voto

livingtech Points 1740

Vous pouvez également utiliser fallocate si vous voulez réserver de l'espace pour votre fichier d'échange, sans avoir besoin de remplir le fichier avec 0 à travers dd .

De la man page :

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à un swap défini, vous pouvez soit le supprimer, soit le garder, et votre *nix le gérera (encore mieux avec en définissant un swapon priorité). Cela peut être utile, dans le cas où vous souhaitez répartir votre échange entre différents périphériques, lecteurs (en fonction de leur vitesse ou d'autres besoins personnalisés, cf. Quel est le but de plusieurs fichiers d'échange ? sur StackExchange ).

Simple fallocate utilisation pour l'ajout d'un deuxième fichier swap

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

Méthode standard de création et d'activation d'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

Un seul mot :

$ 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

Rendez votre échange permanent

Ajoutez une ligne dans votre /etc/fstab afin que l'espace d'échange soit initialisé lors du prochain redémarrage (nous mettons également à jour ici la priorité de l'espace d'échange nouvellement créé et nous mettons à jour la priorité de l'ancien fichier d'échange).

Dans votre fichier /etc/fstab, remarquez que la priorité du swap prev est maintenant de 10.

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

Vérifiez la situation de l'é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

Supprimez l'un des espaces d'échange (par exemple les 256 Mo d'origine).

Editar /etc/fstab

Supprimez la ligne liée au swap que vous voulez supprimer.

Supprimer ce swap

Effacer et supprimer le fichier d'échange.

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

Ressources :

9voto

Besi Points 198

Dans mon cas, j'avais déjà un fichier d'échange que je pensais être de 1 Go, mais en y regardant de plus près, il n'avait que 256 Mo et, lors de la précompilation de mes ressources 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 le suivant :

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

Maintenant, pour redimensionner le fichier d'échange, j'ai dû faire ces simples étapes :

# 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

Utilisation de free -m commande, j'ai pu constater que le fichier fait maintenant 512 Mo comme prévu :

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