Wie erstelle ich einen funktionierenden AMI aus einem Wiederherstellungs-Snapshot nach einem Ausfall am 8. August neu?

11

Nach dem Ausfall von Amazon am 8. August funktionierten alle (EBS-basierten) AMIs für viele Benutzer nicht mehr . Dies ist auf die Beschädigung einiger Sektoren in Snapshots zurückzuführen, auf denen die AMIs basieren.

Amazon hat jedoch Wiederherstellungs-Snapshots erstellt, in denen die Festplattenprobleme behoben werden sollten. Diese werden nach dem Motto "Wiederherstellungs-Snapshot für vol-xxxxxxxx" benannt.

Ich habe einen neuen AMI aus einem Wiederherstellungs-Snapshot erstellt, der einwandfrei funktioniert hat, aber Instanzen, die von diesem neuen AMI gestartet wurden, funktionieren nicht: Ihr Status lautet "Wird ausgeführt", aber ich kann weder auf den Computer zugreifen noch auf einen der dort ausgeführten Webdienste zugreifen. Es läuft darauf hinaus (aus dem Systemprotokoll, auf das über die AWS-Verwaltungskonsole zugegriffen werden kann):

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)

Ich habe ein Volume, das aus diesem Wiederherstellungs-Snapshot erstellt wurde, auf einem anderen Server in AWS bereitgestellt, und alles sieht ganz normal aus. Zum Beispiel sagt fsck:

$ sudo fsck -a /dev/xvdg
fsck from util-linux-ng 2.17.2
uec-rootfs: clean, 53781/524288 files, 546065/2097152 blocks

In einer der Diskussionen im AWS-Forum fand ich diesen Rat von jemandem mit ähnlichen Problemen:

Eine Problemumgehung besteht darin, aus dem Snapshot ein Volume zu erstellen und es an eine laufende Instanz anzuhängen. Verwenden Sie fsck --force, um die Überprüfung des Dateisystems zu erzwingen. Nach dem Löschen können Sie einen Snapshot erstellen und für das AMI verwenden.

Aber ich weiß nicht, wie ich fsck auf Ubuntu (11.04) erzwingen soll:

$ sudo fsck --force /dev/xvdg
fsck from util-linux-ng 2.17.2
fsck.ext3: invalid option -- 'o'

Weiß jemand, wie man eine Dateisystemprüfung auf dem Volume unter Ubuntu erzwingt? Haben Sie weitere Ideen zum Starten von Arbeitsinstanzen, die auf dem Wiederherstellungs-Snapshot basieren?

Im Moment sieht es so aus, als ob es schneller gehen könnte, einfach von einem sauberen Ubuntu AMI neu zu starten und alle unsere Dienste neu einzurichten. :-( Aber natürlich würde ich das lieber nicht tun, wenn es eine Möglichkeit gibt, den Wiederherstellungs-Snapshot tatsächlich zum Laufen zu bringen.

Jonik
quelle

Antworten:

14

Beim Versuch, eine Maschine zu duplizieren, stieß ich auf dasselbe Problem.

Das Problem stellte sich als Kernel heraus. Sowohl beim Erstellen des AMI als auch der Instanz habe ich die Standardeinstellung für das Kernel-Image ausgewählt.

Um das Problem zu beheben, habe ich das AMI mit demselben Kernel-Image wie die ursprüngliche Instanz neu erstellt.

DCYorke
quelle
Zur Verdeutlichung fehlt dem Standard-Kernel-Image die ext4-Unterstützung, aber der Kernel, der zum Erstellen des AMI verwendet wurde, sollte trotzdem immer verwendet werden.
DCYorke
Wenn nur der Schnappschuss übrig bleibt, ist die Wiederherstellung sehr schwierig. Können Sie eine Methode vorschlagen, um diese Art von Metadaten (auch welche Sicherheitsgruppen und Benutzerdaten verwendet werden) mit dem Snapshot oder woanders zu sichern?
Martijn Heemels
2

Könnten Sie den folgenden Befehl versuchen (Anmerkung -f Option anstelle von --force): sudo fsck -f /dev/xvdg

Hoffe das hilft. Fred

Fred
quelle
fsck -fmacht in der Tat etwas mehr (weiß nicht genau was; man fscksagt nichts darüber), also +1. Aber auf jeden Fall löst dies nicht das ganze Problem; Ich habe einen Snapshot und dann einen AMI aus dem fscked-Volume erstellt und eine Instanz daraus gestartet und erhalte immer noch den gleichen Fehler "Kernel-Panik ... Root kann nicht gemountet werden" im Systemprotokoll.
Jonik
0

Ich wollte nicht mehr Zeit damit verschwenden, mit seltsamen AWS-spezifischen Problemen zu kämpfen, also habe ich eine neue saubere Instanz aus einem der offiziellen Ubuntu-AMIs erstellt (in meinem Fall ami-359ea941ein 32-Bit-EBS-gestütztes Image von Ubuntu 11.04 in der eu-west-1 region) und habe dort mein Server-Setup neu erstellt.

Die Tatsache, dass ich ein aus dem Wiederherstellungs-Snapshot in der neuen Instanz erstelltes Volume bereitstellen konnte, beschleunigte die Neueinrichtung jedoch erheblich. Zum Beispiel habe ich so etwas wie cp -a /mnt/recovery/usr/local /usreine ganze Menge Sachen unter wiederhergestellt /usr/local.

In meinem Fall waren die Wiederherstellungssicherungen also alles andere als nutzlos, da ich auf die Daten zugreifen konnte. Aber natürlich wäre es immer noch schöner gewesen, einfach einen AMI aus dem Snapshot zu erstellen und weiterhin (Instanzen von) zu verwenden, die wie der gesamte Vorfall nie passiert sind. (Fühlen Sie sich frei, eine Antwort hinzuzufügen, wenn Sie wissen, wie man das erreicht!)

Jonik
quelle