Est-il possible de créer un fichier d'échange pour une machine virtuelle invitée Linux gérée par Vagrant?


8

Dans mon, Vagrantfilej'ai le fournisseur suivant défini:

Extrait de Vagrantfile:

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

Lorsque je cours free -mdans la machine virtuelle créée, 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 la permutation lors de la construction et de l'approvisionnement de la machine virtuelle?

J'ai essayé la mise vm.swappinessen /etc/sysctl.confet redémarrer la machine virtuelle, mais je ne vois aucun effet d'ajouter de l' espace de swap à la machine virtuelle.

Pourquoi ai-je besoin d'un espace d'échange? Je préfère ne pas du tout gérer l'espace d'échange et tout exécuter en mémoire. Cependant, pour certaines applications (le projet Composer pour PHP, par exemple) sont connues pour utiliser beaucoup de mémoire dans certaines conditions. Sans espace de swap, je dois être très libéral avec la quantité de mémoire que je jette sur une VM, si j'avais de l'espace de swap - bien qu'il ne soit pas aussi efficace - je rencontrerais théoriquement moins de problèmes.

Réponses:


4

Le paramètre de mémoire que vous voyez est uniquement utilisé pour configurer la RAM de la machine virtuelle. 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.boxdéfinition en Vagrantfile. Dans mon cas spécifique, j'ai remarqué que l'espace de swap ne peut pas être facilement reconfiguré (je n'ai que 1 Go de swap).

Dans votre cas, je recommande de changer l'image de base ( config.vm.box), ou d'ajouter un fichier d'échange à votre système de fichiers racine en intégrant par exemple ce script dans votre Vagrantfile. Il s'agit d'un autre lien qui semble intéressant à essayer.


Merci, j'ai en quelque sorte pensé que l'image de base devait avoir son swap modifié après avoir approfondi. En fait, je peux contourner mes problèmes en utilisant différentes opérations sur le programme qui nécessitent beaucoup de mémoire. Il ne semble pas y avoir d'autre solution que de modifier l'image de base.
Sean Quinn

Le script lié (premier) a bien fonctionné pour moi. Au cas où le lien deviendrait périmé : create_swap.sh et remove_swap.sh en tant que listes brutes
panepeter

12

Ajoutez simplement cette ligne à votre fichier vagabond

Vagrantfile

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

Et puis réapprovisionner

vagrant up --provision

Comment ça fonctionne

Il s'agit d'un démon d'espace d'échange dynamique. Il y en a plusieurs, mais en voici un populaire.

sudo apt install swapspace

Pour vérifier qu'il fonctionne

sudo service swapspace status

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

Ce démon système pour le noyau Linux vise à supprimer le besoin de grandes partitions d'échange fixes ou de fichiers d'échange.

Lors de l'installation d'un système basé sur Linux (invariablement GNU / Linux) avec Swapspace, la partition de swap habituelle peut être omise, ou elle peut être conservée assez petite. Chaque fois que Swapspace détecte pendant l'utilisation normale du système que davantage de mémoire virtuelle est nécessaire, il revendiquera automatiquement de l'espace sur le disque dur. Inversement, l'espace d'échange qui n'est plus nécessaire est à nouveau 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 pendant l'installation n'est plus un choix de vie ou de mort. Il devient désormais pratique d'exécuter GNU / Linux sur une seule grande partition - sans perdre d'espace disque à cause de choix d'installation regrettables. Le système devrait également être capable de gérer la tâche occasionnelle gourmande en mémoire qui prend beaucoup plus d'espace de swap que ce qui était initialement prévu, sans laisser le même espace de swap inutilisé et inutilisable pendant le fonctionnement normal comme c'est normalement le cas.


0

Si vous utilisez Chef pour approvisionner votre boîte Vagrant, la solution la plus simple est probablement d'utiliser la swap_fileressource. Cette ressource est nouvelle dans Chef 14.0.

Par exemple, ajoutez ce qui suit à votre recette:

swap_file '/var/swap.1' do
  size 1024
end
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.