EC2 Die Größe des Volumens kann nach Vergrößerung nicht geändert werden

94

Ich habe die Schritte zum Ändern der Größe eines EC2-Volumes befolgt

  1. Die Instanz wurde gestoppt
  2. Habe einen Schnappschuss des aktuellen Volumes gemacht
  3. Erstellt ein neues Volume aus dem vorherigen Snapshot mit einer größeren Größe in derselben Region
  4. Hat das alte Volume von der Instanz entfernt
  5. Hängte das neue Volume an derselben Instanz an die Instanz an

Das alte Volume war 5 GB und das, das ich erstellt habe, ist 100 GB. Wenn ich jetzt die Instanz neu starte und ausführe, df -h Isehe ich dies immer noch

Filesystem            Size  Used Avail Use% Mounted on
/dev/xvde1            4.7G  3.5G 1021M  78% /
tmpfs                 296M     0  296M   0% /dev/shm

Das bekomme ich beim Laufen

sudo resize2fs /dev/xvde1

The filesystem is already 1247037 blocks long.  Nothing to do!

Wenn ich renne, cat /proc/partitionssehe ich

 202       64  104857600 xvde
 202       65    4988151 xvde1
 202       66     249007 xvde2

Soweit ich weiß, sollte xvde die gleichen Daten wie xvde1 haben, wenn ich die richtigen Schritte befolgt habe, aber ich weiß nicht, wie ich sie verwenden soll

Wie kann ich das neue Volume oder umount xvde1 verwenden und stattdessen xvde bereitstellen?

Ich kann nicht verstehen, was ich falsch mache

Ich habe es auch versucht sudo ifs_growfs /dev/xvde1

xfs_growfs: /dev/xvde1 is not a mounted XFS filesystem

Übrigens ist dies eine Linux-Box mit Centos 6.2 x86_64

Vielen Dank im Voraus für Ihre Hilfe

Wilman Arambillete
quelle

Antworten:

69

Vielen Dank, Wilman, Ihre Befehle haben korrekt funktioniert. Wenn wir EBSs auf größere Größen erhöhen, müssen kleine Verbesserungen in Betracht gezogen werden

  1. Stoppen Sie die Instanz
  2. Erstellen Sie einen Snapshot aus dem Volume
  3. Erstellen Sie ein neues Volume basierend auf dem Snapshot und vergrößern Sie es
  4. Überprüfen und merken Sie sich den Volume-Mount-Punkt des Stroms (dh /dev/sda1)
  5. Aktuelle Lautstärke abnehmen
  6. Hängen Sie das kürzlich erstellte Volume an die Instanz an und legen Sie den genauen Einhängepunkt fest
  7. Starten Sie die Instanz neu
  8. Zugriff über SSH auf die Instanz und Ausführung fdisk /dev/xvde

    WARNUNG: Der DOS-kompatible Modus ist veraltet. Es wird dringend empfohlen, den Modus auszuschalten (Befehl 'c') und die Anzeigeeinheiten in Sektoren zu ändern (Befehl 'u').

  9. Drücken Sie p, um die aktuellen Partitionen anzuzeigen

  10. Drücken Sie ddiese Taste, um aktuelle Partitionen zu löschen (wenn mehrere vorhanden sind, müssen Sie jeweils eine löschen). HINWEIS: Keine Sorge, Daten gehen nicht verloren
  11. Drücken Sie n, um eine neue Partition zu erstellen
  12. Drücken Sie p, um es als primär festzulegen
  13. Drücken Sie 1, um den ersten Zylinder einzustellen
  14. Stellen Sie den gewünschten neuen Platz ein (wenn leer, ist der gesamte Platz reserviert)
  15. Drücken Sie a, um es bootfähig zu machen
  16. Schlagen Sie 1und wschreiben Sie Änderungen
  17. Instanz neu starten ODER partprobe(aus dem partedPaket) verwenden, um den Kernel über die neue Partitionstabelle zu informieren
  18. Melden Sie sich über SSH an und führen Sie resize2fs / dev / xvde1 aus
  19. Überprüfen Sie abschließend den neuen Speicherplatz, auf dem df -h ausgeführt wird
dcf
quelle
1
"WARNUNG: Der DOS-kompatible Modus ist veraltet. Es wird dringend empfohlen, den Modus auszuschalten (Befehl 'c') und die Anzeigeeinheiten in Sektoren zu ändern (Befehl 'u')." Dies war für mich nicht erforderlich (Ubuntu 13.04). Es hatte bereits die DOS-Kompatibilität ausgeschaltet und standardmäßig Sektoren verwendet. Drücken cund utatsächlich in den veralteten Modus wechseln.
wisbucky
6
Die Lösung funktionierte hervorragend, aber die Instanz blieb bei "1/2 Prüfungen bestanden" mit einem Ausrufezeichen (ReadHat 6.5) hängen. Um dies zu beheben, habe ich den "ersten Zylinder" auf 16 gesetzt (wie zuvor). Danach startete die Instanz normal mit "2/2 Prüfungen bestanden". Hoffe das hilft jemandem ...
user3586516
1
Ich musste auch den ersten Zylinder wechseln, aber ich musste ihn auf 2048 ändern. Ich würde empfehlen, Ihre aktuelle Partitionseinstellung zu überprüfen, bevor Sie sie löschen.
Doyley
9
Nach dem Neustart meiner Instanz kann ich keine Verbindung über SSH herstellen. Die Verbindung läuft ab und die aws-Konsole zeigt an, dass die Statusprüfungen nicht gestartet werden können. Ich denke es ist tot. Irgendeine Idee was zu tun ist?
Richard
5
Diese Antwort ist jetzt veraltet, da AWS die Online-Größenänderung für EBS-Volumes unterstützt.
Dale Anderson
301

Es ist nicht mehr erforderlich, die Instanz anzuhalten und das EBS-Volume zu trennen, um die Größe zu ändern!

13-Feb-2017 Amazon kündigte an: " Amazon EBS Update - Neue elastische Volumes verändern alles "

Der Prozess funktioniert auch dann, wenn das zu erweiternde Volume das Root-Volume der laufenden Instanz ist!


Angenommen, wir möchten das Boot-Laufwerk von Ubuntu von 8G auf 16G "on-the-fly" erhöhen.

Schritt 1) ​​Melden Sie sich bei der AWS-Webkonsole an -> EBS -> Klicken Sie mit der rechten Maustaste auf diejenige, deren Größe Sie ändern möchten -> "Volumen ändern" -> Ändern Sie das Feld "Größe" und klicken Sie auf die Schaltfläche [Ändern]

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein


Schritt-2) ssh in die Instanz und ändern Sie die Größe der Partition:

Lassen Sie uns Blockgeräte auflisten, die an unsere Box angeschlossen sind:
lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  16G  0 disk
└─xvda1 202:1    0   8G  0 part /

Wie Sie sehen können, ist / dev / xvda1 immer noch eine 8-GiB-Partition auf einem 16-GiB-Gerät und es gibt keine anderen Partitionen auf dem Volume. Verwenden wir "growpart", um die Größe der 8G-Partition auf 16G zu ändern:

# install "cloud-guest-utils" if it is not installed already
apt install cloud-guest-utils

# resize partition
growpart /dev/xvda 1

Lassen Sie uns das Ergebnis überprüfen (Sie können sehen, dass / dev / xvda1 jetzt 16G ist):

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

Viele SO-Antworten schlagen vor, fdisk mit Partitionen zum Löschen / Neuerstellen zu verwenden. Dies ist ein unangenehmer, riskanter und fehleranfälliger Prozess, insbesondere wenn wir das Startlaufwerk wechseln.


Schritt 3) Ändern Sie die Größe des Dateisystems, um den neuen Partitionsspeicherplatz voll auszunutzen
# Check before resizing ("Avail" shows 1.1G):
df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.8G  6.3G  1.1G  86% /

# resize filesystem
resize2fs /dev/xvda1

# Check after resizing ("Avail" now shows 8.7G!-):
df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       16G  6.3G  8.7G  42% /

Wir haben also keine Ausfallzeiten und viel neuen Speicherplatz.
Genießen!

Update: Update: Verwenden Sie sudo xfs_growfs / dev / xvda1 anstelle von resize2fs beim XFS-Dateisystem.

Dmitry Shevkoplyas
quelle
Das Ändern der Partitionsgröße war eine große Hilfe .... !! Das Schönste war, dass es sogar für das Root-Volumen funktioniert hat.
Piyushmandovra
4
Wird jemand dies bitte als die richtige Antwort akzeptieren? Nur weil ... es ist.
Eduardohl
Solide,
vielen
4
Huh, die offiziellen Dokumente erwähnen Growpart nicht, weshalb ich das vorher nicht zum Laufen bringen konnte. Vielen Dank!
Ibrahim
1
@ Shihas, ja. Das ist der springende Punkt. Selbst ein bootfähiges "Root" -montiertes Laufwerk kann sicher erhöht werden, ohne dass ein Neustart erforderlich ist!
Dmitry Shevkoplyas
42

Präfekt Kommentar von jperelli oben.

Ich stand heute vor dem gleichen Problem. In der AWS-Dokumentation wird Growpart nicht eindeutig erwähnt. Ich habe es auf die harte Tour herausgefunden und tatsächlich funktionierten die beiden Befehle perfekt auf M4.large und M4.xlarge mit Ubuntu

sudo growpart /dev/xvda 1
sudo resize2fs /dev/xvda1
Sachin Shintre
quelle
Die zweite Antwort zum Anhängen und diese Antwort ist zum
Ändern der Größe
Tolle! hat an meiner t2.small Instanz gearbeitet. Wütend. Ich dachte, es wäre blutiger als das. Vielen Dank!
publicknowledge
Ich kann anscheinend keine Cloud-Guest-Utils installieren, die Growpart enthalten. Linux Version 3.16.0-4-amd64
Nettie
15

[Gelöst]

Das musste getan werden

  1. Stoppen Sie die Instanz
  2. Erstellen Sie einen Snapshot aus dem Volume
  3. Erstellen Sie ein neues Volume basierend auf dem Snapshot und vergrößern Sie es
  4. Überprüfen und merken Sie sich den Volume-Mount-Punkt des Stroms (dh / dev / sda1).
  5. Aktuelle Lautstärke abnehmen
  6. Hängen Sie das kürzlich erstellte Volume an die Instanz an und legen Sie den genauen Einhängepunkt fest
  7. Starten Sie die Instanz neu
  8. Zugriff über SSH auf die Instanz und Ausführung fdisk /dev/xvde
  9. Drücken Sie p, um die aktuellen Partitionen anzuzeigen
  10. Drücken Sie ddiese Taste, um aktuelle Partitionen zu löschen (wenn mehrere vorhanden sind, müssen Sie jeweils eine löschen). HINWEIS: Keine Sorge, Daten gehen nicht verloren
  11. Drücken Sie n, um eine neue Partition zu erstellen
  12. Drücken Sie p, um es als primär festzulegen
  13. Drücken Sie 1, um den ersten Zylinder einzustellen
  14. Stellen Sie den gewünschten neuen Platz ein (wenn leer, ist der gesamte Platz reserviert)
  15. Drücken Sie a, um es bootfähig zu machen
  16. Schlagen Sie 1und wschreiben Sie Änderungen
  17. Instanz neu starten
  18. Über SSH anmelden und ausführen resize2fs /dev/xvde1
  19. Überprüfen Sie abschließend den neuen Speicherplatz df -h

Das ist es

Viel Glück!

Wilman Arambillete
quelle
1
In Amazon EBS-Volumes scheint es wichtig zu sein, in resize2fs denselben Einhängepunkt zu verwenden, den Sie mit fdisk verwenden. df zeigt so etwas wie / dev / xvda1 als angehängtes EBS-Volume an, aber der Befehl resize2fs funktionierte nur für mich, wenn ich die Kennung / dev / sdf1 verwendet habe, die ich bei der Erstellung der neuen Partition in fdisk verwendet hatte.
Garreth McDaid
Dies ist in der AWS-Dokumentation enthalten. Was schlecht ist, ist, dass ihre Verfahren nach 3 Jahren immer noch unvollständig sind. Wenn Sie ein Bild haben, können Sie sicher zurückgreifen. Es ist immer möglich, die neue Festplatte vorübergehend an eine Instanz zu hängen, auf der auch ein Desktop ausgeführt wird. Die Notwendigkeit, sie für eine Größenänderung bereitzustellen, kann jedoch ein Problem sein, wenn Sie an die Verwendung von gparted denken. gcloud ändert die Größe im laufenden Betrieb.
McKenzm
Mein Speichergerät (/ dev / xvda1) wurde in Sektor 16065 gestartet, nicht in Sektor 1. Schritt 13 (Treffer 1, um den ersten Zylinder einzustellen) musste in meinem Fall 16065 sein.
Simon Paarlberg
Gehen Sie nicht mit dieser Lösung, Sie könnten Ihre Daten verlieren. Eigentlich habe ich herausgefunden, dass die Option zum Löschen von Partitionen nicht verwendet wird, wenn Partitionslistenwerte in der Partitionstabelle angezeigt werden. Wenn die Liste vorhanden ist, wird die Partition buchstäblich gelöscht, sodass Daten verloren gehen, selbst wenn die Antwort lautet: "Wird nicht." löschen". Es gibt eine Möglichkeit, die Partitionsgröße zu erweitern. Überprüfen Sie unten, ob andere Dienstprogramme vorhanden sind, mit denen Sie die Partitionsgröße reibungslos erweitern können.
Piyushmandovra
6
  1. Melden Sie sich bei der AWS-Webkonsole an -> EBS -> Klicken Sie mit der rechten Maustaste auf diejenige, deren Größe Sie ändern möchten -> "Volumen ändern" -> ändern Sie das Feld "Größe" und klicken Sie auf die Schaltfläche [Ändern]

  2. growpart /dev/xvda 1

  3. resize2fs /dev/xvda1

Dies ist eine auf den Punkt gebrachte Version der Antwort von Dmitry Shevkoplyas. In der AWS-Dokumentation wird der growpartBefehl nicht angezeigt. Dies funktioniert gut für Ubuntu AMI.

jperelli
quelle
6
  1. sudo growpart / dev / xvda 1
  2. sudo resize2fs / dev / xvda1

Die beiden oben genannten Befehle haben mir Zeit für AWS Ubuntu Ec2-Instanzen gespart.

HD298
quelle
4

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

xfs_growfs /
Saurabh Chandra Patel
quelle
mach meinen Tag ... myWEEK!
Cristian Sepulveda
4

Nur für den Fall, dass jemand hier für die GCP Google Cloud-Plattform ist,
versuchen Sie Folgendes:

sudo growpart /dev/sdb 1
sudo resize2fs /dev/sdb1
Yunus
quelle
2

Haben Sie eine Partition auf diesem Volume erstellt? Wenn Sie dies getan haben, müssen Sie zuerst die Partition vergrößern.

Chantheman
quelle
Nein, habe ich nicht. Wie soll ich das machen? Denken Sie daran, dass dieses neue Volume, das ich angehängt habe, alle vorherigen Daten enthalten soll, da es sich um eine Momentaufnahme des ursprünglichen Volumes handelt
Wilman Arambillete,
Nein, aber ich habe diesen Fehler erhalten, wenn eine Partition angehängt war. Überprüfen Sie, ob Sie das Volume auf die richtige Größe eingestellt haben, und überprüfen Sie, ob Sie das neue Volume bereitgestellt haben.
Chantheman
Außerdem müssen Sie die Instanz nicht stoppen, um dies zu tun. Es ist sicher, wenn Sie Schreibvorgänge auf diesem Volume haben, aber Sie können einen Snapshot bei laufender Instanz erstellen.
Chantheman
1

Das bootfähige Flag (a) hat in meinem Fall nicht funktioniert (EC2, centos6.5), daher musste ich das Volume aus dem Snapshot neu erstellen. Nachdem ich alle Schritte mit Ausnahme des bootfähigen Flags wiederholt hatte, funktionierte alles einwandfrei, sodass ich danach die Größe von 2FS ändern konnte. Danke dir!

sandr
quelle
1

Danke, @Dimitry, es hat wie ein Zauber mit einer kleinen Änderung funktioniert, die zu meinem Dateisystem passt.

Quelle: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.html#recognize-expanded-volume-linux

Verwenden Sie dann den folgenden Befehl, um den Einhängepunkt des Dateisystems zu ersetzen (XFS-Dateisysteme müssen eingehängt werden, um ihre Größe zu ändern):

[ec2-user ~]$ sudo xfs_growfs -d /mnt
meta-data=/dev/xvdf              isize=256    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=262144, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 262144 to 26214400

Hinweis Wenn ein xfsctl-Fehler auftritt: Speicherfehler kann nicht zugeordnet werden. Möglicherweise müssen Sie den Linux-Kernel auf Ihrer Instanz aktualisieren. Weitere Informationen finden Sie in der Dokumentation Ihres jeweiligen Betriebssystems. Wenn Sie eine erhalten Das Dateisystem ist bereits nnnnnnn Blöcke lang. Nichts zu tun! Fehler, siehe Erweitern einer Linux-Partition.

user2125117
quelle
0

Ich habe nicht genug Vertreter, um oben einen Kommentar abzugeben. Beachten Sie jedoch auch in den obigen Kommentaren, dass Sie Ihre Instanz beschädigen können, wenn Sie bei 1 beginnen. Wenn Sie nach dem Start von fdisk auf 'u' klicken, bevor Sie Ihre Partitionen mit 'p' auflisten, erhalten Sie die richtige Startnummer, damit Sie Ihre Volumes nicht beschädigen. Für Centos 6.5 AMI war auch wie oben erwähnt 2048 für mich richtig.

Reece
quelle
0

Für den Fall, dass jemand das Problem hatte, bei dem er auf dieses Problem mit 100% iger Nutzung gestoßen ist, und keinen Platz zum Ausführen des Befehls growpart (da dadurch eine Datei in / tmp erstellt wird).

Hier ist ein Befehl, den ich gefunden habe, der umgeht, auch wenn das EBS-Volume verwendet wird, und auch, wenn Sie keinen Platz mehr auf Ihrem ec2 haben und sich bei 100% befinden

/sbin/parted ---pretend-input-tty /dev/xvda resizepart 1 yes 100%

siehe diese Seite hier:

https://www.elastic.co/blog/autoresize-ebs-root-volume-on-aws-amis

CodeJunkie
quelle
Diesem Befehl sollte ein sudo resize2fs /dev/xvda1Update folgen /etc/fstab, erst danach df -hwird der vergrößerte Speicherplatz
angezeigt
0

Setzen Sie ein Leerzeichen zwischen Name und Nummer, z.

sudo growpart /dev/xvda 1

Beachten Sie, dass zwischen dem Gerätenamen und der Partitionsnummer ein Leerzeichen steht.

Verwenden Sie die folgenden Growpart-Befehle, um die Partition auf jedem Volume zu erweitern. Beachten Sie, dass zwischen dem Gerätenamen und der Partitionsnummer ein Leerzeichen steht.

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html

mwafi
quelle