Frage Warum haben EC2-Ubuntu-Images keinen Swap?


Ich habe ein paar Server auf EC2 gestartet und sie haben keinen Swap.

Mache ich etwas falsch oder haben die Maschinen einfach keine?


74
2018-01-04 21:53


Ursprung


Ich habe mich das auch gefragt, aber ich habe gerade eine EBS-Instanz eingerichtet, sie als swap formatiert und swapon / dev / sdg ... - Tom O'Connor
Typisch ist auch der Fall, dass SSD-Laufwerke auf einem Linux-System keinen Swap auf dem SSD-Laufwerk einrichten. Vor allem, weil manche Menschen paranoid sind, würde sich das negativ auf die Lagerfähigkeit einer SSD auswirken, wenn man immer die gleiche Reihe von Sektoren bohrt. - djangofan
Welche AMI- und welche EC2-Instanzgröße? Das AMI muss für die Verwendung einer Swap-Partition konfiguriert sein und die Instanz muss beim Start hinzugefügt werden. - Jeremy Bouse
Wenn möglich, würde ich empfehlen, Swap auf EC2 nicht zu verwenden, es sei denn, Sie sind zu 99% sicher, dass Sie es nicht verwenden müssen (z. B. nur für den Notfall). Als wir bei einigen unserer EC2-Instanzen den Swap deaktiviert haben, haben sich unsere monatlichen EBS-IO-Kosten wahrscheinlich halbiert. Nur meine zwei Cent, um dir zwei Cent zu sparen - ja das war schrecklich, ich entschuldige mich und werde mich in einer Ecke verstecken;) - Smudge
Sie können auch in diesem Schritt nachsehen docs.aws.amazon.com/AWSEC2/latest/UserGuide/... - Artem.Borysov


Antworten:


Sie haben Recht, die Ubuntu EC2 EBS-Images enthalten keinen konfigurierten Swap Space (für 11.04 wenigstens). Die "normalen" Bilder vom Instanztyp haben eine Swap-Partition, wenn auch nur 896 MB auf der einen, die ich getestet habe.

Wenn ein Prozess ausbricht und du keinen Swap-Speicherplatz hast, könnte dein Server eine Weile stehen bleiben, bevor der OOM-Killer einsetzt, während es beim Swap nur langsam wird. Aus diesem Grund habe ich immer gerne Swap-Speicherplatz, selbst mit genügend RAM. Hier sind Ihre Möglichkeiten:

  • Erstelle ein EBS-Volume (2-4 mal so groß wie dein RAM), lege es an deine Instanz an (ich nenne es gerne / dev / xvdm für "memory"), sudo mkswap /dev/xvdmfüge es zur fstab hinzu, sudo swapon -aund du bist gut zu gehen. Ich habe dies schon einmal gemacht und es funktioniert gut, aber es ist wahrscheinlich ein bisschen langsamer als Instanz Store, weil es über das Netzwerk geht.

  • Oder Sie können möglicherweise Ihre Festplatte neu partitionieren, um eine Swap-Partition hinzuzufügen, obwohl hierfür möglicherweise ein neues AMI erstellt werden muss. Ich konnte dies nicht in einer laufenden Instanz tun, weil ich das Root-Dateisystem nicht abschalten kann, und ich habe nicht einmal Zugriff auf das Plattengerät (/ dev / xvda), nur die Partition (xvda1).

  • Oder Sie können eine Auslagerungsdatei erstellen. Dies ist momentan meine bevorzugte Lösung.

    sudo dd if=/dev/zero of=/var/swapfile bs=1M count=2048 &&
    sudo chmod 600 /var/swapfile &&
    sudo mkswap /var/swapfile &&
    echo /var/swapfile none swap defaults 0 0 | sudo tee -a /etc/fstab &&
    sudo swapon -a
    

    Erledigt. :) Ich weiß, viele Leute fühlen sich eklig über die Verwendung von Dateien anstelle von Partitionen, aber es funktioniert sicherlich gut genug als Notfall Swap Space.


70
2018-06-12 14:46



Der Wechsel zu einem EBS-Volume kann zu zusätzlichen Kosten führen, wie die anderen Antworten zeigen. Wenn Sie keinen Swap verwenden oder in einen Instanzspeicher wechseln, erscheinen Ihnen die besseren Lösungen. - isuldor
Die Verwendung des Instanzspeichers ist eine bessere Option als EBS. EBS ist ein Netzwerk-Dateisystem, das über die gleiche Netzwerkverbindung mit der EC2-Instanz verbunden ist wie alles andere. Der Instanzspeicher ist an die Hardware angehängt, auf der die Instanz gehostet wird (daher wird sie beim Stoppen und Starten der Instanz nicht beibehalten). Der einzige Zeitpunkt, an dem EBS eine Option für den Austausch ist, ist, wenn Sie einen Instanztyp verwenden, der nicht mit Instanzspeicher geliefert wird, dh der t1.micro (der nur etwa 620 MB RAM hat, ist wahrscheinlich der, der wirklich Notfall benötigt Wechsel). - ColtonCat
Das bs = 1M ist bereits in binärer Notation, also sollte der count = 2048 Multiplikator count = 2000 sein - wenn ich mich nicht irre. - ypocat
Wenn Sie sich für 2GiB entscheiden, dann scheint 1024 * 2048 korrekt zu sein. - Jo Liss


Der beste Ort für den Austausch IMHO ist der Instance-Store. Warum? AWS berechnet keine E / A-Kosten für den Instance-Store. Außerdem ist der Instanzspeicher in vielen Fällen leistungsfähiger als EBS. Stellen Sie nur sicher, dass Sie ein Skript haben, das die Auslagerungsdatei neu erstellt, falls Sie die Instanz stoppen. Neustarts sind in Ordnung. Warum, oh, warum ist es nicht standardmäßig?

Lassen Sie uns den Instance-Store lokalisieren.

root@domU-**-**-**-**-**-**:/var/log# fdisk -l

[...]

Disk /dev/xvda2: 160.1 GB, 160104972288 bytes
255 heads, 63 sectors/track, 19464 cylinders, total 312705024 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/xvda2 doesn't contain a valid partition table

Hurra, 160.1GB kostenlos! Setzen Sie Ihren Swap da rein und vergessen Sie 100 $ Überschüsse pro Server, wenn Ihr EBS-basierter Swap versehentlich ausgelöscht wird. Unglückliche Erfahrung hier zu reden.

Anscheinend sehen Sie in einigen Fällen den Instance-Store nicht.

Abhängig vom Instanztyp müssen Sie die Instanzspeichervolumes zunächst mithilfe der Block-Device-Mapping-Optionen an die Instanz anhängen. Wenn Sie dies nicht tun, sehen Sie möglicherweise nicht einmal die Geräte unter / dev (laut Wie verwende ich "Instance Store Volumes" in Amazon EC2?)


21
2017-11-24 18:57



Ich möchte nur darauf hinweisen, dass Benutzer von t1.micro auf der kostenlosen Ebene diese Option nicht verwenden können. - Reuben L.


Hinweis: Amazon hat ihre geändert Preispolitikund berechnet ab Mitte 2016 keine E / A-Anfragen. Die Antwort wird hier aus historischen Gründen beibehalten, aber es gibt keine Kostenfolgen für die Verwendung (oder nicht Verwendung) von Swap auf EC2 EBS-unterstützten Instanzen.


19
2017-10-21 06:53



Diese Antwort ist für mich etwas irreführend oder verwirrend, da die gängigsten Instanztypen SSD-Volumes verwenden. aws.amazon.com/ec2/instance-types - Taylor Edmiston
@tedmiston: Diese Antwort ist in der Tat nicht mehr anwendbar. Ich habe mich an die neue Realität angepasst, aber im Grunde gibt es keine Kosten für E / A-Anfragen. Das Aktivieren von Swap (oder nicht) kann nun auf rein technischer Basis erfolgen. - Gui Ambros


Überprüf den /etc/fstab Datei, sie wurden wahrscheinlich ohne Austausch in dem Bild eingerichtet, das Sie verwenden. Ich denke, einige Leute laufen ohne Swap für Server, da sie davon ausgehen, niemals mehr als den gesamten Speicher zu verwenden - Swapping macht alles super langsam.

Allerdings bin ich immer paranoid über einen Prozess, der sich im Speicher aufbläht. Daher denke ich, dass es ratsam wäre, einfach ein Swap-Laufwerk einzurichten und ein Image von der laufenden ec2-Instanz neu zu erstellen.


1
2018-01-05 21:09



Gelegentliches Tauschen macht das System nicht langsam. - laebshade


Eine einfache Lösung zum Ausführen swap im EC2 Bilder sollen laufen swap komprimiert mit lz4 im ram mit zram-init.

Diese Lösung tut es nicht nehmen ram weg von der host:

enter image description here


0
2017-08-24 08:14



Sehr kreativ, aber würde es nicht sinnvoller sein, RAM als eigentlichen RAM zu verwenden, als es als In-Memory-Dateisystem für den Austausch zu verwenden? (die hauptsächlich verwendet wird, wenn der Arbeitsspeicher knapp wird) Die Reduzierung des verfügbaren Speichers für Anwendungen zum Erstellen von Swap scheint nicht intuitiv zu sein ... - HBruijn
Interessante Antwort, aber ich denke, mit EBS / Instance Store ist wahrscheinlich eine bessere Allzwecklösung. Ich habe eine t2.nano mit 512 MB RAM und 512 MB Swap auf EBS, die gut funktioniert. - Tim