Dokumentation
Amazon EC2: So erweitern Sie die Größe eines vorhandenen Root-Volumes
Anmerkungen:
- Ab 2019 ist dies der empfohlene Pfad, wenn Sie die Größe Ihres Wurzelvolumens erhöhen möchten. Best practice ist, ihren server für den ersten snapshot zu stoppen, aber streng genommen ist es nicht erforderlich.
- Alternativ sehen Sie bitte die Altdokumentation bei der Migration von Daten zu einer neuen Instanz (mit größerem Volumen), sollte sie dennoch relevant sein.
- Diese Seite ist nur für EBS-gestützte AWS EC2-Instanzen relevant. Verschieben von Dateien in Ihren Instanzspeicher.
* - "Instance Storage" ist nur für ältere AWS-Instanzgrößen verfügbar, d.h. ältere Versionen von TurnKey und/oder älteren AWS-Instanzgrößen. Wenn Sie einen v14.2+ TurnKey-Server haben, wird er mit ziemlicher Sicherheit EBS unterstützt. Versionen, die so weit zurück wie v13.0 sind, werden wahrscheinlich auch EBS unterstützt, aber überprüfen Sie dies in der AWS-Konsole, um sicher zu sein, oder posten Sie bitte auf der Seite. Foren Angabe der TurnKey-Version und AWS Instance size/type.
Das Problem: Dem Root-Dateisystem geht der Platz aus
Hier ist ein Beispiel, um das Problem zu veranschaulichen. Alon startet einen Micro-Server über den TurnKey Hub. Nach ein paar Monaten bemerkt Alon, dass der Speicherplatz auf seinem 10 GB Root-Dateisystem fast erschöpft ist.
# df -h Filesystem Size Used Avail Use% Mounted on udev 486M 0 486M 0% /dev tmpfs 100M 4.1M 96M 5% /run /dev/xvda2 9.8G 9.8G 19M 100% / tmpfs 498M 0 498M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 498M 0 498M 0% /sys/fs/cgroup
Das Problem ist, dass es nur 10 GB im Root-Dateisystem des Servers gibt.
Wie erhöht Alon die Speichergröße?
Erhöhen Sie die Größe des Root-Volumes mithilfe der AWS Console
Erwartete Zeit bis zum Abschluss: 40 Minuten bis eine Stunde.
Diese Anweisungen gehen davon aus, dass Ihr Server von der TurnKey HubSie erfordern aber auch die Nutzung der AWS KonsoleWenn Sie den Hub (oder TurnKey) nicht verwenden, sollten sie immer noch allgemein relevant sein, obwohl Sie möglicherweise die AWS-Dokumente für mehr Details, die sich ausschließlich auf die AWS Console beziehen.
Solange Sie sich eine kleine Menge an Server-Ausfallzeiten leisten können, ist es wohl der beste Weg, dies zu beheben, das Root-Volume über die AWS-Konsole zu vergrößern. Wenn Sie sich keine Ausfallzeiten leisten können, dann kann dies live gemacht werden, aber ich würde argumentieren, dass die wenigen Minuten Ausfallzeiten das Stück des Geistes wert sind.
Bereitmachen
Als erstes müssen Sie ein Backup erstellen. Sie können TKLBAM für diesen Zweck verwenden, obwohl ich in diesem Fall empfehlen würde, einen "Schnappschuss" zu machen (auch?). Wenn Sie extrem wenig Platz haben, ist TKLBAM möglicherweise keine Option. Ein Snapshot ermöglicht es Ihnen, schneller und mit weniger Aufwand dorthin zurückzukehren, wo Sie sich gerade befinden (keine Notwendigkeit, einen neuen Server zu starten, usw.).
Während Sie Snapshots von laufenden Servern aufnehmen können, empfiehlt Amazon für die Zwecke des Backups, Snapshots von gestoppten Servern zu erstellen. Dies liegt daran, dass es eine (sehr geringe) Wahrscheinlichkeit für Datenkorruption gibt, wenn Sie einen Snapshot eines laufenden Servers machen. Es sei denn, ein paar Minuten Ausfallzeit werden ein Problem sein (und selbst dann), es scheint ein No-Brainer zu sein, diesen Rat zu befolgen.
Wenn Sie den Server anhalten, vom Hub aus Seite ServerWählen Sie Ihren Server so aus, dass die vollständigen Informationen heruntergefahren werden, und klicken Sie auf Stoppen.
Sobald Sie bereit sind, einen Snapshot zu machen, der sich immer noch auf der Hub Server-Seite befindet, suchen Sie nach dem Textlink mit der Aufschrift "x Snapshots" (wobei "x" die Anzahl der Snapshots ist, die Sie bereits gemacht haben -). Wenn du noch keine gemacht hast, ist das '0'. Klicken Sie darauf und auf der Seite, die sich öffnet, klicken Sie auf die Schaltfläche "Schnappschuss erstellen". Zunächst wird "0%" angezeigt und dauert eine Minute oder 2. Wenn Sie keinen Fortschritt sehen, versuchen Sie, die Seite zu aktualisieren. Sobald sie vollständig ist, sollten Sie einen grünen Kreis sehen.
Finden Sie Ihren TurnKey-Server in der AWS Console
Zurück auf der Seite Server des Hubs (rollen Sie Ihre Serverinformationen bei Bedarf erneut herunter), suchen Sie nach der Stelle, auf der Region steht, und notieren Sie sich das. Jetzt in einem neuen Browser-Tab / Fenster öffnen Sie Ihre Amazon Console auf die EC2 - Instanzenseite. In der AWS-Konsole, in der oberen Leiste, oben rechts (zwischen dem Sie Ihren Benutzernamen und "Support" anzeigt), klicken Sie auf die Dropdown-Anzeige und stellen Sie sicher, dass die Region mit der Region übereinstimmt, die Ihr Hub-Server ist in (wenn dies bereits der Fall ist, überspringen Sie diesen Schritt).
Wenn Sie nur einen Server/eine Instanz angehalten haben (oder sich ansonsten sicher sind, mit welchem Server Sie arbeiten müssen), können Sie diesen nächsten Schritt überspringen. Obwohl, wenn Sie 2 oder mehr Instanzen haben, um absolut sicher zu sein, dass Sie an der richtigen arbeiten, empfehle ich eine "Suche" zu machen.
Um dies zu tun, gehen Sie zurück zur Serverseite des Hubs und kopieren Sie die EC2-Instanz-ID (in meinem Fall ist es "i-0c04e369a3d987199"). Fügen Sie das in die Suchleiste oben auf der AWS Konsolen-Tab / Seite ein (standardmäßig enthält die Suchleiste den Text "Filtern nach Tags und Attributen oder Suchen nach Schlüsselwort"). Fügen Sie Ihre Server-/Instanz-ID dort ein und drücken Sie Enter.
Erhöhung der Volumengröße
Nur eine Instanz sollte nun in Ihrer AWS-Konsole angezeigt werden. Wenn Sie kein Ergebnis erhalten, überprüfen Sie erneut, ob Sie die richtige Region ausgewählt haben und ob Sie im richtigen AWS-Konto angemeldet sind (wenn Sie mehrere Konten verwenden). Weitere Informationen über Ihren Server sollten nun im unteren Bereich tragfähig sein.Scrollen Sie durch diesen, bis Sie "Root-Gerät" sehen, wird es wahrscheinlich "/dev/xvda" sein.
Klicken Sie auf das Gerät (z. B. /dev/xvda in meinem Fall) und ein kleines schwarzes Pop-Over sollte mit einigen Informationen zum EBS-Volume erscheinen. Klicken Sie auf die EBS ID (in meinem Fall "vol-02110c92a873ad915") und Sie sollten auf die Seite AWS Console - Volumes umgeleitet werden, wobei nur das gewünschte Volume angezeigt wird.
Klicken Sie mit der rechten Maustaste auf die Lautstärke und wählen Sie "Volume ändern". Ein Pop-Over sollte geöffnet werden. Suchen Sie nach der Stelle, an der "Größe" steht. Meines ist derzeit "10" (GB). Erhöhen Sie diese Zahl auf die gewünschte Lautstärke (in GB). Ich mache meine 20 GB. Klicken Sie dann auf die Schaltfläche "Ändern" und klicken Sie auf den nächsten Bildschirm auf "Ja". Sie sollten mit einer grünen Nachricht begrüßt werden: "Modify Volume Request Succeeded". Das sollte fast sofort passieren, aber Sie müssen möglicherweise die AWS-Konsole aktualisieren, um Ihre Lautstärkeanzeige mit der gewünschten Größe zu sehen (z. B. 20 GiB in meinem Fall). Wenn nicht, versuchen Sie es erneut zu erfrischen.
Zurück zum Hub: Starten Sie Ihren Server neu (falls angehalten) und bestätigen Sie das größere Volumen
Das ist alles, wofür wir die AWS-Konsole brauchen, also können Sie sich jetzt abmelden und schließen. Klicken Sie auf Ihrem Server auf "Start", um es wieder zum Leben zu erwecken. Wie üblich dauert es eine Weile, bis es verfügbar ist. Für die meisten Server sollte dies nur ein paar Minuten dauern (höchstens 5 Minuten).
Sobald Ihr Server läuft (oder sofort, wenn er nicht gestoppt wurde), melden Sie sich über SSH an. Wenn Sie den df-Befehl erneut ausführen würden, würden Sie feststellen, dass sich nichts geändert hat. Das liegt daran, dass wir nur die Lautstärke vergrößert haben. Wenn Sie möchten, können Sie überprüfen, ob die Lautstärke tatsächlich größer ist, mit gdisk:
# gdisk -l /dev/xvda GPT fdisk (gdisk) version 1.0.1 Partition table scan: MBR: protective BSD: not present APM: not present GPT: present Found valid GPT with protective MBR; using GPT. Disk /dev/xvda: 41943040 sectors, 20.0 GiB Logical sector size: 512 bytes Disk identifier (GUID): 8A333A04-DB02-4249-870C-EC5665D405BF Partition table holds up to 128 entries First usable sector is 34, last usable sector is 20971486 Partitions will be aligned on 2048-sector boundaries Total free space is 4029 sectors (2.0 MiB) Number Start (sector) End (sector) Size Code Name 1 2048 6143 2.0 MiB EF02 grub 2 6144 20969471 10.0 GiB 8300 rootfs
Beachten Sie die "Disk /dev/xvda: 41943040 Sektoren, 20.0 GiB".
Beheben Sie die Partitionstabelle und ändern Sie die Größe der Partition
Als nächstes müssen wir die Partitionstabelle (GPT) beheben, dann können wir die Partition erweitern, um den neuen freien Speicherplatz zu verwenden. Um das Dateisystem zu erweitern (und das GPT zu beheben), verwenden wir Parted (sollte standardmäßig auf allen v15.x-Servern installiert werden).
# parted GNU Parted 3.2 Using /dev/xvda Welcome to GNU Parted! Type 'help' to view a list of commands. (parted)
Zuerst überprüfen Sie die vorhandenen Informationen (wieder) mit dem Befehl "Drucken" Es sollte eine Warnung auslösen, dass nicht der gesamte Speicherplatz verwendet wird, mit einer Option, um es zu beheben.
(parted) print
Warning: Not all of the space available to /dev/xvda appears to be used, you can fix the GPT to use all of the
space (an extra 20971520 blocks) or continue with the current setting?
Fix/Ignore?
Lassen Sie es die Korrektur (durch Eingabe 'f' gefolgt von Enter) zu tun. Es sollte jetzt ähnliche Informationen wie die df-Prüfung, die wir zuvor ausgeführt angezeigt. Obwohl beachten Sie, dass dies GigaBytes (1Byte x 1000 x 1000) im Gegensatz zu GigiBytes (1Byte x 1024 x 1024) anzeigt, sollten Sie nicht alarmiert sein, wenn die Zahlen nicht ganz übereinstimmen. In meinem Fall zeigt es 21,5 GB an (was 20 GiB ist).
Fix/Ignore? f Model: Xen Virtual Block Device (xvd) Disk /dev/xvda: 21.5GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 3146kB 2097kB grub bios_grub 2 3146kB 10.7GB 10.7GB ext4 rootfs (parted)
Um die Partition zu vergrößern, verwenden Sie den Befehl 'resizepart'. Bei einer standardmäßig eingerichteten Partition möchten Sie die Größe der Partition 2 ändern, aber überprüfen Sie Ihre Ausgabe (von "Druck"), um sicherzustellen, dass Ihre Übereinstimmungen vorliegen. Beachten Sie, dass ich die Warnung vor dem Ändern einer verwendeten Partition ignoriert habe.
(parted) resizepart Partition number? 2 Warning: Partition /dev/xvda2 is being used. Are you sure you want to continue? Yes/No? y End? [10.7GB]? 21.5GB (parted)
Wenn etwas nicht richtig aussieht, können Sie den Befehl 'resizepart' erneut ausführen.
(parted) print Model: Xen Virtual Block Device (xvd) Disk /dev/xvda: 21.5GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 3146kB 2097kB grub bios_grub 2 3146kB 21.5GB 21.5GB ext4 rootfs (parted)
Fast fertig; erweitern Sie das Dateisystem und beenden
Selbst jetzt, wenn Sie getrennt verlassen und die Ausgabe von df erneut überprüfen würden, konnten Sie den zusätzlichen neuen Speicherplatz immer noch nicht sehen. Das liegt daran, dass der letzte Schritt darin besteht, das Dateisystem zu erweitern, um die Partition zu füllen. Einige Versionen von Parted können das auch tun (IIRC der Befehl ist 'resizefs'), aber der, den ich nicht habe, scheint diese Fähigkeit nicht zu haben, also verlassen Sie Parted ('quit'). Sie können die Informationen über /etc/fstab sicher ignorieren
(parted) quit Information: You may need to update /etc/fstab.
Führen Sie dann 'resize2fs' auf der Partition aus:
# resize2fs /dev/xvda2
Wenn wir jetzt df überprüfen, sehen wir, dass der freie Speicherplatz jetzt verfügbar ist.
# df -h Filesystem Size Used Avail Use% Mounted on udev 486M 0 486M 0% /dev tmpfs 100M 4.1M 96M 5% /run /dev/xvda2 20G 9.8G 10.2G 48% / tmpfs 498M 0 498M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 498M 0 498M 0% /sys/fs/cgroup
YAY! Alles fertig! :
Endgültige Bereinigung
Ich persönlich gebe ihm gerne ein paar Tage Zeit, um sich einzuleben, bevor ich den Schnappschuss entferne. Das ist nur für den Fall, dass etwas nicht ganz stimmt, aber nicht sofort angezeigt wird. Trotzdem würde ich AWS lieber noch ein paar Cent mehr für den Verstand geben. Wenn Sie sich sicher fühlen, können Sie den Snapshot löschen, wenn Sie möchten, indem Sie die Snapshots gemäß dem ersten Teil finden und dieses Mal löschen, anstatt zu erstellen.