web-dev-qa-db-ja.com

Linuxゲスト用のスワップファイルを作成することは可能ですかVM Vagrantによって管理されていますか?

私の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を割り当てることは可能ですか?

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

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

8
Sean Quinn

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

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

4
C-Otto

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

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

11
Jonathan

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

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

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