É possível criar um arquivo de troca para uma MV guest Linux gerenciada pelo Vagrant?

8

No meu Vagrantfile , tenho o seguinte provedor definido:

Excerpt from Vagrantfile:

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

Quando executo free -m na VM criada, vejo o seguinte relatório:

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

É possível atribuir swappiness quando a VM está sendo construída e provisionada?

Eu tentei definir vm.swappiness em /etc/sysctl.conf e reiniciar a VM, mas não vejo nenhum efeito de adicionar espaço de troca à VM.

Por que eu preciso de espaço de troca? Eu prefiro não lidar com o espaço de troca e executar tudo na memória. No entanto, para algumas aplicações (o projeto do compositor para PHP, por exemplo) é notório por usar muita memória sob certas condições. Sem espaço de troca eu tenho que ser muito liberal com a quantidade de memória que eu jogo em uma VM, se eu tivesse espaço de troca - embora possa não ser tão eficiente - teoricamente eu teria menos problemas.

    
por Sean Quinn 29.03.2016 / 06:52

3 respostas

4

A configuração de memória que você vê é usada apenas para configurar a RAM da VM. No entanto, a definição do espaço de troca faz parte da imagem do disco. Essa imagem é fornecida para você como parte da definição config.vm.box em Vagrantfile . No meu caso específico, notei que o espaço de troca não pode ser facilmente reconfigurado (eu só tenho 1 GB de swap).

No seu caso, recomendo alterar a imagem de base ( config.vm.box ) ou adicionar um arquivo de permuta ao sistema de arquivos raiz, integrando, por exemplo, este script no seu Vagrantfile . Este é outro link que parece valer a pena experimentar.

    
por 01.08.2016 / 11:38
10

Basta adicionar esta linha ao seu arquivo vagante

Vagrantfile

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

E, em seguida, reprovisionar

vagrant up --provision

Como funciona

Este é um daemon de espaço de troca dinâmico. Existem vários, mas aqui é um popular.

sudo apt install swapspace

Para verificar se está sendo executado

sudo service swapspace status

Trecho do link

This system daemon for the Linux kernel aims to do away with the need for large, fixed swap partitions or swap files.

When installing a Linux-based system (invariably GNU/Linux) with Swapspace, the usual swap partition can be omitted, or it can be kept quite small. Whenever Swapspace finds during normal system usage that more virtual memory is needed, it will automatically claim space from the hard disk. Conversely, swap space that is no longer needed is freed up again for regular use by the filesystem.

This means that with Swapspace installed, sizing the system's available swap space during installation is no longer a life-or-death choice. It now becomes practical to run GNU/Linux off just a single, big partition--with no disk space lost to regrettable installation choices. The system should also be able to handle the occasional memory-intensive task that takes much more swap space than was originally foreseen, without leaving the same swap space unused and unusable during normal operation as is normally the case.

    
por 14.09.2016 / 02:13
0

Se você estiver usando o Chef para provisionar sua caixa Vagrant, a solução mais fácil é provavelmente usar o recurso swap_file . Este recurso é novo no Chef 14.0.

Por exemplo, adicione o seguinte à sua receita:

swap_file '/var/swap.1' do
  size 1024
end
    
por 07.09.2018 / 16:35