AWS Unterschied zwischen einem Snapshot und AMI

107

Ich habe also Probleme herauszufinden, was genau der Unterschied zwischen diesen beiden ist.

So wie ich es verstehe, ist ein Snapshot einfach eine Sicherung des Festplattenlaufwerks, während die AMI eine Sicherung des gesamten Systems (oder einer Instanz, die ich sagen sollte) ist, aber befindet sich das gesamte System technisch nicht vollständig auf dem Festplattenlaufwerk? und wenn das der Fall ist, gibt es keinen klaren Unterschied und mir fehlt etwas?

Melbourne2991
quelle

Antworten:

70

Es gibt zwei Arten von AMIs (und entsprechende Instanzen):

  1. Instanzspeicher (manchmal auch S3-basiert genannt). Diese sind seltener und ich empfehle sie nicht für Anfänger. Ein Instanzspeicher-AMI ist eine Kopie des Stamminstanzspeicher-Volumes sowie einiger Metadaten, die alle in einem S3-Bucket in einem speziellen Format gespeichert sind

  2. EBS-Boot. Dies ist wahrscheinlich, was Sie verwenden. Ein EBS-Boot-AMI ist ein EBS-Snapshot des EBS-Root-Volumes sowie einiger Metadaten wie Architektur, Kernel, AMI-Name, Beschreibung, Blockgerätezuordnungen und mehr.

Sie können einen Snapshot eines EBS-Startvolumes erstellen und ihn in einen EBS-Start-AMI verwandeln, indem Sie ihn mit den entsprechenden Metadaten registrieren. Der schwierigste Teil davon ist die Angabe der richtigen AKI-ID (Kernel), damit diese korrekt startet.

Eric Hammond
quelle
Vielen Dank, Eric, ich habe ein AMI-Image gesichert und habe die Möglichkeit, es sowohl zu starten als auch zu registrieren. Ich bin verwirrt, was der Unterschied hier ist ...
Melbourne2991
Ich weiß nicht, was Sie unter "Sichern eines AMI-Images" verstehen.
Eric Hammond
8
Wenn Sie auf "AMI erstellen" klicken, erstellt EC2 einen EBS-Snapshot des EBS-Volumes dieser Instanz und registriert ihn als AMI. Sie können neue Instanzen starten, indem Sie AMI als Ausgangspunkt angeben. Sie können auch neue Volumes des EBS-Snapshots erstellen, wenn Sie nur die darauf befindlichen Dateien anzeigen möchten, ohne eine neue Instanz auszuführen.
Eric Hammond
6
Alternativ können Sie selbst einen EBS-Snapshot des EBS-Volumes erstellen und diesen Snapshot später als AMI registrieren. Dies ist eine etwas schwierigere Methode zum Erstellen eines AMI, da Sie die entsprechenden AMI-Registrierungsattribute kennen müssen, die festgelegt werden sollen. "AMI erstellen" erledigt das alles für Sie.
Eric Hammond
1
@ cosbor11 Sie können den Snapshot für ein AMI nicht löschen.
Eric Hammond
24

Der Hauptunterschied besteht zwischen der Art der Dienstleistung, auf die Bezug genommen wird. Ein Snapshot ist ein EBS-Volume, auf dem Sie den Status speichern und zu einem bestimmten Zeitpunkt mit denselben Daten neu starten können.

Ein AMI ist ähnlich, aber für die EC2-Instanzen selbst. Sie können keinen Snapshot einer nicht von ebs unterstützten Instanz erstellen, aber Sie können ein AMI (System-Image) von einer erstellen.

Im Allgemeinen verwende ich EBS-Snapshots als Sicherungslösungen für ein Datenbankvolume und verwende eine AMI, um die Instanzkonfiguration zu speichern

BrianJakovich
quelle
1
Was ist, wenn mein Volume meine Datenbanken sowie meine Instanzkonfiguration enthält? Was spart AMI, was ein EBS-Snapshot nicht kann (und umgekehrt)? Vielen Dank
Melbourne2991
1
Ein AMI kann sofort für eine neue Instanz gestartet werden. Ein EBS-Snapshot kann auf ein neues Volume (virtuelle Festplatte) kopiert werden. Diese virtuelle Festplatte kann als Basis für eine neue Instanz verwendet werden, ist jedoch keine Instanz für sich.
Dan Pritts
16

Ein AMI kann mithilfe eines Snapshots erstellt werden. Mit einem einzigen "Snapshot" können Sie beispielsweise mehrere AMIs erstellen, z. B. einen PV- und einen HVM-AMI mit demselben Snapshot.

Snapshot enthält also die System- / Betriebssystemdaten. AMI ist (Snapshot + Maschinen- / Hardware-Metadaten).

Anshu Prateek
quelle
1
Wenn ich eine AMI habe, wurde daraus eine Instanz erstellt. Enthält das AMI die Daten zu dieser Instanz? Ich meine, wenn die Instanz Tomcat WAR-Dateien enthält, enthält die AMI, aus der diese Instanz erstellt wurde, auch?
Dejell
1
Wenn Sie eine AMI aus der Instanz erstellen, die Tomcat (oder Dateien) enthält, enthält die neu erstellte AMI diese Dateien / Daten. Jede von diesem AMI weiter erstellte Instanz verfügt über diese Dateien. Die Quell-AMI, aus der Sie die Instanz erstellt haben, verfügt jedoch nicht über diese (vorausgesetzt, Sie haben die Dateien nach der Instanzerstellung zur Instanz hinzugefügt).
Anshu Prateek
15

Das hat mich auch verwirrt. Hier ist die einfachste Art, es zu verstehen:

  • EBS Snapshot stellt sehr oft eine Sicherung eines bestimmten EBS-Volumes dar, es kann sich um ein beliebiges Volume handeln (Root-Volume, Datenvolumen usw.)

  • AMI(Amazon Machine Image) ist eine Sicherung der gesamten EC2-Instanz. Bei richtiger Konfiguration ist es beispielsweise möglich, AMI zu erstellen, das mehrere EBS-Volumes enthält.

Jetzt mag es verwirrend klingen, aber beide werden als "EBS-Snapshots" gespeichert.

Stellen Sie sich das so vor:

  • EBS Snapshot ist nur eine Datensicherung.
  • AMIist eine Darstellung des Systemzustands zu einem bestimmten Zeitpunkt. Sie können auch davon booten.
Skryvets
quelle
Wenn ich also einen Snapshot des Root-Volumes erstellt habe, kann dieser Snapshot zum Starten einer Instanz verwendet werden?
Gaurav Parashar
1
Kurze Antwort: Nein. Es kann nicht direkt nur mit dem Volume durchgeführt werden, da AMI die einzige verfügbare "Boot-Option" für EC2 ist. Sie können jedoch AMI aus dem Volume erstellen und eine Instanz aus kürzlich erstelltem AMI starten (wie eine indirekte Option).
Skryvets
7

EBS Volumeist die zugrunde liegende Festplatte hinter EC2. Snapshotist eine zeitpunktbezogene Sicherung von bestimmten, volumewährend AMI eine Sicherung der gesamten EC2-Instanz ist, an die möglicherweise mehrere Volumes angehängt sind, genau wie bei virtuellen Maschinen.

Mit Packer können Sie automatisierte Maschinenabbilder erstellen, einschließlich AMIs für EC2, VMDK / VMX-Dateien für VMware, OVF-Exporte für VirtualBox usw.

EC2  <-- EBS Volume (Boot) + EBS Volume 
                        ^
                        |
                     Snapshot (only of specific volume)       
                        ^
                        |
                       AMI (Combined snapshots of all volumes, snapshot must have boot volume) 
                        ^
                        | 
                  Launch a new Instance (same installed softwares and configs, different specs) 

Snapshots können zum Sichern von Laufwerken / Volumes verwendet werden. Es handelt sich um einen inkrementellen Sicherungsvorgang. Dies bedeutet, dass jedes Mal, wenn Sie einen Snapshot eines Volumes erstellen, nur die neuen Änderungen hinzugefügt werden, die dem Volume seit Ihrer letzten Sicherung hinzugefügt / hinzugefügt wurden (nicht die gesamte Sicherung). Dies spart Sicherungszeit, Speicherplatz und letztendlich Kosten .

Schnappschüsse können verwendet werden in:

  • Sichern Sie Laufwerke regelmäßig

  • Ändern Sie die Art des Volumes, z. B. haben Sie Datenverkehr oder Lese- und Schreibvorgänge und müssen die E / A-Vorgänge erhöhen, damit Sie von gp2zu io1mit höher wechselnIOPs

Benutzerdefinierte AMIs können verwendet werden in:

  • Für die Notfallwiederherstellung, falls die aktuell ausgeführte EC2-Instanz beschädigt ist und nicht ohne Grund ausgeführt werden kann.

  • AMIs von Standardunternehmen, auf denen alle erforderlichen Software-Voraussetzungen installiert sind, die den Bereitstellungsprozess vereinfachen (z. B. für die Verbindung mit Splunk konfiguriert, einige Überwachungs- und Beobachtbarkeitssoftware installiert, Docker installiert oder für die Verbindung von Puppet oder Chef beim Start konfiguriert).

  • Mit AMIs können Sie Ihre Anwendungen problemlos in verschiedenen Regionen bereitstellen.

  • Aktualisieren Sie Ihren Server mit allen installierten Softwareprogrammen und deren Konfigurationen auf höhere oder andere Spezifikationen

  • AMIs können öffentlich für AWS-Konten freigegeben werden.

Muhammad Soliman
quelle
Ihr erster Absatz ist die klarste Definition, die ich bisher gelesen habe. Danke dir!
specialk1st
5

Hier sind einige weitere Unterschiede zwischen AMI- und EBS-Snapshots:

1) Ein AMI kann gestartet werden und enthält Links zum Root-Gerät sowie Links zu Snapshots der anderen Datenvolumes.

2) Das in einem AMI enthaltene Datenabbild stellt keinen genau definierten Zeitpunkt dar, es sei denn, die Instanz wird neu gestartet, was für die Produktionsumgebung normalerweise nicht akzeptabel ist. Schnappschüsse können auf konsistente Weise aufgenommen werden, da ihr genauer Zeitpunkt gesteuert werden kann. Bevor der Schnappschuss gestartet wird, kann sichergestellt werden, dass alles "für die Sicherung bereit" ist.

3) Ein AMI kann aus vorhandenen Snapshots des Root-Geräts für Linux erstellt werden, nicht jedoch für Windows.

OK1
quelle
2

Gemäß der von AWS bereitgestellten Definition

Ein AMI ist eine Vorlage, mit der Sie eine EC2-Instanz starten können. Ein EBS-Snapshot ist eine Kopie eines EBS-Volumes auf Blockebene. Das EBS-Volume kann ein Boot-Volume sein (dh ein Betriebssystem enthalten) oder ein Nur-Daten-Volume (das beispielsweise Datenbankdateien enthält). Mit RegisterImage erstellen Sie eine AMI (aus einem Snapshot).

Dies sind zwei verschiedene Konzepte, die auf verschiedenen Ebenen angewendet werden (EBS-Volumes vs. EC2-Vorlagen). Es gibt jedoch einige Abhängigkeiten zwischen den beiden Konzepten.

Für EBS-gestützte EC2-Instanzen (dh EC2-Instanzen, die von einem EBS-Volume booten) wird das AMI als EBS-Snapshot eines Boot-Volumes + einiger Metadaten implementiert (die Architektur der Maschine - 32 vs 64 Bit -, der Typ der Virtualisierung - HVM vs PV - etc ...)

Für EBS-gestützte EC2-Instanzen ist ein AMI ein EBS-Snapshot + eine XML-Datei. Sie können sogar Ihr eigenes AMI erstellen, basierend auf einem Snapshot eines Boot-Volumes, das Sie besitzen.

Ashish Khandelwal
quelle
1

Die Verwendung von Snapshots als Sicherungsstrategie ist kostengünstiger, da Sie bei mehreren Snapshots nur für eine vollständige Sicherung bezahlen und der Rest im Wesentlichen nur unterschiedlich und in der Regel viel kleiner ist.

Cary Gordon
quelle
6
Dies gilt nicht für EBS-Boot-AMIs, da es sich genau um EBS-Snapshots und einige kleine Metadaten handelt. Der Aufwand wäre identisch.
Eric Hammond
1

Sie können sich ein AMI als generische Vorlage für einen Computer vorstellen, bei dem das Betriebssystem und die installierten Komponenten erhalten bleiben.

Ein Snapshot kann alles enthalten, was ein AMI tut, speichert aber auch die Festplattendaten eines EBS-Volumes.

Welche Sie verwenden möchten, hängt im Allgemeinen davon ab, ob Ihre Instanzen von EBS unterstützt werden und ob Sie eine Maschine mit allen intakten Daten genau neu erstellen möchten oder nur eine generische Maschinenvorlage wünschen.

CIGuy
quelle
Das AMI speichert also nicht das EBS-Volume?
Melbourne2991
1
Ein AMI kann so eingestellt werden, dass es ein oder mehrere EBS-Volumes enthält. Diese Volumes sind jedoch beim Booten leer und enthalten nicht die Daten, die der ursprüngliche Quellcomputer enthielt.
CIGuy
Das AMI besteht also wirklich nur aus Metadaten (nicht sicher, ob das der richtige Begriff ist)? Wie welches Betriebssystem verwenden Sie, die Größe der Instanz usw.? Es sollte technisch nur ein paar kb groß sein, nehme ich es an?
Melbourne2991
1
Ein AMI speichert auch alle Programme, die Sie auf dem Computer installiert haben, Konfigurationsoptionen auf Betriebssystemebene usw. Es handelt sich also nicht nur um Metadaten, sondern sie sind normalerweise viel kleiner als ein Schnappschuss.
CIGuy
1
Diese Antwort ist falsch. Ein AMI enthält einen oder mehrere Schnappschüsse. Das heißt, es verweist auf einen oder mehrere Snapshots (es wird keine Daten kopiert) und enthält auch einige zusätzliche Metadaten. Aus diesem Grund können Sie einen Snapshot nicht löschen, wenn er aktuell von einem AMI verwendet wird. docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html Siehe auch Eric Hammonds Beiträge in diesem Thread.
Max Barraclough
0

Aus der von AWS bereitgestellten Definition geht der Unterschied hervor: Ein Amazon Machine Image (AMI) ist eine Vorlage, die eine Softwarekonfiguration enthält (z. B. ein Betriebssystem, einen Anwendungsserver und Anwendungen). Von einem AMI aus starten Sie eine Instanz, bei der es sich um eine Kopie des AMI handelt, das als virtueller Server in der Cloud ausgeführt wird. Während für Snapshots Sie können die Daten auf Ihren EBS-Volumes in Amazon S3 sichern, indem Sie Snapshots zu bestimmten Zeitpunkten erstellen. Snapshots sind inkrementelle Sicherungen. Dies bedeutet, dass nur die Blöcke auf dem Gerät gespeichert werden, die sich nach Ihrem letzten Snapshot geändert haben. Wenn Sie einen Snapshot löschen, werden nur die Daten entfernt, die nur für diesen Snapshot gelten.

Sidharth
quelle