web-dev-qa-db-fra.com

Est-il possible de créer un fichier de swap pour un invité Linux VM géré par Vagrant?

Dans mon Vagrantfile j'ai le fournisseur suivant défini:

Extraits de VagrantFile :

config.vm.provider :virtualbox do |vb|
  vb.gui = false
  vb.customize ["modifyvm", :id, "--memory", "4096"]
end

Quand je runn free -m Au sein de la création VM Je vois le rapport suivant:

             total       used       free     shared    buffers     cached
Mem:          3953        337       3615          0         18        119
-/+ buffers/cache:        199       3753
Swap:            0          0          0

Est-il possible d'affecter l'évolution lorsque le VM est-il construit et provisionné?

J'ai essayé de définir vm.swappiness dans /etc/sysctl.conf et redémarrer la machine virtuelle, mais je ne vois aucun effet d'ajout de l'espace d'échange au VM.

Pourquoi ai-je besoin d'un espace d'échange? Je préférerais ne pas traiter de l'espace d'échange du tout et tout courir en mémoire. Toutefois, pour certaines applications (le composer projet pour PHP, par exemple) sont notoires pour utiliser beaucoup de mémoire dans certaines conditions. Sans espace d'échange, je dois être très libéral avec la quantité de mémoire Je jette à la machine virtuelle, si j'avais un espace d'échange - bien que cela ne soit peut-être pas aussi efficace - je rencontre théoriquement moins de problèmes.

8
Sean Quinn

Le réglage de la mémoire que vous voyez est uniquement utilisé pour configurer la RAM de la VM. Cependant, la définition de l'espace d'échange fait partie de l'image disque. Cette image vous est fournie dans le cadre de la config.vm.box Définition en Vagrantfile. Dans mon cas particulier, j'ai remarqué que l'espace d'échange ne peut pas être facilement reconfiguré (je n'ai que 1 gbyte de swap).

Dans votre cas, je recommande de changer l'image de base (config.vm.box), ou ajoutez un fichier de swap à votre système de fichiers racine en intégrant par exemple ce script dans votre Vagrantfile. Ceci est un autre lien qui semble avoir la peine d'être essayé.

4
C-Otto

Ajoutez simplement cette ligne à votre fichier Vagrant

VagrantFile

 # Enable Dynamic Swap Space to prevent Out of Memory crashes
config.vm.provision "Shell", inline: "Sudo apt install swapspace -y"

Puis reprovision

vagrant up --provision

Comment ça fonctionne

Ceci est un démon d'espace d'échange dynamique. Il y en a plusieurs, mais voici une populaire.

Sudo apt install swapspace

Vérifier que c'est courir

Sudo service swapspace status

Extraits de http://pqxx.org/development/swapspace/

Ce démon système pour le noyau Linux a pour objectif de supprimer le besoin de cloisons d'échange de grande taille ou de fichiers de swap fixes.

Lors de l'installation d'un système basé sur Linux (invariablement GNU/Linux) avec Swapspace, la partition d'échange habituelle peut être omise, ou il peut être conservé assez petit. Chaque fois que Swapspace trouve lors de l'utilisation normale du système, une plus grande mémoire virtuelle est nécessaire, elle réclamera automatiquement un espace du disque dur. Inversement, Swap Espace qui n'est plus nécessaire n'est plus libéré pour une utilisation régulière par le système de fichiers.

Cela signifie qu'avec SwapSpace installé, le dimensionnement de l'espace de swap disponible du système lors de l'installation n'est plus un choix de vie ou de mort. Il devient maintenant pratique d'exécuter GNU/Linux juste une seule partition, sans espace disque perdu dans les choix d'installation regrettable. Le système devrait également être en mesure de gérer la tâche à forte intensité de mémoire occasionnelle qui prend beaucoup plus d'espace d'échange que prévu, sans laisser le même espace d'échange non utilisé et inutilisable pendant le fonctionnement normal, comme l'est normalement le cas.

11
Jonathan

Si vous utilisez Chef pour approvisionner votre boîte à la vague, la solution la plus facile est probablement d'utiliser le swap_file Ressource. Cette ressource est nouvelle dans le chef 14.0.

Par exemple, ajoutez ce qui suit à votre recette:

swap_file '/var/swap.1' do
  size 1024
end
0
Cédric