Richtiger Vorgang zum Starten einer neuen EC2-Instanz aus einem EBS-Snapshot


7

Ich habe eine EC2-Instanz, auf der Ubuntu 12.04 32-Bit-AMI ausgeführt wird (auf der ersten Seite der Classic-Assistent zum Starten einer neuen Instanz verfügbar). Das Root-Gerät ist ein EBS-Volume. Ich folge dann diesen Schritten:

  • Stoppen Sie den Server
  • Klicken Sie mit der rechten Maustaste auf der Registerkarte Volumes auf Volume -> Snapshot erstellen
  • Klicken Sie mit der rechten Maustaste auf den Schnappschuss auf der Registerkarte Schnappschüsse -> Bild aus diesem Schnappschuss erstellen
  • Klicken Sie auf der Registerkarte AMI mit der rechten Maustaste auf das neu erstellte AMI und wählen Sie "Instanz starten".

Während des dritten Schritts des Assistenten bemerke ich diese Zeile für "Speichergerätekonfiguration".

Root    /dev/sda1   snap-xxxxxx 8GiB    standard    true

Dies scheint mir darauf hinzudeuten, dass der Snapshot als Root-Volume für die neue Instanz verwendet wird (es ist tatsächlich das einzige Volume).

Ich starte dann die Instanz. Die "Statusprüfungen" während des "Initialisierungs" -Schritts schlagen jedoch fehl. Wenn ich mit der rechten Maustaste auf die Instanz klicke und "Systemprotokoll abrufen", ist dies das Ende des Protokolls:

Using IPI No-Shortcut mode
XENBUS: Timeout connecting to devices!
md: Autodetecting RAID arrays.
md: autorun ...
md: ... autorun DONE.

EXT3-fs: sda1: couldn't mount because of unsupported optional features (240).
EXT2-fs: sda1: couldn't mount because of unsupported optional features (244).
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(8,1)

Was mache ich hier falsch? Mein Anliegen ist zweifach:

  • Wenn ich nicht von einem Snapshot booten kann, ist das Snapshot-Dienstprogramm weniger nützlich
  • Wenn ich aus einem Snapshot keine AMI zum Erstellen einer neuen Instanz erstellen kann, verringert dies nicht nur die Nützlichkeit von Snapshots, sondern lässt uns auch fragen, wie ich Instanzen einfach "duplizieren" kann.

1
Vermutlich hatten Sie ein EXT4-Dateisystem auf der ursprünglichen Instanz. Das Verfahren sieht richtig aus, es ist jedoch möglich, dass Ihre Kernel (AKIs) nicht übereinstimmen. Überprüfen Sie die von der ursprünglichen Instanz verwendete AKI und vergleichen Sie sie mit der der neuen Instanz. Wenn sie nicht übereinstimmen, geben Sie die AKI zum Startzeitpunkt explizit an.
Cyberx86

1
@ cyberx86 Genau das war es, danke. Geben Sie das als Antwort ein und ich werde es als richtig markieren. Ich muss sagen, eine Dropdown-Box voller aki-xxxxxxx ohne Beschreibungen zu haben, ist nicht sehr intuitiv. Es gibt keinen Kontext dafür, wofür diese Informationen verwendet werden und warum sie wichtig sind, und deshalb habe ich immer "Standard" verwendet
Matt

Antworten:


10

Die Fehler, die Sie erhalten haben, deuten darauf hin, dass Ihr Dateisystem aktueller ist als das vom Kernel unterstützte (höchstwahrscheinlich ein ext4 auf einem Kernel, der nur ext2 / 3 unterstützt). Einige AMIs hängen von einem nicht standardmäßigen AKI (Amazon Kernel Image) ab, um bestimmte Funktionen bereitzustellen.

In diesem Fall scheint das von Ihnen befolgte Verfahren korrekt zu sein. In Kombination mit dem Fehler, den Sie erhalten haben, besteht daher eine gute Chance, dass die AKIs nicht übereinstimmen. Überprüfen Sie die von der ursprünglichen Instanz verwendete AKI und vergleichen Sie sie mit der der neuen Instanz. Wenn sie nicht übereinstimmen, geben Sie die AKI zum Startzeitpunkt explizit an. (Sie können die AMI auch manuell erstellen und dabei die AKI zu diesem Zeitpunkt angeben, sodass sie beim Start angegeben werden muss.)

Abgesehen davon wird ein besseres AMI-Design PV-GRUB als Bootloader verwenden, um einen Kernel vom AMI selbst zu laden (anstatt ein bestimmtes externes AKI zu benötigen), was den Prozess der Aktualisierung des Kernels vereinfacht. Die AWS-Dokumentation zu vom Benutzer bereitgestellten Kerneln ist lesenswert, wenn Sie dies in Ihrem AMI implementieren möchten.



1

Ich bin auf ein ähnliches Problem gestoßen, und es stellt sich heraus, dass die Standardeinstellungen von AWS EC2 beim Starten der Instanz im Vergleich zum Erstellen einer AMI unterschiedlich sind: Hardwarevirtualisierung (HVM) ist im ersten Fall die Standardauswahl, aber paravirtual (PV) ist die Standardeinstellung für die Imageerstellung.

Ich bin darauf gestoßen, als ich versucht habe, die EC2-Instanz zwischen den Verfügbarkeitszonen zu verschieben, indem ich das EBS-Volume aufgenommen und einen neuen AMI erstellt habe. Diese Diskrepanz in den Einstellungen (auf die ich auch nicht geachtet habe) hat eine Stunde für mich verschwendet.

Also, tl; dr: Wählen Sie einfach HVM, wenn Sie von einem angepassten AMI starten, und Ihre Instanz sollte einwandfrei starten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.