Unidad EC2 no tamaño de volumen EBS

18

Tengo una instancia EC2 para la que creé un volumen EBS de 500 GB. Desafortunadamente, la instancia EC2 muestra solo 8GB disponibles.

Solo tengo una unidad, lo cual es correcto.

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

Pero esa unidad solo tiene 8GB

[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

Pero, fdisk y / proc / partitions muestran el tamaño correcto

[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

Cualquier ayuda sería muy apreciada, gracias.

cristiano
fuente

Respuestas:

34

Si el sistema de archivos raíz es ext3 o ext4, ejecute:

sudo resize2fs /dev/xvda1

Si el sistema de archivos raíz es xfs (menos común), ejecute:

sudo xfs_growfs /

Puede omitir "sudo" si ha iniciado sesión como root.

Estos comandos deben ejecutarse mientras el sistema se está ejecutando y el sistema de archivos está montado.

Es estándar que los volúmenes EBS no contengan una tabla de particiones. El volumen EBS generalmente está formateado como un sistema de archivos en su totalidad sin particiones.

Eric Hammond
fuente
2
Me irrita cuando la gente te rechaza sin ninguna explicación. De todos modos, esto funcionó muy bien. ¡Muchas gracias!
Christian el
1
/ me encoge de hombros y sigue adelante con la vida :-) Me alegra ayudar. Aquí hay un par de artículos relacionados que he escrito: alestic.com/2009/12/ec2-ebs-boot-resize alestic.com/2010/02/ec2-resize-running-ebs-root
Eric Hammond
2
Tenga en cuenta que el paquete cloud-init incluido en las AMI de Ubuntu ejecuta automáticamente resize2fs en el arranque. Me sorprende que esto no esté en Amazon Linux ya que también están usando cloud-init.
Eric Hammond el
44
Tengo el mismo problema y cuando ejecuto el comando dice: El sistema de archivos ya tiene 2096896 bloques de longitud. ¡Nada que hacer! ¡Sigue siendo 8GB!
Neo
12

Las respuestas aquí parecen faltar algunos pasos antes del cambio de tamaño, especialmente para las personas que están cambiando el tamaño de su volumen EBS. Si ha utilizado una instantánea para crear el EBS o con ciertas AMI, necesitará extender el disco (xvda), extender la partición (xvda1) y luego extender el sistema de archivos (/).

Si estoy leyendo esto correctamente, su disco se ve así:

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

Tiene que verse así:

/dev/xvda
|______________________/dev/xvda1______________________|

Después de eso, la ejecución resize2fscrecerá en ese nuevo espacio interno xvda1, usando fdiskpodemos aumentar el tamaño del bloque al eliminarlo y crearlo nuevamente y hacer que la partición sea arrancable. todo lo que requiere es reiniciar. En la mayoría de los casos, no debería afectar sus datos si usa el mismo cilindro de inicio, pero tenga en cuenta que cualquier error al recrear la partición provocará la pérdida de todos los datos y / o el servidor no se reiniciará. Recomendaría hacer esto como el primer paso en una instancia recién creada. De lo contrario, tome una instantánea de su almacenamiento EC2 EBS / etc.

He marcado los pasos con << # >> en el bloque a continuación, por lo que no son parte del comando. Necesita permisos de root, así que haga un "sudo sh" si no es root.

<<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
fuente
1
Extender la partición solo es necesario si el volumen está particionado. Eso es bastante raro en EC2. La mejor práctica común con EBS es formatear todo el volumen sin formato con el sistema de archivos sin colocarlo primero. Esto es especialmente cierto para los volúmenes de arranque. El posicionamiento es un artefacto de los discos físicos, donde no son del tamaño que desea para sus sistemas de archivos. En EC2, simplemente cree volúmenes EBS del tamaño correcto y suelte el sistema de archivos en el volumen sin particiones.
Eric Hammond
1
No sé acerca de lo raro, me sucedió en ambas instancias de CentOS EC2 que lancé con SSD EBS de almacenamiento genérico.
Neo
¿Quién publicó las AMI de CentOS que usó?
Eric Hammond el
@EricHammond centos.org
Neo
44
Recomendaría solicitar centos.org para que deje de crear AMI con volúmenes EBS raíz particionados. Esto no tiene ningún beneficio si está utilizando una única partición y hace que el cambio de tamaño sea más difícil. Amazon no hace esto con sus AMI. Tampoco Ubuntu, Red Hat y otros. Es una buena práctica simplemente colocar el sistema de archivos en el volumen sin procesar de EBS sin barreras inútiles adicionales que deben moverse en el cambio de tamaño.
Eric Hammond
2

Cambie el tamaño del sistema de archivos en el volumen EBS. Si está ejecutando ext3(que generalmente es el valor predeterminado), simplemente puede ejecutar e2resize /dev/xvda1.

womble
fuente
El volumen primero debe estar fuera de línea y desmontado.
Farhan
1
No con ninguna distribución de Linux incluso vagamente moderna. La expansión en línea de los sistemas de archivos ext3 ha sido compatible durante años.
womble
Gracias womble, estoy usando la distribución aws y e2resize no está allí. Tampoco está en ningún repositorio de yum. ¿Debo obtener la fuente y construirla yo mismo?
Christian el
1

Intenté la respuesta de @Neo con una instancia creada a partir de un AMI Ubuntu personalizado. La explicación fue muy útil, pero necesitaba mantener las unidades como bloques y simplemente omitir el paso 4. Entonces funcionó perfectamente.

También solo un punto es que en el paso 5 debe copiar el bloque / cilindro inicial para usar en el paso 10.

La respuesta de @ Neo es si tiene un dispositivo de disco virtual particionado. Puede encontrar si sufre este problema con lo siguiente: lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 30G 0 disk └─xvda1 202:1 0 5G 0 part / xvda y xvda1 tienen tamaños muy diferentes. Puede cambiar el tamaño de 2fs y no habrá ninguna diferencia, en mi caso xvda1 es 5G y eso es todo lo que usará el sistema de archivos.

Gracias @Neo

David B
fuente