GNU/Linux >> Tutoriales Linux >  >> Linux

¿Es posible reducir en línea un volumen EXT4 con LVM?

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 mantenedor del sistema de archivos ext4, Ted Ts'o:

Lo sentimos, no se admite la reducción en línea.

Solución 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 la raíz.

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 ejecuta update-initramfs -u -k kernel-name para actualizar initramfs para el kernel kernel-name que está configurado como predeterminado en su gestor de arranque (grub). En caso de falla en el arranque, puede arrancar con otro kernel/initramfs saludable sin modificar. O puede usar all para actualizar todos los núcleos, pero luego no tiene vuelta atrás.

Verifique que no tenga 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. Compruebe el tamaño del sistema de archivos. Elimine los scripts de initramfs y ejecute update-intiramfs -u -k kernel-name de nuevo.

Ahora puede reducir 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 el tamaño del dispositivo planificado - 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 haga crecer fs al máximo en línea con resize2fs /dev/sda1 . Ahora tu fs encaja perfectamente en tu dispositivo.

Para dracut (Fedora,CentOS) use la misma lógica (/usr/lib/dracut/modules.d).

Esto es muy útil para encriptar o mover rootfs, sin espacio libre disponible para la nueva partición.

Solución 3:

Sí, puedes reducir/mover/aumentar una partición raíz sin reiniciar (ni livecd, ni usbkey):consulta esta respuesta. Está muy bien escrito y es fácil de seguir, aunque bastante largo y un poco arriesgado.

resize2fs no se puede reducir 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 la reducción de root partición, que podría ser algo que desee evitar. El proceso vinculado le permitirá desmontar la partición raíz sin reiniciar. Entonces, bajo 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 apegarse al trabajo convencional resize2fs soluciones.

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

TLDR; esta solución implica pivot_root a tmpfs para que puedas umount con seguridad, su partición raíz viva y juegue con ella. Una vez hecho esto, pivot_root de vuelta 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 vinculé se actualizó para CentOS7. Es muy probable que funcione en su OpenSUSE, aunque probablemente con alguna adaptación.


Linux
  1. Lum:¿cómo extender una partición con un LVM y el volumen físico y el volumen lógico contenidos?

  2. ¿Cómo encoger un volumen físico?

  3. ¿Cómo crear una partición Lvm/volumen físico> 2 tb?

  4. Expanda y reduzca volúmenes con Administración de discos

  5. CentOS / RHEL:cómo crear una nueva partición de intercambio basada en LVM

Agregar almacenamiento con LVM

Instalar Linux con LVM

Una guía sobre instantáneas de LVM con ext4 en CentOS 7

Cómo crear un grupo de volúmenes en Linux con LVM

Cómo cambiar el tamaño de un volumen lógico con 5 simples comandos LVM

Los comandos LVM fallan con "Error al cargar el archivo de configuración /etc/lvm/lvm.conf"