Ist es möglich, eine Auslagerungsdatei für eine von Vagrant verwaltete Linux-Gast-VM zu erstellen?

8

In meinem habe Vagrantfileich folgenden Anbieter definiert:

Auszug aus Vagrantfile:

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

Wenn ich free -minnerhalb der erstellten VM ausgeführt werde, wird der folgende Bericht angezeigt :

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

Ist es möglich, Swappiness zuzuweisen, wenn die VM erstellt und bereitgestellt wird?

Ich habe versucht Einstellung vm.swappinessin /etc/sysctl.confund die VM neu zu starten, aber ich sehe keinen Einfluss auf auf die VM Swap - Speicher hinzuzufügen.

Warum brauche ich Swap Space? Ich würde mich lieber überhaupt nicht mit Swap Space befassen und alles im Speicher ausführen. Für einige Anwendungen (z. B. das Composer-Projekt für PHP) ist es jedoch bekannt, dass unter bestimmten Bedingungen viel Speicher verwendet wird. Ohne Swap Space muss ich sehr liberal mit der Menge an Speicher umgehen, die ich auf eine VM stelle. Wenn ich Swap Space hätte - obwohl dies möglicherweise nicht so effizient ist - würde ich theoretisch auf weniger Probleme stoßen.

Sean Quinn
quelle

Antworten:

4

Die angezeigte Speichereinstellung wird nur zum Konfigurieren des RAM der VM verwendet. Die Swap-Space-Definition ist jedoch Teil des Disk-Images. Dieses Bild wird Ihnen im Rahmen der config.vm.boxDefinition in zur Verfügung gestellt Vagrantfile. In meinem speziellen Fall habe ich festgestellt, dass der Swap-Bereich nicht einfach neu konfiguriert werden kann (ich habe nur 1 GByte Swap).

In Ihrem Fall empfehle ich, das Basis-Image ( config.vm.box) zu ändern oder eine Swap-Datei zu Ihrem Root-Dateisystem hinzuzufügen, indem Sie beispielsweise dieses Skript in Ihr integrieren Vagrantfile. Dies ist ein weiterer Link, der es wert scheint, ausprobiert zu werden.

C-Otto
quelle
Vielen Dank, ich dachte mir, dass der Swap des Basis-Images geändert werden musste, nachdem ich mich näher damit befasst hatte. Wie sich herausstellt, kann ich meine Probleme umgehen, indem ich verschiedene Vorgänge für das Programm verwende, die viel Speicher benötigen. Es scheint keine andere Lösung zu geben, als das Basis-Image zu ändern.
Sean Quinn
Das verknüpfte Skript (erstes) hat bei mir gut funktioniert. Für den Fall, dass der Link jemals veraltet sein sollte: create_swap.sh und remove_swap.sh als Rohdaten
Panepeter
11

Fügen Sie diese Zeile einfach Ihrer Vagabunddatei hinzu

Vagrantfile

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

Und dann Reprovision

vagrant up --provision

Wie es funktioniert

Dies ist ein dynamischer Swap Space-Daemon. Es gibt mehrere, aber hier ist eine beliebte.

sudo apt install swapspace

Um zu überprüfen, ob es läuft

sudo service swapspace status

Auszug aus http://pqxx.org/development/swapspace/

Dieser Systemdämon für den Linux-Kernel soll die Notwendigkeit großer, fester Swap-Partitionen oder Swap-Dateien beseitigen.

Bei der Installation eines Linux-basierten Systems (ausnahmslos GNU / Linux) mit Swapspace kann die übliche Swap-Partition weggelassen oder recht klein gehalten werden. Immer wenn Swapspace während der normalen Systemnutzung feststellt, dass mehr virtueller Speicher benötigt wird, wird automatisch Speicherplatz von der Festplatte beansprucht. Umgekehrt wird nicht mehr benötigter Swap-Speicherplatz für die regelmäßige Verwendung durch das Dateisystem wieder freigegeben.

Dies bedeutet, dass bei installiertem Swapspace die Dimensionierung des verfügbaren Swapspace des Systems während der Installation keine Entscheidung mehr über Leben und Tod ist. Es wird jetzt praktisch, GNU / Linux nur von einer einzigen großen Partition aus auszuführen - ohne dass Speicherplatz durch bedauerliche Installationsoptionen verloren geht. Das System sollte auch in der Lage sein, gelegentliche speicherintensive Aufgaben zu erledigen, die viel mehr Swap-Speicherplatz beanspruchen als ursprünglich vorgesehen, ohne dass derselbe Swap-Speicherplatz während des normalen Betriebs ungenutzt und unbrauchbar bleibt, wie dies normalerweise der Fall ist.

Jonathan
quelle
0

Wenn Sie Chef verwenden, um Ihre Vagrant-Box swap_filebereitzustellen , besteht die einfachste Lösung wahrscheinlich darin, die Ressource zu verwenden. Diese Ressource ist neu in Chef 14.0.

Fügen Sie Ihrem Rezept beispielsweise Folgendes hinzu:

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