Solución:
Solución 1:
Como decía el mensaje, solo puedes crecer un sistema de archivos ext4 en línea. Si desea reducirlo, primero deberá desmontarlo.
Según el responsable del mantenimiento del sistema de archivos ext4, Ted Ts’o:
Lo sentimos, no se admite la reducción en línea.
Solucion 2:
Si el caso es un servidor remoto sin consola, puede reducir el sistema de archivos usando initramfs mientras reinicia. Debe agregar resize2fs a initramfs y ejecutarlo antes de montar root.
Ejemplo de Debian / Ubuntu:
/ etc / initramfs-tools / hooks / resizefs (ejecutable):
#!/bin/sh
set -e
PREREQS=""
prereqs() { echo "$PREREQS"; }
case $1 in
prereqs)
prereqs
exit 0
;;
esac
. /usr/share/initramfs-tools/hook-functions
copy_exec /sbin/e2fsck
copy_exec /sbin/resize2fs
exit 0
/ etc / initramfs-tools / scripts / local-premount / resizefs (ejecutable)
#!/bin/sh
set -e
PREREQS=""
prereqs() { echo "$PREREQS"; }
case "$1" in
prereqs)
prereqs
exit 0
;;
esac
# simple device example
/sbin/e2fsck -yf /dev/sda1
/sbin/resize2fs /dev/sda1 5G # see size info below
/sbin/e2fsck -yf /dev/sda1
# complex device example
# activate md-raid containing FS/PV
#/sbin/mdadm -A /dev/md0
# activate VG containing FS
#/sbin/lvm vgchange -ay vg0
# resize
#/sbin/e2fsck -yf /dev/vg0/root # or /dev/md0
#/sbin/resize2fs /dev/vg0/root 5G
#/sbin/e2fsck -yf /dev/vg0/root
Ahora corre update-initramfs -u -k kernel-name
para actualizar initramfs para el kernel kernel-name
que está configurado como predeterminado en su cargador de arranque (grub). En caso de falla de arranque, puede arrancar con otro kernel / initramfs sano sin modificar. O puedes usar all
para actualizar todos los núcleos, pero luego no tiene vuelta atrás.
Compruebe que no tiene ninguna herramienta en su sistema que haga crecer el sistema de archivos automáticamente (por ejemplo, cloud-init – comentario resizefs
en /etc/cloud/cloud.cfg
).
Reiniciar. Verifique el tamaño del sistema de archivos. Elimine los scripts initramfs y ejecute update-intiramfs -u -k kernel-name
de nuevo.
Ahora puede encoger el dispositivo subyacente con parted resizepart
/ mdadm --grow --size=
/ lvresize -L
. El tamaño del dispositivo debe ser mayor que el tamaño del sistema de archivos de los scripts. La forma más sencilla de no cometer errores: si se planifica el tamaño del dispositivo: 6G. establezca el tamaño de fs en el script en 5G. después de cambiar el tamaño de fs: cambie el tamaño del dispositivo a 6G, luego aumente fs al máximo en línea con resize2fs /dev/sda1
. Ahora su fs encaja perfectamente en su dispositivo.
Para dracut (Fedora, CentOS) use la misma lógica (/usr/lib/dracut/modules.d).
Esto es muy útil para cifrar o mover rootfs, sin espacio libre disponible para la nueva partición.
Solución 3:
Sí, puede reducir / mover / hacer crecer una partición raíz 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.
resize2fs
no se puede encoger en línea ext4
particiones. Esta limitación, cuando se aplica en la partición raíz, puede llevarlo a pensar que no puede evitar reiniciar el host para permitir reducir la root
partición, que podría ser algo que desee evitar. El proceso vinculado le permitirá desmontar la partición raíz sin reiniciar. Así que en esta luz no es estrictamente hablando en línea cambio de tamaño con respecto al estado montado de la partición, sin embargo, sigue siendo un cambio de tamaño en línea con respecto al estado en línea de la red o la accesibilidad del host.
Por supuesto, si solo desea hacer crecer su partición ext4, debe atenerse al funcionamiento convencional resize2fs
soluciones.
La solución general que he vinculado funcionará en cualquier tipo de solución dedicada o VPS, por ejemplo.
TLDR; esta solución implica pivot_root
para tmpfs
así que puedes umount
de forma segura su partición raíz viva y juegue con ella. Una vez hecho esto, pivot_root
de nuevo 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 …).
Personalmente he usado esto, y también funciona muy bien en el sistema Debian, pero la guía se escribió inicialmente en 2007 para redhat, la respuesta que he vinculado se actualizó para CentOS7. Es muy probable que funcione en tu OpenSUSE, aunque probablemente con alguna adaptación.