Kann ich das Root-EBS-Gerät meiner Amazon EC2-Instanz ändern?

107

Ich habe eine von EBS unterstützte Amazon EC2-Instanz. Ich möchte das Root-Gerät in dieser Instanz ändern. Können Sie bitte den besten Weg dazu nennen?

Ich finde nur Dokumentation zum Ändern mehrerer Attribute von Blockgeräten, aber sie scheinen nicht das Festlegen als Root-Gerät zu beinhalten.

Kegel
quelle

Antworten:

191

Ja, es ist ganz einfach:

  1. Stoppen Sie die Instanz.
  2. Trennen Sie das Root-EBS-Volume.
  3. Fügen Sie das alternative EBS-Volume als Root hinzu: /dev/sda1
  4. Starten Sie die Instanz.

Dies setzt natürlich voraus, dass Ihr alternatives EBS-Volume bootfähig ist - es muss das bootfähige Betriebssystem-Image enthalten.

Acht-Bit-Guru
quelle
50
Der Schlüssel ist "als Wurzel" - in der /dev/sda1Tat!
Aseem Kishore
6
Danke, das ist großartig. Ein Problem ist, dass sich das DNS / IP in diesem Fall ändern kann. Aktualisieren Sie daher alle DNS / Elastic-IPs usw. Ich habe eine Weile versucht herauszufinden, warum ich mich nicht mehr darauf einlassen konnte, und das war der Grund.
mrooney
13
Weder /dev/sdanoch /dev/sda1für mich gearbeitet, aber /dev/xvdatat.
Bhspencer
8
Mann, das war beängstigend. /dev/sda- hat nicht funktioniert. /dev/sda1, dev/sdf- hat funktioniert, aber die Instanz wurde nicht gestartet. /dev/xvdahat funktioniert.
Alex Fortuna
13
Der Name, den Sie verwenden sollten, ist das Ergebnis dieses Befehls: aws ec2 describe-instances --instance-id i-XXXXXXX | grep -i rootDeviceNamein meinem Fall/dev/xvda
Neoecos
42

Ich habe nicht genügend Mitarbeiter, um der ausgewählten Antwort einen Kommentar hinzuzufügen, aber ich möchte darauf hinweisen, dass dies für mich /dev/sda1nicht funktioniert hat (nicht als root /dev/xvdaangehängt ), sondern funktioniert hat (als root angehängt). Die Instanz ist eine der neueren t2.micro-Instanzen, die HVM verwenden.

byl83
quelle
Ich denke, die Maschinen, die in VPC sind, Gerätenamen des Formats / dev / xv * selbst funktionieren und Sie müssen keine Namen im Format / dev / sd * angeben. Dies ist eine Beobachtung - ich bin kein Experte, der dies mit Zuversicht sagt.
Mayank Jaiswal
Ich habe eine Instanz, die dieser Beschreibung entspricht und die nach dem Trennen und erneuten Anschließen des Root-Geräts nicht gestartet werden kann ("Root-Gerät kann nicht gefunden werden"). Ich möchte diese Antwort versuchen, aber wenn ich sie nicht /dev/sda1anhänge, weigert sich AWS, meine Instanz zu starten. Gibt es eine andere Einstellung, die ich konfigurieren muss, um einen alternativen Root-Gerätenamen zu verwenden?
Jack O'Connor
/ dev / sda1 für Linux / dev / xvda für Windows
Luis
whoopse, stellen Sie sicher , dass die Partition zu identifizieren, / dev / sda 1 , /dev/sdaungültig ist , aber /dev/sda1ist in Ordnung.
ThorSummoner
16

Um den Kommentar von Diomidis Spinellis im Kommentarthread der akzeptierten Antwort zu erläutern, ist es wichtig, die Dateisystembezeichnung des Geräts zu überprüfen, das Sie als neues Root-Gerät einschalten möchten. Bei der Fehlerbehebung bei meiner eigenen Servermigration musste ich Folgendes tun, bevor meine Instanz gestartet werden konnte:

Verwenden Sie den e2labelBefehl, um die Bezeichnung des ext2 / ext3 / ext4-Dateisystems zu ändern, das Sie für Ihr neues Root-Gerät erstellt haben.

Überprüfen Sie zunächst die Dateisystembezeichnung für Ihr aktuelles Root-Gerät.

$ sudo e2label /dev/xvda1
cloudimg-rootfs

Stellen Sie das neue Gerät so ein, dass es dieselbe Dateisystembezeichnung hat.

$ sudo e2label /dev/xvdg 'cloudimg-rootfs'

In meinem Fall war das Etikett cloudimg-rootfs. Manchmal wird es einfach sein /.

Es ist wichtig zu verstehen, wie e2label funktioniert. Überprüfen Sie man e2labelIhren Computer oder besuchen Sie http://linux.die.net/man/8/e2label, um weitere Informationen zu erhalten.

Joey
quelle
1
Das ist so unglaublich wichtig, ich kann nicht verstehen, warum diese Antwort nicht häufiger gefunden wird.
Ays0110
3

Dies ist die von aws vorgeschlagene Lösung. Sie können das Root-Volume nach dem Stoppen von der ursprünglichen Instanz trennen. Das Root-Volume ist an / dev / sda1 angehängt. Sobald dies getrennt ist, hängen Sie es bitte an die neue Instanz an. Nachdem das Volume angehängt wurde, müssen Sie es möglicherweise vom Betriebssystem aus bereitstellen. Nach dem Mounten sollten Sie die darin enthaltenen Daten sehen.

Nachdem Sie den neuen Schlüssel hinzugefügt haben, können Sie ihn trennen und unter / dev / sda1 an die ursprüngliche Instanz anhängen.

Ich empfehle, einen Snapshot des Root-Volumes zu erstellen, bevor Sie Änderungen vornehmen.

Bevor Sie Lösungen ausprobieren, probieren Sie sie einfach in den nicht wichtigen Instanzen oder Spot-Instanzen aus

Yunus
quelle
1

Wenn Sie dies über CloudFormation tun möchten, müssen Sie Folgendes tun:

  1. Erstellen Sie einen Snapshot von einem vorhandenen Root-Volume (über die Konsole oder die CLI).
  2. Erstellen Sie aus diesem Snapshot eine neue AMI. Erhöhen Sie hier die Größe des Root-Volumes. Stellen Sie sicher, dass Sie die richtige Virtualisierungszeit (paravirtuell oder HVM) auswählen.
  3. Setzen Sie in Ihrer AWS :: EC2 :: Instance-Ressource den ImageId-Parameter auf das neue AMI, das Sie gerade erstellt haben

Stellen Sie Ihren Stack bereit. Dadurch wird Ihre Instanz neu erstellt. Stellen Sie daher sicher, dass Sie eine elastische IP-Adresse verwenden oder über DNS-Zugriff verfügen.

Der Grund, warum Sie diese Problemumgehung durchführen müssen, ist, dass Sie mit CF die Größe des Root-Volumes in EC2 BlockDeviceMappings nicht anpassen oder die SnapshotId des Root-Volumes nicht anpassen können.

Joe Alamo
quelle
0

Wenn Ihr Volume bereitgestellt wird, wird es nachträglich mit Zahlen versehen, z. B.: Wenn /dev/sdaes bereitgestellt wird, /dev/sda1, /dev/sda2hängt es von den von Ihnen erstellten Partitionen ab. Da wir das Root-Gerät selbst mounten, wird davon ausgegangen, dass das Gerät bereits gemountet ist. Daher müssen wir /dev/sda1für das Mounten des Volumes als Root-Gerät angeben. Hinweis: Es sollte kein Root-Volume angehängt sein.

Führen Sie die folgenden Schritte aus: 1) Gehen Sie zu Ihren Volumes und wählen Sie unter Aktion die Option Volumes anhängen aus. 2) Wählen Sie Ihre Instanz aus. 3) Geben Sie zum Mounten als Root den Gerätenamen als /dev/sda1 4) Starten Sie Ihre Instanz.

Prashanth
quelle