Ampliación de una partición, VPS de OVH

Gran invento los VPS de OVH, excepcional rendimiento a precio inigualable y ahora que han activado el servicio de snapshots no se puede pedir más por 3€/mes. Pero como no me llevo comisión, vamos al lío técnico. Lo has empezado a usar, te ha molado y ahora el disco duro se te queda pequeño (10Gb por defecto) así que decides cambiar el tipo de servidor a otro con más disco... pero los cambios no se aplican automágicamente como en otras veces... así que vamos a intentar arreglarlo.

Lo primero es entrar en la máquina, ver el esquema de particionado y anotar algún que otro valor que nos va a ayudar más adelante:

# mount
/dev/vda1 on / type ext4 (rw)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/cgroup type tmpfs (rw)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
none on /run/user type tmpfs (rw,noexec,nosuid,nodev,size=104857600,mode=0755)
none on /sys/fs/pstore type pstore (rw)
systemd on /sys/fs/cgroup/systemd type cgroup (rw,noexec,nosuid,nodev,none,name=systemd)
# cat /etc/fstab
LABEL=cloudimg-rootfs  /   ext4  defaults  0 0
# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            1.9G  4.0K  1.9G   1% /dev
tmpfs           386M  892K  385M   1% /run
/dev/vda1       9.9G  7.5G  2.0G  80% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
none            5.0M     0  5.0M   0% /run/lock
none            1.9G   12K  1.9G   1% /run/shm
none            100M     0  100M   0% /run/user
# fdisk /dev/vda
Command (m for help): p

Disk /dev/vda: 21.5 GB, 21474836480 bytes
4 heads, 32 sectors/track, 327680 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: 0x0005bac1

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048    20971519    10484736   83  Linux

Anotamos los siguientes valores:

  • Sector comienzo de la partición: 2048
  • Tamaño usado de la partición: 7.5Gb
  • Tamaño total del disco: 21.5G

Como se puede ver, ya tenemos el nuevo disco (20Gb) en funcionamiento, pero las particiones todavía están ancladas al anterior. Una vez anotados todos estos valores y teniendo a buen recaudo el resto de la información, tenemos que eliminar el sistema de particionado actual (d), comprobar que se ha eliminado -en este caso la única partición que había- (p), recreamos el sistema de particiones (n) con el nuevo tamaño y reescribimos la tabla de particiones (w). Todo esto usando fdisk en modo live, nada de rescue que por algo somos gallegos:

# fdisk -u /dev/vda
Command (m for help): d
Selected partition 1

Command (m for help): p
   Device Boot      Start         End      Blocks   Id  System

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1):
Using default value 1
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039):
Using default value 41943039

Command (m for help): p
   Device Boot      Start         End      Blocks   Id  System
/dev/vda1            2048    41943039    20970496   83  Linux

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.

Por defecto ya nos ha cogido los valores buenos al crear la nueva partición (2048 como sector de inicio y 41943039 como sector de fin), si nos fijamos el sector final es prácticamente el doble del que teníamos anteriormente (20971519), porque el nuevo disco es de 20Gb en lugar de 10Gb. Si no cogiera los valores por defecto tendríamos que introducirlos manualmente.

Reiniciamos el vps y una vez haya reiniciado entramos de nuevo para redimensionar la nueva partición al tamaño correspondiente:

# df -h | grep vda1
/dev/vda1       9.9G  7.5G  2.0G  80% /
# resize2fs /dev/vda1
# df -h | grep vda1
/dev/vda1        20G  7.5G   12G  40% /

Como se puede comprobar, ya tenemos la partición lista con su nuevo tamaño. Al final ha sido más fácil y menos traumático de lo esperado.

sysadmin

About the author

Óscar
has doubledaddy super powers, father of Hugo and Nico, husband of Marta, *nix user, Djangonaut and open source passionate.