EC2-Laufwerk nicht EBS-Volume-Größe

18

Ich habe eine EC2-Instanz, für die ich ein EBS-Volume mit 500 GB erstellt habe. Leider sind in der EC2-Instanz nur 8 GB verfügbar.

Ich habe nur einen Antrieb, der recht ist.

[root@ip-10-244-134-250 ~]# ls -la /dev/x*
brw-rw---- 1 root disk 202, 1 Aug  7 08:54 /dev/xvda1

Dieses Laufwerk ist jedoch nur 8 GB groß

[root@ip-10-244-134-250 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/xvda1            8.0G  1.3G  6.7G  16% /
tmpfs                 3.7G     0  3.7G   0% /dev/shm

Aber fdisk und / proc / partitions haben beide die richtige Größe

[root@ip-10-244-134-250 ~]# fdisk -l

Disk /dev/xvda1: 536.9 GB, 536870912000 bytes
255 heads, 63 sectors/track, 65270 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/xvda1 doesn't contain a valid partition table

[root@ip-10-244-134-250 ~]# cat /proc/partitions 
major minor  #blocks  name

 202        1  524288000 xvda1

Jede Hilfe wäre sehr dankbar, danke.

Christian
quelle

Antworten:

34

Wenn das Root-Dateisystem ext3 oder ext4 ist, führen Sie Folgendes aus:

sudo resize2fs /dev/xvda1

Wenn das Root-Dateisystem xfs (seltener) ist, führen Sie Folgendes aus:

sudo xfs_growfs /

Sie können "sudo" weglassen, wenn Sie als root angemeldet sind.

Diese Befehle sollten ausgeführt werden, während das System ausgeführt wird und das Dateisystem bereitgestellt ist.

Es ist Standard, dass EBS-Volumes keine Partitionstabelle enthalten. Das EBS-Volume wird im Allgemeinen als Dateisystem in seiner Gesamtheit ohne Partitionen formatiert.

Eric Hammond
quelle
2
Ärgert mich, wenn Leute Sie ohne Erklärung ablehnen. Wie auch immer, das hat wunderbar funktioniert. Vielen Dank!
Christian
1
Ich zucke mit den Schultern und mache mit dem Leben weiter. Hier sind ein paar Artikel, die ich geschrieben habe: alestic.com/2009/12/ec2-ebs-boot-resize alestic.com/2010/02/ec2-resize-running-ebs-root
Eric Hammond
2
Beachten Sie, dass das in Ubuntu AMIs enthaltene Cloud-Init-Paket beim Booten automatisch resize2fs ausführt. Ich bin überrascht, dass dies nicht in Amazon Linux der Fall ist, da auch Cloud-Init verwendet wird.
Eric Hammond
4
Ich habe das gleiche Problem und wenn ich den Befehl ausführe, heißt es: Das Dateisystem ist bereits 2096896 Blöcke lang. Nichts zu tun! Es ist immer noch 8 GB!
Neo
12

Die Antworten hier scheinen ein paar Schritte vor der Größenänderung zu fehlen, insbesondere für Personen, die ihre EBS-Volumengröße ändern. Wenn Sie einen Snapshot zum Erstellen des EBS verwendet haben oder mit bestimmten AMIs, müssen Sie die Festplatte (xvda) erweitern, die Partition (xvda1) erweitern und dann das Dateisystem (/) erweitern.

Wenn ich das richtig lese, sieht Ihre Festplatte folgendermaßen aus:

/dev/xvda
|__/dev/xvda1__|______________ Free space______________|

Es muss so aussehen:

/dev/xvda
|______________________/dev/xvda1______________________|

Danach wird das Ausführen resize2fsin diesen neuen Bereich hineinwachsen. xvda1Mithilfe von können fdiskwir die Blockgröße erhöhen , indem wir sie löschen und neu erstellen und die Partition bootfähig machen. Es ist lediglich ein Neustart erforderlich. In den meisten Fällen sollten Ihre Daten nicht beeinträchtigt werden, wenn Sie denselben Startzylinder verwenden. Beachten Sie jedoch, dass ein Fehler bei der Neuerstellung der Partition zum Verlust aller Daten führt und / oder der Server nicht neu gestartet wird. Ich würde dies als ersten Schritt für eine neu erstellte Instanz empfehlen. Andernfalls machen Sie einen Schnappschuss Ihres EC2 EBS Storage / etc.

Ich habe die Schritte im Block unten mit << # >> markiert, damit sie nicht Teil des Befehls sind. Sie benötigen root-Rechte, machen Sie also ein "sudo sh", wenn Sie nicht root sind.

<<1>> Look at the filesystem, it is 6G
<<2>> Look at the disk and the partition, the disk is 21.5 GB but the partition is 6 GB (6291456 blocks)
<<3>> Start fdisk for that disk (xvda, so not the partition xvda1)
<<4>> Switch to sector display.
<<5>> Print the partition(s), and remember the start sector (2048 in the example).
<<6>> Delete the partition.
<<7>> Create a new partition.
<<8>> Make it primary.
<<9>> First partition.
<<10>> Enter the old start sector, do NOT make any typo here!!! (2048 in the example) 
<<11>> Hit enter to accept the default (this is the remainder of the disk)
<<12>> Print the changes and make sure the start sector is ok, if not restart at <<6>>
<<13>> Make the partition bootable. do NOT forget this!!!
<<14>> Enter your partition number (1 in the example)
<<15>> Write the partition info back, this will end the fdisk session.
<<16>> Reboot the server, and wait for it to come up (this may take longer than usual).
<<17>> Verify the filesystem size.
<<18>> If the filesystem is not around 20Gb as expected, you can use this command.


# df -h  <<1>>

Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      6.0G  2.0G  3.7G  35% / 
tmpfs            15G     0   15G   0% /dev/shm

# fdisk -l  <<2>>

Disk /dev/xvda: 21.5 GB, 21474836480 bytes
97 heads, 17 sectors/track, 25435 cylinders
Units = cylinders of 1649 * 512 = 844288 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0003b587

    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1   *           2        7632     6291456   83  Linux

# fdisk /dev/xvda  <<3>>

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): u  <<4>>
Changing display/entry units to sectors

Command (m for help): p  <<5>>

Disk /dev/xvda: 21.5 GB, 21474836480 bytes
97 heads, 17 sectors/track, 25435 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0003b587

    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1   *        2048    12584959     6291456   83  Linux

Command (m for help): d  <<6>>
Selected partition 1

Command (m for help): n  <<7>>
Command action
   e   extended
   p   primary partition (1-4)
p  <<8>>
Partition number (1-4): 1  <<9>>
First sector (17-41943039, default 17): 2048  <<10>>
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): <<11>>
Using default value 41943039

Command (m for help): p <<12>>

Disk /dev/xvda: 21.5 GB, 21474836480 bytes
97 heads, 17 sectors/track, 25435 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0003b587

    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1            2048    41943039    20970496   83  Linux

Command (m for help): a  <<13>>
Partition number (1-4): 1  <<14>>


Command (m for help): w  <<15>>
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: ...
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

# reboot  <<16>>

<wait>

# df -h  <<17>>
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       20G  2.0G   17G  11% / 
tmpfs            15G     0   15G   0% /dev/shm

# resize2fs /dev/xvda1  <<18>>
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/xvda1 is mounted on /; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/xvda1 to 5242624 (4k) blocks.
The filesystem on /dev/xvda1 is now 5242624 blocks long.

root@vs120 [~]#  df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       20G  7.8G   11G  42% /
tmpfs           498M     0  498M   0% /dev/shm
/usr/tmpDSK     399M   11M  368M   3% /tmp
root@vs120 [~]#
Neo
quelle
1
Das Erweitern der Partition ist nur erforderlich, wenn das Volume partitioniert ist. Das ist bei EC2 ziemlich selten. Die gängige Best Practice bei EBS besteht darin, das gesamte Raw-Volume mit dem Dateisystem zu formatieren, ohne es zuvor zu positionieren. Dies gilt insbesondere für Startvolumes. Die Positionierung ist ein Artefakt von physischen Datenträgern, bei denen die gewünschte Größe für Ihre Dateisysteme nicht ausreichend ist. In EC2 erstellen Sie einfach EBS-Volumes mit der richtigen Größe und legen das Dateisystem ohne Partitionen auf dem Raw-Volume ab.
Eric Hammond
1
Ich weiß nicht, wie selten es ist. Es ist mir auf beiden CentOS EC2-Instanzen passiert, die ich mit generischem SSD-EBS-Speicher gestartet habe.
Neo
Wer hat die von Ihnen verwendeten CentOS-AMIs veröffentlicht?
Eric Hammond
@EricHammond centos.org
Neo
4
Ich würde Centos.org bitten, keine AMIs mit partitionierten Root-EBS-Volumes mehr zu erstellen. Dies hat keinen Vorteil, wenn Sie eine einzelne Partition verwenden und die Größenänderung dadurch erschwert wird. Amazon tut dies nicht mit ihren AMIs. Ubuntu, Red Hat und andere auch nicht. Es ist eine bewährte Methode, das Dateisystem einfach auf das Raw-EBS-Volume zu legen, ohne dass zusätzliche nutzlose Barrieren entstehen, die beim Ändern der Größe verschoben werden müssen.
Eric Hammond
2

Ändern Sie die Größe des Dateisystems auf dem EBS-Volume. Wenn Sie ausgeführt werden ext3(was normalerweise die Standardeinstellung ist), können Sie einfach ausführen e2resize /dev/xvda1.

womble
quelle
Das Volume muss zuerst offline sein und deinstalliert werden.
Farhan
1
Nicht mit irgendeiner noch so vagen modernen Linux-Distribution. Die Online-Erweiterung von ext3-Dateisystemen wird seit Jahren unterstützt.
womble
Danke womble, ich benutze die aws Distribution und e2resize ist nicht da. Es ist auch nicht in leckeren Repos. Soll ich nur die Quelle beschaffen und selbst bauen?
Christian
1

Ich habe die Antwort von @Neo mit einer Instanz versucht, die mit einem benutzerdefinierten Ubuntu-AMI erstellt wurde. Die Erklärung war sehr hilfreich, aber ich musste die Einheiten als Blöcke behalten und einfach Schritt 4 überspringen. Es hat dann einwandfrei geklappt.

Ein weiterer Punkt ist, dass Sie in Schritt 5 den Startblock / Zylinder kopieren müssen, um ihn in Schritt 10 zu verwenden.

@ Neos Antwort lautet, wenn Sie ein partitioniertes virtuelles Laufwerk haben. Sie können feststellen, ob Sie unter folgendem Problem leiden: lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 30G 0 disk └─xvda1 202:1 0 5G 0 part / xvda und xvda1 haben sehr unterschiedliche Größen. Sie können resize2fs und es macht keinen Unterschied, in meinem Fall ist xvda1 5G und das ist alles, was das Dateisystem verwenden wird.

Danke, @Neo

David B
quelle