8

В моем Vagrantfile у меня определен следующий провайдер:

Выдержка из Vagrantfile:

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

Когда я запускаю free -m в созданной виртуальной машине, я вижу следующий отчет:

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

Можно ли назначить перестановку при сборке и подготовке виртуальной машины?

Я попытался установить vm.swappiness в /etc/sysctl.conf и перезапустить виртуальную машину , но я не вижу каких-либо последствий добавления пространства подкачки к виртуальной машине .

Зачем мне нужно место подкачки? Я бы предпочел вообще не иметь дело с пространством подкачки и запускать все в памяти. Однако для некоторых приложений (например, проект composer для PHP) известно, что при определенных условиях используется много памяти. Без пространства подкачки я должен был бы быть очень либеральным с количеством памяти, которое я выбрасываю на ВМ, если бы у меня было пространство подкачки - хотя оно могло бы быть не столь эффективным - теоретически я столкнулся бы с меньшим количеством проблем.

3 ответа3

10

Просто добавьте эту строку в ваш бродячий файл

Vagrantfile

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

А потом репровизия

vagrant up --provision

Как это устроено

Это динамический демон пространства подкачки. Их несколько, но вот популярный.

sudo apt install swapspace

Чтобы убедиться, что он работает

sudo service swapspace status

Выдержка из http://pqxx.org/development/swapspace/

Этот системный демон для ядра Linux стремится избавиться от необходимости больших фиксированных разделов подкачки или файлов подкачки.

При установке системы на основе Linux (неизменно GNU/Linux) с Swapspace обычный раздел подкачки может быть опущен или может быть достаточно маленьким. Всякий раз, когда Swapspace обнаруживает во время обычного использования системы, что требуется больше виртуальной памяти, он автоматически запрашивает пространство на жестком диске. И наоборот, пространство подкачки, которое больше не нужно, снова высвобождается для регулярного использования файловой системой.

Это означает, что при установленном Swapspace определение размера доступного пространства подкачки в системе во время установки больше не является выбором жизни или смерти. Теперь становится практичным запускать GNU/Linux только с одного большого раздела без потери места на диске из-за прискорбного выбора установки. Система также должна иметь возможность обрабатывать случайные задачи с интенсивным использованием памяти, которые занимают гораздо больше места подкачки, чем первоначально предполагалось, не оставляя то же пространство подкачки неиспользуемым и неиспользуемым при обычной работе, как это обычно бывает.

4

Настройки памяти, которые вы видите, используются только для настройки оперативной памяти виртуальной машины. Однако определение пространства подкачки является частью образа диска. Это изображение предоставляется вам в качестве части определения config.vm.box в Vagrantfile В моем конкретном случае я заметил, что пространство подкачки не может быть легко перенастроено (у меня есть только 1 Гбайт подкачки).

В вашем случае я рекомендую изменить базовый образ (config.vm.box) или добавить файл подкачки в корневую файловую систему, интегрировав, например, этот скрипт в ваш Vagrantfile . Это еще одна ссылка, которую стоит попробовать.

0

Если вы используете Chef для подготовки вашего Vagrant-бокса, возможно, самое простое решение - использовать ресурс swap_file . Этот ресурс является новым в Chef 14.0.

Например, добавьте следующее в свой рецепт:

swap_file '/var/swap.1' do
  size 1024
end

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .