Vagrantが管理するLinuxゲストVMのスワップファイルを作成することはできますか?


8

Vagrantfileでは、次のプロバイダーが定義されています。

Vagrantfileからの抜粋:

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

私はrunnときにfree -m作成したVM I内で次のレポートを参照してください。

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

VMが構築およびプロビジョニングされているときにswappinessを割り当てることは可能ですか?

VMを設定vm.swappiness/etc/sysctl.confて再起動しようとしましたが、VMにスワップ領域を追加しても影響はありません。

なぜスワップスペースが必要なのですか?私はむしろスワップ空間をまったく扱わず、すべてをメモリで実行します。ただし、一部のアプリケーション(PHP用のcomposerプロジェクトなど)では、特定の条件下で大量のメモリを使用することで悪名が高くなっています。スワップスペースがないと、VMにスローするメモリの量を非常に自由にする必要があります。スワップスペースがあれば(効率的ではないかもしれませんが)、理論的には問題が少なくなります。

回答:


4

表示されるメモリ設定は、VMのRAMの構成にのみ使用されます。ただし、スワップ領域の定義はディスクイメージの一部です。この画像は、のconfig.vm.box定義の一部として提供されていますVagrantfile。私の特定のケースでは、スワップスペースを簡単に再構成できないことに気づきました(私は1 GBのスワップしか持っていません)。

あなたのケースでは、ベースイメージ(config.vm.box)を変更するか、たとえばこのスクリプトをに統合して、スワップファイルをルートファイルシステムに追加することをお勧めしますVagrantfileこれは、試してみる価値のある別のリンクです。


おかげで、ベースイメージをさらに詳しく調べた後、ベースイメージのスワップを変更する必要があると思いました。結局のところ、大量のメモリを必要とするプログラムでさまざまな操作を使用することで、問題を回避できます。ベースイメージを変更する以外に解決策はないようです。
Sean Quinn

リンクされたスクリプト(最初のスクリプト)はうまく機能しました。リンクが古くなった場合:create_swap.shremove_swap.shを生の要旨として
ペインピーター

11

この行をvagrantファイルに追加するだけです

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をインストールする場合、通常のswapパーティションを省略したり、かなり小さく保つことができます。スワップスペースは、通常のシステム使用中にさらに多くの仮想メモリが必要であると判断すると、ハードディスクから自動的にスペースを要求します。逆に、不要になったスワップスペースは、ファイルシステムが通常使用するために再び解放されます。

つまり、Swapspaceがインストールされていると、インストール中にシステムの使用可能なスワップスペースをサイジングすることは、生死の選択ではなくなります。現在、GNU / Linuxを単一の大きなパーティションで実行することが実用的になっています。残念なインストールの選択によってディスク領域が失われることはありません。システムは、通常の場合と同じように通常の操作中に同じスワップ領域を使用せず、使用できないままにすることなく、当初予想されていたよりも多くのスワップ領域を必要とする、メモリを集中的に使用するタスクを時折処理できる必要があります。


0

Chefを使用してVagrant Boxをプロビジョニングする場合、おそらく最も簡単な解決策はswap_fileリソースを使用することです。このリソースはChef 14.0の新機能です。

たとえば、以下をレシピに追加します。

swap_file '/var/swap.1' do
  size 1024
end
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.