Wie erhöhe ich die EBS-Volume-Größe einer laufenden Instanz? [geschlossen]

72

Ich habe einen Server, auf dem die neuesten Ubuntu-AMIs von Canonical ausgeführt werden. Die Größe des EBS-Startvolumes beträgt 8 GB. Ich weiß, dass ich die Größe von EBS-Volumes ändern kann, indem ich einen Snapshot mache, ein neues Volume erstelle und die Partition darauf erweitere. Wie kann ich das Volume bei laufendem Computer vergrößern? Wenn dies nicht möglich ist, welche Methode wird bevorzugt, um das Startvolumen bei minimalen Ausfallzeiten zu erhöhen?

j0nes
quelle
Ich weiß, dass dies beantwortet wurde, aber ich habe neulich dieses fantastische einfache Tutorial gefunden. Und es ist das, was ich am Wochenende verfolgen / verwenden werde. tekgoblin.com/2012/08/27/…
leen3o
Und die Linux-Version, die für mich funktionierte und leicht zu folgen war: cloud.tekgoblin.com/2013/04/29/…
Carasel
Hier ist ein Link zu einer neueren (2015) Beschreibung des Prozesses.
Ville
Wenn jemand nach 2019 hierher gekommen ist, sollte dies ohne Ausfallzeiten geschehen
Atul

Antworten:

40

Leider ist es nicht möglich, die Größe eines Amazon EBS- Root-Gerätespeichervolumens zu erhöhen, während die Amazon EC2- Instanz ausgeführt wird. Eric Hammond hat einen ausführlichen Artikel über die Größenänderung der Root-Festplatte geschrieben auf einer laufenden EBS Boot EC2-Instanz :

Solange Sie mit einer kleinen Ausfallzeit auf der EC2-Instanz (einige Minuten) einverstanden sind, können Sie das Root-EBS-Volume durch eine größere Kopie ersetzen, ohne eine neue Instanz starten zu müssen.

Wenn Sie die von ihm beschriebenen Schritte richtig vorbereiten (ich empfehle dringend, sie zuerst mit einer wegwerfbaren EC2-Instanz zu testen, um sich mit dem Verfahren vertraut zu machen), sollten Sie in der Lage sein, den Vorgang nur mit einigen Minuten Ausfallzeit abzuschließen.

Viel Glück!

Steffen Opel
quelle
2
Noch besser ist es, wenn Sie ein Skript schreiben, um die Aktion auszuführen. Testen Sie es mit einer Testinstanz und führen Sie den Test dann auf dem Produktionsserver aus, um das Risiko zu verringern, einen Schritt zu vergessen.
Bwight
16
DIESE ANTWORT IST NICHT MEHR WAHR. docs.aws.amazon.com/AWSEC2/latest/UserGuide/…
Cohadar
69

Wir können die Volume-Größe mit den neuen EBS Feature Elastic-Volumes erhöhen. Nachdem Sie die folgenden Schritte ausgeführt haben, müssen Sie die folgenden Schritte ausführen

Angenommen, Ihr Volumen war 16 GB und Sie haben es auf 32 GB erhöht.

    $lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  32G  0 disk
└─xvda1 202:1    0  16G  0 part /

Um xvda1 von 16 GB auf 32 GB zu erweitern, benötigen wir growpart. Growpart ist als Teil von Cloudutils erhältlich

sudo apt install cloud-utils

Führen Sie nach der Installation der Cloud-Utils den Befehl growpart aus

sudo growpart /dev/xvda 1

Jetzt wird lsblk zeigen

    $ lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  32G  0 disk
└─xvda1 202:1    0  32G  0 part /

aber df -h zeigt nur 16GB

Der letzte Befehl zum Erweitern von xvda1 auf 32 GB lautet

sudo resize2fs /dev/xvda1

Im Falle eines XFS-Dateisystems

sudo xfs_growfs /dev/xvda1 Danke Ei

tk120404
quelle
Es funktioniert. Danke.
Murali
Das ist wirklich erstaunlich, funktioniert wie ein Charme - vielen Dank :-)
Peter T.
hat großartig funktioniert, um den zugewiesenen Speicherplatz von der aws-Konsole
anzuwenden
1
Dieser sollte als Antwort akzeptiert werden!
Abweichend
2
Wenn Sie ein XFS-Dateisystem verwenden, sollte der letzte Befehl sudo xfs_growfs /dev/xvdalanstelle von lauten resize2fs.
Ei
22

Eine späte Antwort auf diese 5-jährige Frage

AWS hat gerade eine neue EBS-Funktion namens Elastic Volumes angekündigt , mit der Sie die Volume-Größe erhöhen, die Leistung anpassen oder den Volume-Typ ändern können, während das Volume verwendet wird.

Weitere Informationen finden Sie im AWS-Blog hier .

Khalid T.
quelle
1
Dies ist fantastisch, aber beachten Sie, dass einige ältere Volumes möglicherweise nicht unterstützt werden. Ich lief aws ec2 modify-volume --region us-west-2 --volume-id vol-0123456789 --size 20und bekam diesen Fehler:An error occurred (InvalidParameterValue) when calling the ModifyVolume operation: Volume type EBS Magnetic is not supported.
Runamok
@ Runamok: Das stimmt. Wie hier angegeben , werden magnetische Volumentypen der vorherigen Generation von der oben beschriebenen Methode nicht unterstützt. In diesem Fall wäre es die Lösung, einen Snapshot auf einem anders konfigurierten EBS-Volume wiederherzustellen.
Khalid T.
8

Sie müssen nur zuerst den Snapshot erstellen und aus diesem Snapshot ein anderes Volume erstellen. Sobald das neue Volume fertig ist, trennen Sie das alte Volume von der Instanz und hängen Sie das neue Volume an. Stellen Sie sicher, dass Sie die Instanz stoppen, bevor Sie diesen Prozess starten, und starten Sie die Instanz neu, sobald sie abgeschlossen ist.

Siehe http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.html

Opcrat
quelle
-1

Dies funktioniert für das xfs-Dateisystem. Führen Sie einfach diesen Befehl aus xfs_growfs /

Saurabh Chandra Patel
quelle
Es funktioniert für AWS unubtu 12.X. und es ist möglich, dass zur Laufzeit kein Neustart erforderlich ist.
Saurabh Chandra Patel
-1

Ich habe festgestellt, dass ich beim Versuch, die Root-Partition / dev / sda1 zu erhöhen, die auf centos6 als / dev / xvda1 gemeldet wurde, das Volume nicht aushängen konnte, um die Partition zu erweitern.

Ich habe dies umgangen, indem ich mein ursprüngliches Volume als / dev / sda1 und meinen Snapshot als / dev / sdb gemountet habe. Ich habe dann das Image neu gestartet und die Größe der Partition / dev / sdb1 mithilfe von parted geändert.

Nachdem die Größe der Partition / dev / sdb1 geändert wurde, habe ich beide Volumes getrennt und das neue Volume erneut an / dev / sda1 angehängt und resize2fs / dev / xvda1 ausgeführt.

Dave Hunter
quelle
-2

Du kannst das nicht machen. Wenn Sie sich jedoch mehr auf Ausfallzeiten als auf Kosten konzentrieren, können Sie möglicherweise Ihre Hauptinstanz klonen, ein größeres EBS-Speichergerät auf Ihrem System bereitstellen, die Daten kopieren und dann den Datenverkehr auf Ihre neue Instanz umleiten.

Wenn Sie möchten, verfügt eine Methode, die ich in letzter Zeit mit S3 verwende, über ein Medium zur Sicherung und Bereitstellung auf anderen Systemen. So läuft beispielsweise Ihr vorhandenes System. Legen Sie ein Skript fest, um Ihre Daten alle N Minuten / Stunden / Tage auf s3 hochzuladen. Schreiben Sie dann ein Skript, das beim Starten neuer Instanzen zum Herunterladen dieser Daten verwendet werden soll. Wenn Ihre Daten nicht ständig aktualisiert werden, sollte dies gut funktionieren (für mich verwende ich dies, um die aktualisierte Version meiner Codebasis zu verteilen, während die Daten selbst auf einem ec2-Datenbankserver verwaltet werden).

Hoffentlich hilft das.

Verlorene Seele
quelle