Como redimensionar volume EBS no Linux sem downtime

Esse processo pode ser feito sempre que precisar aumentar o volume sem precisar desligar a instância ou desanexar o volume.

Alterações em produção? Nesse caso sim :)

  • Após estar logado em sua conta AWS vamos escolher a opção EC2 na lista de serviços
  • Clicamos em “Volumes” no menu “ELASTIC BLOCK STORE”
  • Escolha o volume que deseja redimensionar e com o botão direito do mouse clique em “Modify Volume”

Verá uma janela como essa: Modify Volume

  • Defina o novo tamanho para o volume, como no exemplo da imagem estamos estendendo o volume para 20GB
  • Confirme no botão “Modify”

Agora precisaremos extender a partição no sistema. Acesse a instância via SSH e rode o comando abaixo para listar o dispositivos.

[email protected]:~$ lsblk 
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0     7:0    0 89.1M  1 loop /snap/core/8268
loop1     7:1    0   18M  1 loop /snap/amazon-ssm-agent/1480
xvda    202:0    0   20G  0 disk 
└─xvda1 202:1    0    8G  0 part /

Podemos ver o disco está com o novo tamanho (20GB), porém a partição continua com o tamanho antigo (8GB) e precisa ser estendido.

Para isso vamos usar o comando (growpart):

[email protected]:~$ sudo growpart /dev/xvda 1
CHANGED: partition=1 start=2048 old: size=16775135 end=16777183 new: size=41940959,end=41943007

Levando em considreção o dispositivo e o número da partição. Vamos chegar novamente o tamanho da partição:

[email protected]:~$ lsblk 
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0     7:0    0 89.1M  1 loop /snap/core/8268
loop1     7:1    0   18M  1 loop /snap/amazon-ssm-agent/1480
xvda    202:0    0   20G  0 disk 
└─xvda1 202:1    0   20G  0 part /

Podemos notar que a partição também está estendida, mas se olharmos o uso do disco podemos notar que o mesmo não foi alterado, isso porque ainda precisamos estender o sistema de arquivos.

[email protected]:~$ df -Th |grep /dev/xvda1
/dev/xvda1     ext4      7.7G  1.1G  6.7G  14% /
[email protected]:~$ 

E para estender o sistema de arquivos é simples, se o sistema de arquivos que está usando é ext2, ext3 ou ext4, basta executar o comando:

[email protected]:~$ sudo resize2fs /dev/xvda1 
resize2fs 1.44.1 (24-Mar-2018)
Filesystem at /dev/xvda1 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 3
The filesystem on /dev/xvda1 is now 5242619 (4k) blocks long.

Agora se olharmos novamente o espaço utlizado com o comando df:

[email protected]:~$ df -Th |grep /dev/xvda1
/dev/xvda1     ext4       20G  1.1G   19G   6% /
[email protected]:~$ 

Pronto, volume estendido com 0 downtime. Bom proveito!