So erhöhen Sie die Größe einer Festplatte auf einer laufenden Instanz unter Amazon EC2

11

Ich habe eine laufende Instanz eines EC 2-Server-Setups mit Ubunto. Was ist der beste Weg, um die Festplattengröße ohne Ausfallzeiten und minimales Risiko zu erhöhen?

Wenn Sie die Anleitungen durchlesen, besteht eine Möglichkeit darin, eine neue Festplatte zu erstellen, Daten zu migrieren, die Instanzaustauschdiskette auszuschalten und wieder einzuschalten. Dieser Ansatz klingt ein bisschen riskant und erfordert einige Ausfallzeiten. Ich frage mich, ob es einen besseren Ansatz gibt.

googletorp
quelle

Antworten:

13

Amazon AWS hat gerade (am 13. Februar 2017) eine neue Funktion veröffentlicht, mit der Sie die Größe eines EBS-Volumes ändern können.

Quelle: https://aws.amazon.com/blogs/aws/amazon-ebs-update-new-elastic-volumes-change-everything/

Auf diese Weise können Sie die Größe eines EBS-Volumes auf einer vorhandenen Instanz erhöhen, während diese ausgeführt wird.

Es ist wichtig zu beachten, dass das Ändern der Volume-Größe nicht die Größe des Dateisystems auf dem Volume ändert (für die meisten Dateisysteme). Je nach Dateisystem sind möglicherweise zusätzliche Schritte im Betriebssystem selbst erforderlich. Zum Beispiel ein resizefsOn- ext4Dateisystem, das heute von den meisten Linux-Betriebssystemen verwendet wird.

Die vollständige Dokumentation von AWS, die den Prozess beschreibt, finden Sie unter http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.html

In einigen Fällen hat das Blockgerät Partitionen zugeordnet, und nur dann enthält eine (oder mehrere) der Partitionen ein Dateisystem. In diesem Fall muss zuerst die Größe der Partition und erst dann das Dateisystem geändert werden. Dieser Vorgang ist ebenfalls in der Dokumentation beschrieben .

Die im Blog beschriebene neue Funktion zur Online-Größenänderung gilt nur für Instanzen der aktuellen Generation. Es gibt einige andere Überlegungen und Einschränkungen , die überprüft werden müssen, bevor eine Größenänderung des Volumes versucht wird.

Evgeny
quelle
Bevor Sie die Größe des Dateisystems ändern, müssen Sie auch die Größe der zugrunde liegenden Partition ändern, wodurch physische Partitionen für eine Hot-Größenänderung wirklich blockiert werden.
Tensibai
@ Tensibai Entschuldigung, ich verstehe nicht, was "Blockieren auf physischen Partitionen für eine Hot-Resize-Größe" bedeutet. Meinen Sie damit, dass das Ändern der Volume-Größe mithilfe von AWS-APIs Schreib- / Lesevorgänge auf das Volume blockiert?
Evgeny
Nein, ich meine, dass die Festplatte größer sein wird, aber die Partition auf der Festplatte bleibt dieselbe. Sie müssen sie verwenden, fdiskum die Größe zu ändern. In Bezug auf die Root-Partition können Sie die Festplattenpartitionstabelle normalerweise nicht schreiben, während sie bereitgestellt ist Sie können es nicht aushängen. Sie müssen an einem Punkt neu
starten
Richtig, wenn Sie vor dem Hinzufügen der Dateisystemschicht mehrere Partitionen verwenden, muss die Größe der Partitionen zuerst geändert werden. Danke, ich werde versuchen, das in die Antwort aufzunehmen und eine Anleitung zu zitieren, wie es gemacht wird.
Evgeny
Die Frage ohne Ausfallzeiten erwähnt. Um jedoch die Größe eines Root-Volumes zu ändern, müssten Sie die Instanz herunterfahren, um diesen Schritt auszuführen.
Chris Stryczynski
2

Was ich tue (und das beantwortet Ihre Frage nicht genau), ist wie folgt:

  1. Erstellen Sie hier ein EBS-Volume und hängen Sie es an das Instanzdokument an
  2. Scannen Sie die scsi-Busse erneut echo '- - -' > /sys/bus/scsi/devices/host1/scsi_host/host1/scan(möglicherweise müssen Sie die Hostnummer anpassen)
  3. Erstellen Sie ein physisches Volume mit pvcreateauf der neu gefundenen Festplatte ( fdisk -lum alle Festplatten aufzulisten)
  4. Erstellen Sie eine Volume-Gruppe und dann ein logisches Volume darauf ( vgcreateund lvcreate)
  5. Formatieren Sie das logische Volume mit dem gewünschten Dateisystem
  6. tar der Ziel-Mountpunkt, um ihn wiederherzustellen.
  7. Hängen Sie dieses Volume dort ein, wo Sie neuen Speicherplatz benötigen.
  8. Stellen Sie den Teer in diesem neu montierten Raum wieder her.

Die Schritte 6 und 8 sind optional, wenn Sie vor der Installation einen neuen Speicherplatz verwenden. Wenn Sie ein vorhandenes Verzeichnis ersetzen möchten, müssen Sie unbedingt vermeiden, dass zwischen dem Ende des Archivs und der Wiederherstellung etwas geschrieben wird.

Sie können die Schritte 4 bis 8 für verschiedene Mountpunkte wiederholen. Auf diese Weise können Sie den benötigten Speicherplatz erweitern und die Größe dieser Volumes online ohne Unterbrechung ändern.

Tensibai
quelle
0

Skalierung des ZFS Zero Downtime-Dateisystemspeichers unter AWS (oder anderswo)

Upsize

  1. Installieren Sie ZFS auf EC2.

    http://serverascode.com/2016/09/05/aws-zfs-user-data.html

  2. Erstellen Sie mit einem EBS-Volume einen Zpool für Ihre Massendaten.
  3. Fügen Sie ein weiteres EBS hinzu, um mehr Blockspeicher zu erhalten. (oder setzen Sie den Pool autoexpand = true und erweitern Sie einfach Ihren EBS)
  4. Fügen Sie das neue EBS zu Ihrem Zpool hinzu, um den Speicherplatz verfügbar zu machen. (es sei denn, Sie haben Autoexpand verwendet und die EBS-Größe erhöht)

Verkleinern

  1. Erstellen Sie einen neuen Zpool auf einem neuen EBS, der groß genug ist, um die geschrumpften Daten aufzunehmen. (muss noch nicht montiert werden oder sogar auf demselben EC2)
  2. Schnappschuss des alten zu großen Zpools
  3. zfs-sende den Snapshot an den neuen zpool
  4. Bewerben Sie den empfangenen Snapshot im neuen Pool und hängen Sie ihn an
  5. zerstöre den alten Pool
  6. zerstöre das EBS des alten Pools
Jeremy
quelle
0

Nach der Größenänderung des EBS-Volumes habe ich Folgendes ausgeführt, als ich einen ZFS-Pool erweitern musste:

parted -l # Get the list of partitions 
parted /dev/xvdf rm 9 # Remove the buffer partition
parted /dev/xvdf resizepart 1 100% # Resize the partition
zpool online -e <zfs partition name> /dev/xvdf # Expand the zpool and the filesystem it holds
Michael Pereira
quelle