Como redimensionar uma partição Linux sem reboot

 

Um sistema Linux  é desenvolvido para ter apenas uma repartição do sistema, que é /dev/vda. Porém, se o comando fdisk for utilizado, é possível ver que o disco está dividido em duas partições. A primeira, /dev/vda1, é a partição normal do sistema e a segunda, /dev/vda2, está configurada como um espaço de troca. 

root@debian:~# fdisk -l /dev/vda

Disk /dev/vda: 50 GiB, 53687091200 bytes, 104857600 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
Disklabel type: dos
Disk identifier: 0x0041f8a8

Device     Boot    Start       End  Sectors Size Id Type
/dev/vda1           2048  96471039 96468992  46G 83 Linux
/dev/vda2       96471040 104857599  8386560   4G 82 Linux swap / Solaris

No exemplo acima, o total de espaço na máquina é de 50GB. 46GB são configurados para utilização, e 4GB para troca. Mas se a quantidade de GBs não for suficiente, é possível aumenta-lá sem a necessidade de uma reinicialização do sistema. Mas como isso é possível?

 

Requerimentos

  • Um servidor Linux que tenha sido criado com ProfitBricks
  • Acesso ao servidor através de SSH 
  • O comando partprobe. Também pode ser instalado como parted na maioria dos sistemas Linux. 
  • Os comandos fdiskswapoffmkswapswaponeresize2fs.
  • Um backup do sistema no qual você está trabalhando, só por segurança. 

Espaço Adicional 

Para aumentar o tamanho do seu hard drive, vá até o Data Center Designer (DCD) e aprimore seu drive. 

DCD Increase Volume Size

Depois de inserir a quantidade de espaço desejada, clique em "provisioning". Após alguns minutos, seu hard drive estará maior. 

 

Então, é necessário desativar o espaço de troca por alguns minutos. Isso pode ser feito através do comando:

root@debian:~# swapoff -a

Uma vez que o espaço de troca estiver desabilitado, será possível reconfigurar a partição através do comando fdisk. Digite fdisk /dev/vda  e então insira o comando d para deletar as duas partições, como no exemplo abaixo:

root@debian:~# fdisk /dev/vda

Command (m for help): d
Partition number (1,2, default 2):

Partition 2 has been deleted.

Command (m for help): d
Selected partition 1
Partition 1 has been deleted.

Em seguida, você deverá recriar as partições. No exemplo, anteriormente havia 4GB de espaço de troca, então é necessário que pelo menos essa quantidade seja inserida na segunda partição. 

A primeira partição /dev/vda1 deve ser recriada primeiro. Pressione n para criar uma nova partição e em seguida, p. Pressione Enter para aceitar o valor de 2048 que é equivalente a 96GB. O valor exato que temos subtraindo os 4GB de troca dos 100GB de espaço de disco. 

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-209715199, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-209715199, default 209715199): +96G

Created a new partition 1 of type 'Linux' and of size 96 GiB.

Agora, a partição de troca deverá ser recriada em um processo similar. Pressione n e depois p para criar uma nova partição. Em seguida, pressione Enter para aceitar o valor automático de 4GB da segunda partição. 

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (201328640-209715199, default 201328640):
Last sector, +sectors or +size{K,M,G,T,P} (201328640-209715199, default 209715199):

Created a new partition 2 of type 'Linux' and of size 4 GiB.

Como a segunda partição é usada como espaço de troca, é necessário alterar seu tipo. Use o comando fdisk. Pressione t e então 2 para selecionar a segunda partição. Caso queria ver uma lista de todos os tipos de partição, pressione L. Caso contrário, digite 82 para selecionar o tipo "Linux swap / Solaris". 

Command (m for help): t
Partition number (1,2, default 2): 2
Partition type (type L to list all types): L

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris
 1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden or  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx
 5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data
 6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility
 8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt
 9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access
 a  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi ea  Rufus alignment
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         eb  BeOS fs
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a6  OpenBSD         ee  GPT
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        ef  EFI (FAT-12/16/
11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f0  Linux/PA-RISC b
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f1  SpeedStor
14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f4  SpeedStor
16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      f2  DOS secondary
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fb  VMware VMFS
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fc  VMware VMKCORE
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fd  Linux raid auto
1c  Hidden W95 FAT3 75  PC/IX           bc  Acronis FAT32 L fe  LANstep
1e  Hidden W95 FAT1 80  Old Minix       be  Solaris boot    ff  BBT
Partition type (type L to list all types): 82

fdisk então irá informar que houve uma troca no tipo de partição. 

Changed type of partition 'Linux' to 'Linux swap / Solaris'.

Depois disso, salve tudo utilizando o comando w.

Command (m for help): w

Você receberá uma mensagem como essa:

The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: 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).

Dispensando a reinicialização, use o comando partprobe:

root@debian:~# partprobe

Agora, será necessário redimensionar /dev/vda1:

root@debian:~# resize2fs /dev/vda1
resize2fs 1.42.12 (29-Aug-2014)
Filesystem at /dev/vda1 is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3

O arquivo /dev/vda1 agora terá 25165824 (4k) blocos. 

Inicialize o novo local de troca de /dev/vda2:

root@debian:~# mkswap /dev/vda2
Setting up swapspace version 1, size = 4193276 KiB
no label, UUID=c55c25a2-a386-4653-8455-4d9030586dd2

E então, edite /etc/fstab e substitua o antigo UUID pelo novo, com o comando mkswap. Na linha "mount point" verifique a opção "swap".

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
UUID=332f8fb5-ff1f-4297-b512-f2c93a277296 /               ext4    errors=remount-ro 0       1
/dev/fd0        /media/floppy0  auto    rw,user,noauto,exec,utf8 0       0
UUID=c55c25a2-a386-4653-8455-4d9030586dd2       none    swap    sw      0       0

Depois, ative a troca novamente com /etc/fstab.

root@debian:~# swapon -a

Verificando

É possível verificar a nova distribuição digitando df oufdisk.

Device     Boot     Start       End   Sectors Size Id Type
/dev/vda1            2048 201328639 201326592  96G 83 Linux
/dev/vda2       201328640 209715199   8386560   4G 82 Linux swap / Solaris

Também é possível confirmar se o servidor não foi reiniciado com o comando uptime:

$ uptime
 23:54:21 up 7 days,  1:15,  1 user,  load average: 0.00, 0.01, 0.05

 

  • partição, linux, reboot
  • 1 Usuários acharam útil
Esta resposta lhe foi útil?

Artigos Relacionados

Como reiniciar a rede Ubuntu?

O reiniciamento da interface de rede Ubuntu só pode ser realizado depois que a interface de rede...

Como saber a última vez que um usuário esteve logado no sistema Linux?

  Neste tutorial, você irá conseguir saber como verificar quem usou recentemente o servidor...

Como saber o quanto de RAM ainda há no sistema?

  Alguns usuários pensam que o Linux "rouba" espaço de memória RAM não utilizada para o seu...

Como otimizar seu MySQL

Para realizar otimização do MySQL é recomendado utilizar o mysqlmymonlite.sh...

Como se conectar remotamente com um servidor MySQL

Esse é um tutorial que irá lhe ensinar a como se configurar e se conectar a um servidor MySQL...