139 votes

Comment augmenter la taille du swapfile sans le supprimer dans le terminal ?

Existe-t-il un moyen d'augmenter mon "swapfile" existant sans avoir à le détruire et le recréer ? Je voudrais augmenter mon espace d'échange de 1 Go à 2 Go. Actuellement, il est configuré comme suit :

$ sudo swapon -s
Filename                Type        Size    Used    Priority
/swapfile               file        1048572 736640  -1
$ ls -lh /swapfile
-rw------- 1 root root 1.0G Nov  9  2016 /swapfile

J'utilise Ubuntu 14.04.

182voto

Ravexina Points 50599

D'abord, désactivez le fichier d'échange :

sudo swapoff /swapfile

Maintenant, augmentons la taille du fichier d'échange :

sudo dd if=/dev/zero of=/swapfile bs=1M count=1024 oflag=append conv=notrunc

La commande ci-dessus ajoutera 1GiB de zéro octet à la fin de votre fichier d'échange.

Configurez le fichier comme un "fichier d'échange" :

sudo mkswap /swapfile

activer le swap :

sudo swapon /swapfile

Sur un système de production, si votre système d'exploitation ne vous permet pas de désactiver le fichier d'échange à l'aide de la fonction sudo swapoff /swapfile et vous recevez un message similaire à :

swapoff failed: Cannot allocate memory

Vous pourriez alors envisager d'avoir plusieurs fichiers d'échange ou d'en créer un nouveau plus grand, de l'initialiser et de supprimer l'ancien plus petit.

89voto

muru Points 180007

Vous devriez ajouter un nouveau fichier d'échange au lieu de redimensionner celui qui existe déjà. parce que cela ne vous coûte rien de le faire . Pour redimensionner un fichier d'échange, vous devez d'abord le désactiver, ce qui évince le contenu de l'échange vers la RAM, ce qui augmente la pression sur la RAM et peut même invoquer le tueur d'OOM (sans parler du fait que vous pourriez faire vibrer vos disques pendant plusieurs minutes). Les fichiers d'échange multiples ne sont pas un problème, il est trivialement facile de configurer encore un autre fichier d'échange. Il n'y a littéralement aucun avantage à redimensionner un fichier swap plutôt que d'en ajouter un autre.

dd if=/dev/zero of=/some/file count=1K bs=1M
mkswap /some/file
sudo chown root:root /some/file
sudo chmod 600 /some/file
sudo swapon /some/file

25voto

borekon Points 361

Vous pouvez créer un autre fichier d'échange comme je l'ai fait :

  1. sudo fallocate -l 4G /swapfile
  2. sudo chmod 600 /swapfile
  3. sudo mkswap /swapfile
  4. sudo swapon /swapfile
  5. Vérifiez qu'il fonctionne avec sudo swapon --show
    Pour le rendre permanent, ajoutez un fichier dans le répertoire fstab la saisie des fichiers :
    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

6voto

Denis Trofimov Points 351

J'ai de bons résultats sur mon Ubuntu 17.04 en suivant les conseils d'Arian Acosta de la blogpost . On peut substituer la 4G ici sudo fallocate -l 4G /swapfile avec la quantité de gigaoctets que vous voulez. Par exemple sudo fallocate -l 2G /swapfile pour TS.

En règle générale, la taille recommandée pour un fichier d'échange est de deux fois la quantité de RAM, mais vous pouvez le faire aussi grand que vous le souhaitez. N'oubliez pas qu'il ne s'agit pas d'un substitut à la mémoire, car les performances sont bien moins bonnes puisque les choses sont stockées sur le disque.

J'ai créé un simple bash script qui incrémente le fichier swap à 4GB et l'ai testé sur Ubuntu 16.04.

Cela peut être exécuté ligne par ligne ou un bash script, mais je l'utilise pour faire des installations sans tête.

#!/bin/bash
echo "====== Current Swap ======"
sudo swapon -s
echo "====== Turning Off Swap ======"
sudo swapoff /swapfile
echo "====== Allocating 4GB Swap ======"
sudo fallocate -l 4G /swapfile
echo "====== Making Swap ======"
sudo mkswap /swapfile
echo "====== Setting Permissions to Root Only  ======"
sudo chmod 600 /swapfile
echo "====== Turning On Swap ======"
sudo swapon /swapfile
echo "====== Current Swap ======"
sudo swapon -s
echo "====== Done! ======"

1voto

user9869932 Points 271

Vous pouvez également vérifier les autorisations. Autre moyen de le faire :

# check your swap
free

# turn off swap
sudo swapoff /swapfile

# To create the SWAP file, you will need to use this.
sudo fallocate -l 4G /swapfile  # same as "sudo dd if=/dev/zero of=/swapfile bs=1G count=4"

# Secure swap.
sudo chown root:root /swapfile
sudo chmod 0600 /swapfile

# Prepare the swap file by creating a Linux swap area.
sudo mkswap /swapfile

# Activate the swap file.
sudo swapon /swapfile

# Confirm that the swap partition exists.
sudo swapon -s

# check your swap again
free

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