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.