Redimensionando partições no Linux

February 15, 2021    linux resize XFS ext4 cli

Uma dúvida recorrente e também uma tarefa cotidiana do Sysadmin é ajustar (geralmetne aumentar) partições no Linux para evitar a interrupção de serviços.

Obs.: Esse Lab foi feito com uma VM no Virtualbox com um disco apenas de 80Gb de tamanho no Centos 7, o procedimento pode variar para outras distribuições mas os passos são bem semelhantes

Primeiro eu recomendo que leia esse bom artigo sobre partições no Linux:

https://www.vivaolinux.com.br/artigo/Particoes-Linux-Faca-direito

Depois disso o interessante é identificar as partições do sistema, aqui cabe uma explicação rápida sobre como podemos “arrumar” as partições no linux: Elas podem ser criadas diretamente no disco físico (que é o procedimento mais comum) ou podem ser “arrumadas” em volumes Lógicos que podem conter vários discos físicos - LVM.

Para identificarmos os discos usaremos o comando fdisk e o comando df do linux:

[user@lab1 ~]$ sudo fdisk -l
Disk /dev/sda: 85.9 GB, 85899345920 bytes, 167772160 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 label type: dos
Disk identifier: 0x000586db

Dispositivo Boot      Start         End      Blocks   Id  System
/dev/sda2         2099200   167772159    82836480   8e  Linux LVM
[user@lab1 ~]$ df -h
Sist. Arq.               Tam. Usado Disp. Uso% Montado em
devtmpfs                 484M     0  484M   0% /dev
tmpfs                    496M     0  496M   0% /dev/shm
tmpfs                    496M  6,8M  489M   2% /run
tmpfs                    496M     0  496M   0% /sys/fs/cgroup
/dev/mapper/centos-root   50G  1,6G   49G   4% /
/dev/sda1               1014M  197M  818M  20% /boot
/dev/mapper/centos-home   27G   33M   27G   1% /home
tmpfs                    100M     0  100M   0% /run/user/0
tmpfs                    100M     0  100M   0% /run/user/1000

Primeira coisa a fazer é editar o tamanho do seu VHD, essa etapa varia de virtualizador para virtualizador. No Virtualbox eu desliguei a VM e editei o tamanho do disco de 80 para 100Gb de tamanho.

Depois de religar a VM se vocês notarem ao usar o fdisk -l ele já mostra o tamanho de 100Gb, porém na partição ainda consta como 80Gb.

[user@lab1 ~]$ sudo fdisk -l
Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 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 label type: dos
Disk identifier: 0x000586db
Dispositivo Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   167772159    82836480   8e  Linux LVM
[user@lab1 ~]$ df -h
Sist. Arq.               Tam. Usado Disp. Uso% Montado em
devtmpfs                 484M     0  484M   0% /dev
tmpfs                    496M     0  496M   0% /dev/shm
tmpfs                    496M  6,8M  489M   2% /run
tmpfs                    496M     0  496M   0% /sys/fs/cgroup
/dev/mapper/centos-root   50G  1,6G   49G   4% /
/dev/sda1               1014M  197M  818M  20% /boot
/dev/mapper/centos-home   27G   33M   27G   1% /home
tmpfs                    100M     0  100M   0% /run/user/1000

Bom então, como fazemos pra usar esse espaço que está sobrando no disco do nosso servidor?

Existe uma documentação da Red hat oficial sobre esse procedimento e vou deixar para consulta:

https://access.redhat.com/articles/1190213

Vamos a versão resumida:

1 - Usar o fdisk para remover a partição sda2 e depois recriá-la com todo tamanho disponível

(Sim, parece louco excluir uma partição, mas não, os dados não serão apagados ao fazer isso e vc terá acesso ao espaço livre)

fdisk /dev/sda
Command (m for help): d
Partition number (1-4): 2

Obs.: Nesse momento é extremamente importante que você não feche o fdisk e não entre com o w nas opções do prompt

2 - Agora vamos recriar a partição novamente com todo o espaço disponível

Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (2-4, default 2): 2

3 - Depois disso vc deve mudar o tipo da partição para LVM para que tudo fique como era antes

Command (m for help): t
Partition number (1,2, default 2): 2
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM' 

4 - Se tudo deu certo até aqui podemos então gravar as alterações na nossa nova partição com mais espaço livre :D

Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.

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.

Nesse ponto eu recomendaria que vc reiniciasse o servidor para evitar problemas com o novo tamanho da partição de dados.

Depois de reiniciado e com as partições físicas com os tamanhos corretos, agora é hora de ajustar os Volumes LVM adicionando o espaço, isso é feito em 2 etapas, a primeira vc “informa” pro LVM que possui mais espaço Físico e na segunda atribui ela para um Volume.

[root@lab1 ~]#  pvresize /dev/sda2

  Physical volume "/dev/sda2" changed

  1 physical volume(s) resized or updated / 0 physical volume(s) not resized
[root@lab1 ~]# lvresize /dev/mapper/centos-home /dev/sda2

  Size of logical volume centos/home changed from 26,99 GiB (6910 extents) to <27,00 GiB (6911 extents).

  Logical volume centos/home successfully resized.

Agora estamos prontos pra aumentar o volume lógico o escolhido é o que contém o /home

\[root@lab1 ~]# xfs_growfs /dev/centos/home 

meta-data=/dev/mapper/centos-home isize=512    agcount=4, agsize=1768960 blks

\=                       sectsz=512   attr=2, projid32bit=1

\=                       crc=1        finobt=0 spinodes=0

data     =                       bsize=4096   blocks=7075840, imaxpct=25

\=                       sunit=0      swidth=0 blks

naming   =version 2              bsize=4096   ascii-ci=0 ftype=1

log      =internal               bsize=4096   blocks=3455, version=2

\=                       sectsz=512   sunit=0 blks, lazy-count=1

realtime =none                   extsz=4096   blocks=0, rtextents=0

Obs.: Se sua partição está como EXT4/3, use o comando resize2fs para fazer essa etapa.

Depois de tudo isso podemos verificar o novo tamanho da partição com o comando df

[root@lab1 ~]# df -h

Sist. Arq.               Tam. Usado Disp. Uso% Montado em

devtmpfs                 484M     0  484M   0% /dev

tmpfs                    496M     0  496M   0% /dev/shm

tmpfs                    496M  6,8M  489M   2% /run

tmpfs                    496M     0  496M   0% /sys/fs/cgroup

/dev/mapper/centos-root   50G  1,6G   49G   4% /

/dev/sda1               1014M  197M  818M  20% /boot

/dev/mapper/centos-home   47G   33M   47G   1% /home

tmpfs                    100M     0  100M   0% /run/user/1000

Com isso redimensionamos a partição /home do servidor, até a próxima pessoal!

comments powered by Disqus