So verkleinern Sie ein * root * EBS-Volume unter AWS EC2 (Amazon Linux)

Wenn Sie jemals versehentlich ein besonders großes EBS-Volume für eine EC2-Instanz erstellt haben, werden Sie feststellen, dass es mit AWS nicht besonders einfach ist, das Volume zu verkleinern. Es ist möglich! Und nicht so schwer. Sie behalten alle Ihre Daten bei (und können wieder booten), während Sie etwas Geld sparen. Sie müssen diese Schritte jedoch genau befolgen:

  1. Sie haben eine vorhandene EC2-Instanz mit einem zu großen Root-Volume. In diesem Beispiel sind meine 100 GB. Notieren Sie sich die Informationen zu Anhang und Verfügbarkeitszone auf Ihrem aktuellen Volume:
Mein Volume ist derzeit an / dev / sda1 und in AZ us-west-2a angehängt.

2. Wenn Sie noch nicht wissen, wie viele Daten auf Ihrem Volume gespeichert sind, melden Sie sich bei Ihrer Instanz an und überprüfen Sie mit:

df -h

3. Beenden Sie die Instanz, und halten Sie sie an, falls Sie dies noch nicht getan haben (auf der Seite "Instances").

3. Erstellen Sie einen Schnappschuss Ihres zu großen Volumes (auf der Seite Volumes):

Löschen Sie diesen Schnappschuss erst, wenn Sie überprüft haben, dass am Ende alles funktioniert. Solange Sie dies beibehalten, können Sie die Schritte immer wiederholen.

4. Erstellen Sie aus diesem Snapshot ein Volume mit derselben Größe (in meinem Fall 100 GB) und demselben AZ (ab Schritt 1 oben). Wir werden das kleinere Volumen als nächstes erstellen, vertrauen Sie mir:

5. Erstellen Sie ein brandneues Volume (nicht anhand eines Schnappschusses), das klein genug ist, um Ihre Bedürfnisse zu befriedigen, und groß genug ist, um Ihre Daten mit freiem Speicherplatz zu speichern (siehe Schritt 2):

In meinem Fall belegen meine Daten 14 GB, ich gehe also von 20 GB aus.

6. Ihre Liste sollte nun drei Volumes enthalten, von denen nur eines an Ihre Instanz angehängt ist:

7. Hängen Sie die beiden neu erstellten Volumes an und notieren Sie die Anhangsinformationen für diese:

Beachten Sie, dass meine Dateien an / dev / sdf und / dev / sdg angehängt sind. Diese werden unter Linux als / dev / xvdf bzw. / dev / xvdg angezeigt.

8. Starten Sie Ihre Instanz von der Seite Instances und ssh in:

ssh -i [ssh_private_key] ec2-user @ ipv4-address

9. Um zu sehen, welche Partitionen vorhanden sind und welche Volumes gerade gemountet sind (sollte momentan nur das ursprüngliche Root-Volume sein), führen Sie Folgendes aus:

lsblk

(In meinem Fall zeigt dies, dass / dev / xvda eine Partition unter / dev / xvda1 hat, die auf / gemountet ist. / dev / xvdf hat eine Partition unter / dev / xvdf1 und / dev / xvdg hat noch keine Partitionen.)

11. Erstellen Sie eine neue Partitionstabelle und ein neues Dateisystem auf dem (kleineren) Zieldatenträger (beachten Sie, dass sich mein kleinerer Datenträger unter / dev / xvdg befindet; Ihr Datenträger kann davon abweichen):

sudo fdisk / dev / xvdg
wipefs
sudo fdisk / dev / xvdg
n [für neue Partition]
p [für primäre Partition]
[Übernehmen Sie alle Standardeinstellungen, indem Sie wiederholt die Eingabetaste drücken]
w [ausschreiben und beenden]

12. Führen Sie lsblk erneut aus, um sicherzustellen, dass Ihre neue Partition unter / dev / xvdg1 erstellt wurde.

12. Erstellen Sie ein neues Dateisystem auf der neuen Partition des (kleineren) Zieldatenträgers und kennzeichnen Sie das Dateisystem so, dass Linux die Partition erkennen und von dort booten kann:

sudo mkfs.ext4 / dev / xvdg1
sudo e2label / dev / xvdg1 /

13. Erstellen Sie Mountpunkte für die Quell- und Zielpartition, hängen Sie sie ein und kopieren Sie alle Daten von Ihrem Snapshot-Volume auf Ihr kleineres Volume:

sudo mkdir / source / target
sudo mount -t ext4 / dev / xvdf1 / source
sudo mount -t ext4 / dev / xvdg1 / target
sudo rsync -HAXxSPa / source / / target
[HINWEIS! SEHR WICHTIG! Es gibt kein "/" nach / target!

14. Beenden Sie und kehren Sie zur AWS-Konsole zurück. Stoppen Sie Ihre Instanz. Wechseln Sie zur Seite Volumes, und trennen Sie alle drei Volumes. Verbinden Sie nun das kleinere Volume (Ihr Ziel) erneut mit / dev / xvda.

15. Starten Sie Ihre Instanz erneut. Es sollte erfolgreich gestartet werden, aber jetzt ist nur das kleinere Volume angehängt.

Tah-dah!

16. Wenn Sie bestätigt haben, dass alles nach Ihren Wünschen funktioniert, löschen Sie die beiden größeren Volumes von der Seite "Volumes".

Bitte lassen Sie mich in den Kommentaren wissen, ob Sie dies nützlich fanden und ob ich etwas Entscheidendes übersehen habe. Gerne übernehmen wir Ihre Ergänzungen!

Prost,

EIN