¿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 apagar el servidor?
partitioning
ext4
BonboBingo
fuente
fuente
Respuestas:
GUI (Ubuntu 14.04 y posterior) : GParted v0.17 y posterior proporciona 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 ser redimensionada. 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 tendrá que iniciar otro sistema o CD en vivo).
Así es como lo hago: utilícelo
fdisk
para eliminar primero la partición (la idea es que se preservarán los datos en el disco), luego vuelva a crearla cuidadosamente con un tamaño mayor en la misma posición.Ejemplo:
Nuevamente, es crítico que la nueva partición comience en el mismo bloque que la anterior. El Id también debe coincidir (83 para sistemas Linux). Esté preparado 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 se requiere en algunas computadoras) presionando
a
.Consulte la sección de comentarios para saber 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 usarpartprobe
okpartx
(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 partición, es una simple cuestión de ejecutarse
resize2fs
en el sistema de archivos, y puede hacerlo incluso cuando está montada como la partición raíz.Ejemplo:
fuente
fdisk
dice,partprobe
okpartx
puede funcionar en lugar de reiniciar; Ver también esta pregunta . Incluso si reinicia, la solución sigue siendo preferible a usar un CD en vivo cuando se trata del tiempo de inactividad, donde un reinicio simple puede ser inferior a 10 s para una máquina virtual. También es más rápido en tiempo de operador, por lo que generalmente uso este enfoque yo mismo. :)free -h
), deshabilite el intercambio (swapoff /dev/sda2
), cambie la tabla de particiones (incluida la eliminación y recreación de la partición de intercambio) y 1) reinicie o 2) vuelva a cargar la tabla de particionesswapon
. (Si la memoria es demasiado ajustada para deshabilitar el intercambio temporalmente, aún puede crear y habilitar una nueva partición de intercambio (/dev/sda3
), luego intercambiarsda2
; pero luego tendrá que actualizar/etc/fstab
con el nuevo nombre del dispositivo de intercambio.)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. Usa el
resize2fs
comando.EDITAR: no se permite la reducción en línea:
fuente
man resize2fs
:The resize2fs program does not manipulate the size of partitions. If you wish to enlarge a filesystem, you must make sure you can expand the size of the underlying partition first. This can be done using fdisk(8) by deleting the partition and recreating it with a larger size or using lvextend(8),if you're using the logical volume manager lvm(8).
Esta pregunta se trata de cambiar el tamaño de la partición , no del sistema de archivos . La distinción es sutil pero muy importante.The resize2fs program will resize ext2, ext3, or ext4 file systems. It can be used to enlarge or shrink an unmounted file system located on device. If the filesystem is mounted, it can be used to expand the size of the mounted filesystem, assuming the kernel supports on-line resizing. (As of this writing, the Linux 2.6 kernel supports on-line resize for filesystems mounted using ext3 and ext4.).
fdisk
cuándogrowpart
lo hará muy fácilmente.Una solución más fácil: use
growpart <device> <partition>
:Como siempre, haga una copia de seguridad de su tabla de particiones (
sfdisk -d /dev/xvda > partition_bak.dmp
) por si acaso.fuente
sfdisk: /dev/nvme0n1p5: does not contain a recognized partition table
(usando arranque dual con Windows)gparted
para ello.apt-get install cloud-utils
/dev/nvme0n1
. p5 es la partición 5 en este disco. En comparación con los segmentos de disco BSD tradicionales, utilizan un esquema de numeración similar.Sí, puede reducir / mover / hacer crecer una partición raíz en línea sin reiniciar (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 desea aumentar su partición ext4, puede apegarse a las
resize2fs
soluciones de trabajo convencionales .La solución general que he conectado funcionará en cualquier tipo de solución dedicada o VPS, por ejemplo.
TLDR; Esta solución implica a
pivot_root
paratmpfs
que puedaumount
vivir de forma segura su partición raíz y jugar con ella. Una vez hecho esto, volveráspivot_root
a tu 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 evitar la limitación de
resize2fs
no poder reducir lasext4
particiones.Yo personalmente he usado esto, y también funciona muy bien en el sistema Debian, 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 las muchas preguntas en los sitios web de stackexchange que tratan el mismo problema.
Nota: Por supuesto, si desea aumentar su partición, un simple
resize2fs
será suficiente como se indica en numerosos lugares y en otras respuestas aquí.fuente
También puede usar GParted , siempre y cuando la partición que está redimensionando no sea la que arrancó; de lo contrario, sugiero que la opción de CD en vivo sea algo más fácil para los novatos.
GParted básicamente hace todos los pasos, solo basado en una interfaz gráfica de usuario.
fuente
Acabo de cambiar el tamaño de una partición raíz ext4 en un sistema en vivo mientras se montaba la raíz.
fuente
Me gustaría hacer una extensión sobre la respuesta de @ Søren Løvborg: extender la partición con una partición de intercambio presente.
Primero el diseño del disco después de extenderlo:
Por lo tanto, sda1 debe ampliarse con el espacio libre al final del disco, pero la partición de intercambio se encuentra entre ellos. Así es como puedes hacerlo:
Primero necesitamos deshabilitar el intercambio. Compruebe cuánto se usa y si puede apagarlo.
el intercambio no se usa aquí para que podamos desactivarlo
Ahora cambiaremos la tabla de particiones:
(nota: si tiene la primera partición iniciada en el sector 63 en lugar de 2048, debe agregar la opción
-c=dos
)Nota: el tamaño de sda1 es la cantidad total de sectores menos el tamaño de sector de su partición de intercambio: 14335999-2093058 = 12242941
Como menciona fdisk: el kernel todavía está usando la antigua tabla de particiones, por lo que debemos volver a cargarla.
Ahora necesitamos ejecutar resize2fs en sda1 (¡no lo olvides!)
Ahora, las cosas aún no han terminado. Como probablemente haya notado, sda2 está particionado como tipo Linux (Ext4). Por alguna razón, no hay forma en fdisk de elegir el tipo. Entonces tenemos que alternarlo usando
cfdisk
Elija sda2 y cambie el tipo a
82 Linux swap / Solaris
y asegúrese de escribirlo (escriba yes para confirmar)Ahora podemos reactivar el intercambio
Y finalmente enciéndelo:
Lo único que debemos hacer es actualizar fstab para montar la partición de intercambio automáticamente al iniciar
Y cambie el UUID de la partición de intercambio a la salida anterior:
Ahora todo está bien y puede reiniciar sin problemas.
fuente
mkswap
&swapon
deben ejecutarse en sda2. Cometí un error al comienzo de mi publicación:swapoff
debe ejecutarse en sda5. Los comentarios son siempre bienvenidos, fue difícil de anotar.cryptdisks_stop
, luego actualizar / etc / crypttab en lugar de/etc/fstab
y reiniciar cryptdisks concryptdisks_start
.Acabo de hacer esto con éxito sin
umount
,pivot_root
o la eliminación temporal de la partición principal, usando Parted 3.2 en Ubuntu 16.04, 4.4.0 kernel. Para ser cauteloso, hice todo, desde una consola virtual con redes deshabilitadas, y tomé una instantánea de antemano por si acaso, pero la instantánea no era necesaria, por lo que podría haberlo hecho bien 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 conexión de red (debe hacerse desde una consola, no SSH):
Opcionalmente, tome una instantánea de VM para ser cauteloso.
Cambiar el tamaño de la partición:
Cambiar el tamaño del sistema de archivos:
resize2fs /dev/sda1
Si algo sale mal, puede restaurar su instantánea aquí. Si todo ha ido bien, volver 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).fuente
Sigue estos pasos.
su
parted
p
para ver las particiones disponiblesrm PARTITION NUMBER
para crear espacio libre.resizepart ROOT NUMBER
y reinicie el sistema si es necesarioparted
escribiendoexit
y en el tipo de terminalpartprobe
y presione enter (esto se puede hacer incluso después de reiniciar)resize2fs /dev/sda PARTITION NUMBER
y disfruta de una espaciosa partición raíz.fuente
Como se dijo antes:
es posible expandir en vivo desde un sistema raíz (sin dificultades, ya que la sección de arranque no se puede 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 alguna falla, falta de coincidencia ... lo que sea que ... su sistema se cuelga, necesita reiniciarse y eventualmente no será capaz de arrancar correctamente.
Cualquier tipo de "pero lo hice y funciona" es pura suerte.
fuente