HD: Redimensionar partições no GNU/Linux

Com a popularização das tecnologias de virtualização, tornou-se muito comum a necessidade de redimensionar uma partição de um servidor. No caso do sistema de arquivo ext3, e seu sucessor ext4, isso é possível com o comando resize2fs.
Podemos tanto aumentar quanto diminuir o tamanho da partição. Aqui vou mostrar como aumentar o tamanho da partição, ocupando todo o espaço disponível, ou até um tamanho determinado.
Antes de qualquer alteração é extremamente recomendado o backup completo dos dados no disco rígido!
Nos servidores virtuais, geralmente uso uma partição somente para os dados, separada das partições de sistema. Nesse caso a partição está montada em /dados:
df -h
 Filesystem            Size  Used Avail Use% Mounted on
 /dev/sda1             1.9G  573M  1.2G  33% /
 tmpfs                  61M     0   61M   0% /lib/init/rw
 udev                   57M  148K   57M   1% /dev
 tmpfs                  61M     0   61M   0% /dev/shm
 /dev/sda3             5.0G  139M  4.6G   3% /dados
O primeiro passo é rodar o fsck para verificar e corrigir eventuais problemas no sistema de arquivos:
umount /dados
fsck -f /dados
Lembrando que para desmontar uma partição ela não pode estar sendo usada por nenhum processo. Para checar isso podemos usar o comando lsof:
lsof /dados
Após a execução do fsck, vamos apagar a partição e recriá-la no tamanho desejado. Os dados não serão afetados e, no caso de uma falha grave, podemos recuperar as informações do backup que já fizemos ;):
 fdisk /dev/sda
Checando as partições:
Command (m for help): p
Disk /dev/sda: 42.9 GB, 42949672960 bytes
 [...]
Device Boot      Start         End      Blocks   Id  System
 /dev/sda1            2048     3905535     1951744   83  Linux
 /dev/sda2         3905536     4405247      249856   82  Linux swap / Solaris
 /dev/sda3         4405248    14891007     5242880   83  Linux
Apagando a partição sda3:
Command (m for help): d
 Partition number (1-4): 3
Criando nova partição no tamanho desejado. Nesse caso estou ampliando de 5GB para 10GB:
Coloque o valor total que deseja para a nova particição que está alterando.
Command (m for help): n
 Command action
 e   extended
 p   primary partition (1-4)
 p
 Partition number (1-4): 3
 First sector (4405248-83886079, default 4405248):
 Using default value 4405248
 Last sector, +sectors or +size{K,M,G} (4405248-83886079, default 83886079): +10GB
Listando as partições novamente:
Command (m for help): p
Disk /dev/sda: 42.9 GB, 42949672960 bytes
 [...]
Device Boot      Start         End      Blocks   Id  System
 /dev/sda1            2048     3905535     1951744   83  Linux
 /dev/sda2         3905536     4405247      249856   82  Linux swap / Solaris
 /dev/sda3         4405248    23936497     9765625   83  Linux
Note o aumento nos blocos da partição sda3 de 5242880 para 9765625.
Gravando as alterações e finalizando o fdisk:
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.
Como o fdisk nos alerta para o sistema reconhecer a alteração, é necessário um reboot, ou a execução de um programa que informe as alterações ao kernel.
Nesse caso usei o partprobe:
partprobe /dev/sda
A partição já está no tamanho correto. Agora precisamos fazer o sistema de arquivos reconhecer o espaço extra. É aqui que entra o resize2fs:
resize2fs /dev/sda3
resize2fs vai aumentar o sistema de arquivos para ocupar todo o espaço disponível na partição. Se não quisermos usar todo o espaço, podemos determinar o tamanho desejado:
resize2fs /dev/sda3 8G
Caso nenhum erro ocorra podemos montar a nova partição e conferir o espaço disponível:
mount /dev/sda3 /dados
df -h
 Filesystem            Size  Used Avail Use% Mounted on
 /dev/sda1             1.9G  575M  1.2G  33% /
 tmpfs                  61M     0   61M   0% /lib/init/rw
 udev                   57M  148K   57M   1% /dev
 tmpfs                  61M     0   61M   0% /dev/shm
 /dev/sda3             9.2G  140M  8.6G   2% /dados
Agora é só usar o novo espaço!
Close Menu