Чи можливо створити файл підкачки для гостя VM Linux, керованого Vagrant?


8

У мене Vagrantfileвизначено наступного постачальника:

Витяг з Vagrantfile:

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

Коли я запускаюсь free -mу створеному VM, я бачу такий звіт:

             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і перезапустити віртуальну машину, але я не бачу ніякого впливу додавання простору підкачки в VM.

Навіщо мені потрібно місця для заміни? Я б краще взагалі не займався свопом простором і запускав усе на пам'ять. Однак для деяких додатків (наприклад, композиторський проект для PHP) відомий тим, що за певних умов використовується багато пам'яті. Без місця обміну я повинен бути дуже ліберальним з кількістю пам'яті, яку я кидаю на VM, якби у мене було місця для обміну, хоча це може бути не так ефективно - я б теоретично зіткнувся з меншими проблемами.

Відповіді:


4

Параметр пам'яті, який ви бачите, використовується лише для налаштування ОЗУ VM. Однак визначення простору підкачки є частиною образу диска. Це зображення надано вам як частина config.vm.boxвизначення в Vagrantfile. У моєму конкретному випадку я зауважив, що простір swap не може бути легко налаштований (у мене є лише 1 Гбіт своп).

У вашому випадку я рекомендую змінити базове зображення ( config.vm.box) або додати файл swap до вашої кореневої файлової системи, інтегруючи, наприклад, цей скрипт у свою Vagrantfile. Це ще одне посилання, яке, здається, варто спробувати.


Дякую, я начебто подумав, що базове зображення повинно змінити своп після того, як я заглянув далі в нього. Як виявляється, я можу подолати свої проблеми, використовуючи різні операції над програмою, що вимагає багато пам’яті. Здається, немає іншого рішення, крім зміни базового зображення.
Шон Куїн

Зв'язаний сценарій (перший) добре працював для мене. У разі , якщо посилання ніколи НЕ отримує затхлий: create_swap.sh і remove_swap.sh як сировину г
panepeter

12

Просто додайте цей рядок у свій бродячий файл

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 ядра має на меті усунути потребу у великих, фіксованих розділах swap або файлах swap.

Встановлюючи систему на базі Linux (незмінно GNU / Linux) із програмою Swapspace, звичайний розділ swap може бути опущений, або він може бути досить малим. Щоразу, коли Swapspace під час звичайного використання системи виявить, що потрібно більше віртуальної пам'яті, він автоматично вимагає місця з жорсткого диска. І навпаки, місце для заміни, яке вже не потрібно, знову звільняється для регулярного використання файловою системою.

Це означає, що при встановленому Swapspace розмір наявного в системі місця для заміни під час встановлення вже не є вибором життя чи смерті. Зараз стає практичним запускати GNU / Linux лише з одного великого розділу - без втрати дискового простору на шкоду, що вибирається з інсталяцією. Система також повинна мати можливість виконувати завдання, що займають пам'ять, що займає набагато більше місця для заміни, ніж було передбачено спочатку, не залишаючи той самий простір для заміни та невикористаний під час звичайної роботи, як це зазвичай буває.


0

Якщо ви використовуєте шеф-кухаря для надання вашої скриньки Vagrant, найпростіше рішення - це, мабуть, використання swap_fileресурсу. Цей ресурс є новим у шеф-кухаря 14.0.

Наприклад, додайте у свій рецепт наступне:

swap_file '/var/swap.1' do
  size 1024
end
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.