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.