Apakah mungkin untuk membuat file swap untuk VM tamu Linux yang dikelola oleh Vagrant?

8

Di saya, Vagrantfilesaya memiliki penyedia berikut didefinisikan:

Kutipan dari Vagrantfile:

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

Ketika saya runn free -mdi dalam VM yang dibuat saya melihat laporan berikut:

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

Apakah mungkin untuk menetapkan swappiness ketika VM sedang dibangun dan disediakan?

Saya telah mencoba pengaturan vm.swappinessdi /etc/sysctl.confdan me-restart VM, tapi saya tidak melihat mempengaruhi penambahan ruang swap ke VM.

Mengapa saya perlu ruang swap? Saya lebih suka tidak berurusan dengan ruang swap sama sekali dan menjalankan semua yang ada di memori. Namun, untuk beberapa aplikasi (proyek komposer untuk PHP, misalnya) terkenal karena menggunakan banyak memori dalam kondisi tertentu. Tanpa ruang swap saya harus sangat liberal dengan jumlah memori yang saya lemparkan pada VM, jika saya memiliki ruang swap - meskipun mungkin tidak seefisien - saya secara teoritis akan mengalami masalah yang lebih sedikit.

Sean Quinn
sumber

Jawaban:

4

Pengaturan memori yang Anda lihat hanya digunakan untuk mengkonfigurasi RAM VM. Namun, definisi ruang swap adalah bagian dari gambar disk. Gambar ini disediakan untuk Anda sebagai bagian dari config.vm.boxdefinisi di Vagrantfile. Dalam kasus khusus saya, saya perhatikan bahwa ruang swap tidak dapat dengan mudah dikonfigurasi ulang (saya hanya memiliki 1 GByte swap).

Dalam kasus Anda, saya sarankan untuk mengubah gambar dasar ( config.vm.box), atau menambahkan file swap ke sistem file root Anda dengan mengintegrasikan misalnya skrip ini ke Anda Vagrantfile. Ini adalah tautan lain yang sepertinya patut dicoba.

C-Otto
sumber
Terima kasih, saya agak berpikir bahwa gambar dasar harus diubah swap setelah saya melihat lebih jauh ke dalamnya. Ternyata saya bisa mengatasi masalah saya dengan menggunakan berbagai operasi pada program yang membutuhkan banyak memori. Sepertinya tidak ada solusi lain selain memodifikasi gambar dasar.
Sean Quinn
Skrip yang ditautkan (yang pertama) bekerja dengan baik untuk saya. Seandainya tautannya basi: create_swap.sh dan remove_swap.sh sebagai inti mentah
panepeter
11

Cukup tambahkan baris ini ke file gelandangan Anda

Vagrantfile

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

Dan kemudian celaan

vagrant up --provision

Bagaimana itu bekerja

Ini adalah daemon ruang swap dinamis. Ada beberapa, tapi ini yang populer.

sudo apt install swapspace

Untuk memverifikasi itu berjalan

sudo service swapspace status

Kutipan dari http://pqxx.org/development/swapspace/

Daemon sistem untuk kernel Linux ini bertujuan untuk menghilangkan kebutuhan akan partisi swap atau file swap yang besar dan tetap.

Saat memasang sistem berbasis Linux (selalu GNU / Linux) dengan Swapspace, partisi swap yang biasa dapat dihilangkan, atau dapat disimpan cukup kecil. Setiap kali Swapspace menemukan selama penggunaan sistem normal bahwa lebih banyak memori virtual diperlukan, ia akan secara otomatis mengklaim ruang dari hard disk. Sebaliknya, ruang swap yang tidak lagi dibutuhkan dibebaskan lagi untuk penggunaan reguler oleh sistem file.

Ini berarti bahwa dengan Swapspace diinstal, ukuran ruang swap yang tersedia sistem selama instalasi bukan lagi pilihan hidup atau mati. Sekarang menjadi praktis untuk menjalankan GNU / Linux hanya dari satu partisi besar - tanpa ruang disk yang hilang karena pilihan instalasi yang disesalkan. Sistem juga harus dapat menangani tugas intensif-memori sesekali yang membutuhkan lebih banyak ruang swap daripada yang diperkirakan sebelumnya, tanpa meninggalkan ruang swap yang sama tidak digunakan dan tidak dapat digunakan selama operasi normal seperti biasanya.

Jonathan
sumber
0

Jika Anda menggunakan Chef untuk menyediakan kotak Vagrant Anda, solusi termudah mungkin dengan menggunakan swap_filesumber daya. Sumber ini baru di Chef 14.0.

Misalnya, tambahkan yang berikut ini ke resep Anda:

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