¿Cómo puedo cambiar el tamaño de una partición raíz ext en tiempo de ejecución?

194

¿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 agregar ese espacio no asignado al espacio asignado a la partición raíz sin tener que cerrar el servidor?

    
pregunta BonboBingo 30.01.2011 - 18:23

9 respuestas

169

GUI (Ubuntu 14.04 y posterior) : GParted v0.17 y posterior proporcionan una buena GUI para esto. (Las versiones anteriores se negarán a cambiar el tamaño de una partición montada).

Línea de comando (cualquier versión de Ubuntu): Hay tres pasos para esto.

Paso 1. La partición primero debe redimensionarse. Si está utilizando LVM, es fácil, y presumiblemente sabe cómo proceder. Si está utilizando particiones clásicas, es un poco más complicado, y puede requerir un reinicio (aunque nunca debe arrancar otro sistema o CD en vivo).

Así es como lo hago: use fdisk para eliminar primero la partición (la idea es que se conserven los datos en el disco), luego vuelva a crearla 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.

Nuevamente, es crítico que la nueva partición comience en el mismo bloque que la anterior. Id también debería coincidir (83 para sistemas Linux). Prepárate para perder todos tus datos al menor error tipográfico.

Para estar seguro, también puedes restaurar el indicador de arranque (que según Wikipedia aún se requiere en algunas computadoras) presionando a .

Consulte la sección de comentarios sobre qué hacer si su partición de intercambio está en el camino.

Por ahora debería ser evidente por qué la gente recomienda usar un CD en vivo. ; -)

Paso 2. Como fdisk te recuerda útilmente, debes volver a cargar la tabla de particiones antes de continuar. La forma más segura es simplemente reiniciar; pero también puedes usar partprobe o kpartx (más información) .

Paso 3. Una vez que se cambia el tamaño de la partición y se vuelve a cargar la tabla de particiones, es solo cuestión de ejecutar resize2fs en el sistema de archivos, y puede hacerlo incluso cuando está montado como la partición raíz.

Ejemplo:

$ sudo resize2fs /dev/sda1
    
respondido por el Søren Løvborg 06.04.2012 - 16:23
110

Es posible hacer un cambio de tamaño en línea de un sistema de archivos ext4, incluso si es su partición raíz. Use el comando resize2fs .

sudo resize2fs /dev/sda1

EDITAR: no se permite la contracción 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
    
respondido por el CodeAddict 02.03.2012 - 11:50
21

Una solución más fácil: use growpart <device> <partition> :

growpart /dev/xvda 1  # Grows the partition; note the space
resize2fs /dev/xvda1  # Grows the filesystem

Como siempre, haz una copia de seguridad de tu tabla de particiones ( sfdisk -d /dev/xvda > partition_bak.dmp ) por si acaso.

    
respondido por el STRML 18.07.2017 - 15:26
8

También puedes hacer uso de GParted , siempre que la partición que estás redimensionando no sea la que hayas arrancado, sino que sugiero que la opción Live CD es algo más fácil para los novatos.

GParted básicamente realiza todos los pasos, solo en función de una interfaz gráfica de usuario.

    
respondido por el leatherjacket 30.09.2012 - 13:34
8

Sí, puede reducir / mover / hacer crecer una partición raíz en línea sin ningún reinicio (ni livecd, ni usbkey): consulte esta respuesta . Está muy bien escrito y es fácil de seguir, aunque bastante largo y un poco arriesgado. Entonces, si solo quiere hacer crecer su partición ext4, puede apegarse a las soluciones de resize2fs de trabajo convencionales.

La solución general que he analizado funcionará en cualquier tipo de solución dedicada o VPS, por ejemplo.

TLDR; esta solución implica pivot_root a tmpfs para que pueda umount de forma segura su partición raíz en vivo y manipularla. Una vez hecho esto, volverá a pivot_root en su nueva partición raíz.

Esto permite prácticamente cualquier manipulación en el sistema de archivos raíz (moverlo, cambiar el sistema de archivos, cambiar su dispositivo físico ...).

No se requiere reiniciar en el proceso, y esto permite eludir la limitación de resize2fs al no poder reducir ext4 particiones.

Lo he usado personalmente, y funciona muy bien en el sistema Debian también, por lo que debería funcionar en Ubuntu. Estoy muy sorprendido de no ver esta solución en profundidad un poco más vinculada a la gran cantidad de preguntas en los sitios web de stackexchange que tratan el mismo problema.

Nota: por supuesto, si quieres aumentar tu partición, un simple resize2fs será suficiente como se indica en numerosos lugares y en otras respuestas aquí.

    
respondido por el vaab 01.02.2016 - 03:08
5

Acabo de cambiar el tamaño de una partición raíz ext4 en un sistema en vivo mientras se montaba la raíz.

[root@habib i686]# resize2fs /dev/vg_habib/lv_root
resize2fs 1.42 (29-Nov-2011)
Filesystem at /dev/vg_habib/lv_root is mounted on /; on-line resizing required
old_desc_blocks = 4, new_desc_blocks = 10
Performing an on-line resize of /dev/vg_habib/lv_root to 38427648 (4k) blocks.
The filesystem on /dev/vg_habib/lv_root is now 38427648 blocks long.

[root@habib i686]# 
    
respondido por el CDR 04.12.2012 - 23:40
1

Lo hice con éxito sin umount , pivot_root , o eliminación temporal de la partición principal, usando parted 3.2 en Ubuntu 16.04, 4.4.0 kernel. Para ser precavido, hice todo lo posible desde una consola virtual con redes deshabilitadas, y tomé una instantánea de antemano por si acaso, pero la instantánea no era necesaria, así que podría haber hecho esto a través de SSH y sin cambiar los niveles de ejecución.

Determinar el tamaño de la partición: parted /dev/sda1 print | egrep "Disk.*GB"

Opcionalmente, cambie al modo multiusuario sin necesidad de redes (debe hacerse desde una consola, no desde SSH):

runlevel     # remember the original runlevel
init 2

Opcionalmente, tome una instantánea de VM para tener cuidado.

Cambiar el tamaño de la partición:

parted
p
resizepart NUMBER SIZE
# answer "Yes" when asked about resizing a live partition.
q

Cambiar tamaño del sistema de archivos: resize2fs /dev/sda1

Si algo sale mal, puedes restaurar tu instantánea aquí. Si todo fue bien, regrese al nivel de ejecución normal (obtenido anteriormente), normalmente 5: init 5 . Puede ser mejor hacer un reinicio completo en este punto para asegurarse de que todo vuelva correctamente (tuve un problema de fecha / ntp después).

    
respondido por el Roger Dueck 14.07.2017 - 02:09
0

Como se dijo anteriormente:

  • es posible expandir en vivo desde un sistema raíz. (No hay dificultades, ya que la sección de inicio no se va a mover)

  • la reducción de una partición raíz en vivo debe realizarse desde un dispositivo de arranque externo (arranque desde el sistema en vivo cd / usb-stick), como si hubiera algún error, falta de coincidencia ... lo que sea ... su sistema se cuelga, debe ser reiniciado y, finalmente, no podrá iniciarse correctamente.

Cualquier tipo de "pero lo hice y funciona" es pura suerte.

    
respondido por el ascervera 10.01.2014 - 22:58
0

Sigue estos pasos.

  1. abre terminal como superusuario su
  2. ejecuta parted
  3. escribe p para ver las particiones disponibles
  4. identifique su número de partición raíz (por ejemplo: 'sda 3' significa número 3) y elimine una partición adyacente utilizando rm PARTITION NUMBER para crear espacio libre.
  5. ahora aumenta el tamaño de raíz escribiendo resizepart ROOT NUMBER y reinicia el sistema si es necesario
  6. salir parted escribiendo exit y en el tipo de terminal partprobe y presionar enter (esto puede hacerse incluso después de reiniciar)
  7. finalmente ejecuta resize2fs /dev/sda PARTITION NUMBER y disfruta de una espaciosa partición raíz.
respondido por el Gurunadha Reddy 13.09.2017 - 22:22

Lea otras preguntas en las etiquetas