¿Cómo puedo aumentar el tamaño de la partición raíz de un sistema en tiempo de ejecución?
Tengo una partición que no está asignada después de la partición raíz (que también es ext4), ¿cómo puedo añadir ese espacio no asignado al espacio asignado a la partición raíz sin tener que apagar el servidor?
GUI (Ubuntu 14.04 y posterior): GParted v0.17 y posteriores proporcionan una agradable GUI para esto. (Las versiones anteriores se negarán a redimensionar una partición montada).
Línea de comandos (cualquier versión de Ubuntu): Hay tres pasos para esto.
Paso 1. Primero hay que redimensionar la partición. Si usted'está usando LVM, es fácil, y usted presumiblemente sabe cómo proceder. Si estás usando particiones clásicas, es un poco más complicado, y puede requerir un reinicio (aunque nunca tienes que arrancar otro sistema o CD en vivo).
Así es como lo hago yo: Usa fdisk
para borrar primero la partición (la idea es que los datos del disco se conserven), y luego recréala cuidadosamente con un tamaño mayor en la misma posición.
Ejemplo:
$ sudo fdisk /dev/sda
Command (m for help): p
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 9437183 4717568 83 Linux
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
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4, default 1): 1
First sector (2048-10485759, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759):
Using default value 10485759
Command (m for help): p
Device Boot Start End Blocks Id System
/dev/sda1 2048 10485759 5241856 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.
De nuevo, es fundamental que la nueva partición comience en el mismo bloque que la antigua. El Id también debe coincidir (83 para los sistemas Linux). Prepárese para perder todos sus datos al menor error tipográfico.
Para estar seguro, también puede restaurar el indicador de arranque (que según Wikipedia todavía es necesario en algunos ordenadores) pulsando a
.
Vea la sección de comentarios para saber qué hacer si su partición de intercambio está en el camino.
A estas alturas debería ser evidente por qué la gente recomienda usar un CD en vivo. ;-)
Paso 2.
Como fdisk
le recuerda amablemente, debe recargar la tabla de particiones antes de proceder. La forma más segura es simplemente reiniciar; pero también puede usar partprobe
o kpartx
(más información).
Paso 3.
Una vez que la partición ha sido redimensionada y la tabla de particiones recargada, es una simple cuestión de ejecutar resize2fs
en el sistema de ficheros, y puedes hacerlo incluso cuando está montada como partición raíz.
Ejemplo:
$ sudo resize2fs /dev/sda1
Es posible hacer un redimensionamiento en línea de un sistema de archivos ext4, incluso si es su partición raíz. Utilice el comando resize2fs
.
sudo resize2fs /dev/sda1
EDIT: No se permite el encogimiento en línea:
root@brunojcm-htpc:/home# resize2fs /dev/sda5 2654693
resize2fs 1.42 (29-Nov-2011)
Filesystem at /dev/sda5 is mounted on /; on-line resizing required
resize2fs: On-line shrinking not supported
También puedes usar GParted - siempre y cuando la partición que estás redimensionando no sea desde la que arrancaste - si no, sugiero que la opción de CD vivo es algo más fácil para los novatos.
GParted básicamente hace todos los pasos - sólo que basado en una interfaz gráfica de usuario.