Extender la partición /var en Centos Stream 8

Extender la partición /var en Centos Stream 8

Durante la instalación de mi sistema operativo centos stream 8, le di a /var un tamaño de 10 GB pensando que sería más que suficiente, pero después de comenzar a usar Docker descubrí que ocupa demasiado espacio en la partición /var como se muestra en el comando df:

[root@compute-07 ~]# df -h
Filesystem           Size  Used Avail Use% Mounted on
devtmpfs              28G     0   28G   0% /dev
tmpfs                 28G     0   28G   0% /dev/shm
tmpfs                 28G  179M   28G   1% /run
tmpfs                 28G     0   28G   0% /sys/fs/cgroup
/dev/mapper/cs-root  371G  8.2G  363G   3% /
/dev/mapper/cs-home  100G  2.0G   98G   2% /home
/dev/mapper/cs-var    10G  9.0G  1.1G  90% /var
/dev/sda2            2.0G  412M  1.6G  21% /boot
/dev/sda1            2.0G  7.3M  2.0G   1% /boot/efi
/dev/mapper/cs-tmp    10G  105M  9.9G   2% /tmp
tmpfs                5.5G   16K  5.5G   1% /run/user/42
overlay               10G  9.0G  1.1G  90% 

/var/lib/docker/overlay2/77f74478297ca61595f0003d35c7323ec627adb44d94cef92c2b4a3c97319a66/merged
overlay               10G  9.0G  1.1G  90% /var/lib/docker/overlay2/5eeb399ce4a3c0d8065d63123985269a359fa66f4d20a8486326e466a48a0128/merged
overlay               10G  9.0G  1.1G  90% /var/lib/docker/overlay2/08d42ca66e3a5974bc305b502bca2aa4d22aa7ddcab6ea14c6af300b3abb3a70/merged
overlay               10G  9.0G  1.1G  90% /var/lib/docker/overlay2/1a45cb32b127fdf8f5c1483385139a865fdc69260ec20f3dcd4c56ad6890f909/merged
overlay               10G  9.0G  1.1G  90% /var/lib/docker/overlay2/ebb9af8edee824a4013dcd526e33e22272283bdee508fd43208fade557def728/merged
overlay               10G  9.0G  1.1G  90% /var/lib/docker/overlay2/41d55822108d04c85f348dc134fe6929b0e67f6b3bd7e0af147633bfd3a252c1/merged
overlay               10G  9.0G  1.1G  90% /var/lib/docker/overlay2/5cf3e8e06e9b4c2e6ed65164d91aed19f63d55e91524d6563e9f16b6709d29be/merged
overlay               10G  9.0G  1.1G  90% /var/lib/docker/overlay2/1d1eda94e68596b00d0cabcc75a7c91999a1c845ebd02c733bb9f00ac66a26f0/merged
overlay               10G  9.0G  1.1G  90% /var/lib/docker/overlay2/bc9e9a28c6761ad89a9457110642156ebd2b4d77de841f2a3ac9ffbaa90e4b63/merged

tmpfs                5.5G     0  5.5G   0% /run/user/0

Este es el resultado del comando lsblk, como /var está en una partición separada, entonces / y /home no pude encontrar una manera de cambiar su tamaño o crear otra partición y luego vincularla a /var.

[root@compute-07 ~]# lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0 558.4G  0 disk 
├─sda1        8:1    0     2G  0 part /boot/efi
├─sda2        8:2    0     2G  0 part /boot
└─sda3        8:3    0 554.4G  0 part 
  ├─cs-root 253:0    0 370.4G  0 lvm  /
  ├─cs-swap 253:1    0    64G  0 lvm  [SWAP]
  ├─cs-tmp  253:2    0    10G  0 lvm  /tmp
  ├─cs-home 253:3    0   100G  0 lvm  /home
  └─cs-var  253:4    0    10G  0 lvm  /var
sr0          11:0    1  1024M  0 rom  

¿Hay alguna manera de cambiar el tamaño de esta partición sin tener que perder ningún dato?

Respuesta1

No. En realidad, la mayor parte del espacio del sistema siempre se utiliza /vardonde normalmentevarLos datos disponibles viven: bases de datos, Docker, registros, etc., mientras que Linux /,casi nuncautiliza más de 10 GiB de espacio, cuando el sistema se administra correctamente.

No solo su LVM no es óptimo: yo colocaría toda la instalación de Debian con algunos servicios en el espacio que desperdició en su ESP y /boot. (Tenía la costumbre de crear máquinas virtuales con 4 GiB asignados para el sistema. Más que suficiente).

Bueno, la mejor solución sería reducir su sistema de archivos raíz de gran tamaño, pero eso no se puede hacer en línea. Necesita iniciar algunos medios de rescate, activar su VG y luego reducir el sistema de archivos y el volumen lógico, y eso podría consumir una cantidad considerable de tiempo, considerando el tamaño de la partición. También es posible estropear las cosas. Si tiene prisa, puede hacer un cambio: cree un directorio en la raíz, mueva los datos de Docker a él y vuelva a montarlo en el lugar donde se encuentran los datos de Docker en var. Debe detener Docker y todos los contenedores por el momento. Algo como esto:

systemctl stop docker.service
mkdir /var-lib-docker
mv /var/lib/docker/* /var-lib-docker
mount --bind /var-lib-docker /var/lib/docker
systemctl start docker.service

De esa manera, Docker utilizará el espacio en el sistema de archivos raíz de gran tamaño, mientras estará disponible en la ubicación habitual. Debe /etc/fstabagregar la siguiente entrada para que esta configuración sobreviva al reinicio:

/var-lib-docker /var/lib/docker none bind 0 0

Pero recuerde que este es un truco bastante feo que puede ganar algo de tiempo pero también traer algunos problemas, así que busque la oportunidad de recuperar espacio de la raíz y asignarlo correctamente /var.

Y que esta sea la lección: nunca asigne todo el espacio disponible desde el principio. Deje parte (la mayor parte) sin asignar. Siempre puede agregar fácilmente el espacio y hacerlo en línea, aunque recuperarlo es muy difícil, requiere mucho tiempo y es propenso a errores, y eso requiere tiempo de inactividad. Lo mejor es gestionar el espacio para que nunca tengas que reclamarlo.

Respuesta2

Como alternativa aesta respuesta

Su sistema utiliza volúmenes lógicos LVM.

Es posible que quede algo de espacio no utilizado en el grupo de volúmenes que puede asignar para extender var.

En caso de que no quede espacio sin utilizar, o sea muy poco, puedesreducir o eliminar el LVM de intercambioy tome el espacio que se libera para extender /var.

Eso dejaría su sistema intacto y, por lo general, incluso se puede hacer en línea.

El enfoque para eso sería algo así como (comandos no probados, así que no los copie directamente, pero el principio debe ser sólido)

  • Cree un archivo de intercambio temporal o permanente en su sistema de archivos raíz de gran tamaño como reemplazo mientras desconecta la partición de intercambio.

    • dd if=/dev/zero of=/swap-file count=65536 bs=1M
    • mkswap /swap-file
    • swapon /swap-file
  • swapoff /dev/mapper/cs-swap para deshabilitar la partición de intercambio

  • lvreducecs-swap seguido de formatear la partición de intercambio LVM restante nuevamente mkswapy reactivar el espacio de intercambio más pequeño conswapon

  • o eliminarlo directamente conlvremove

Utilice el espacio LVM libre recién creado para ampliar el volumen /var LVM y ampliar el sistema de archivos

lvextend -l +100%FREE --resizefs /dev/mapper/cs-var

Respuesta3

Tu dfy lsblkno nos digas cuáles son sus sistemas de archivos. Para reducir un volumen (partición o LV), primero se debe reducir el sistema de archivos que contiene. Una opción común para rootfs, ext4, se puede reducir sin conexión. Sin embargo, la opción de FS predeterminada para CentOS (y distribuciones similares a RHEL) es XFS y no se puede reducir en este momento.

Como otros han señalado en sus respuestas, no es difícil hacer una copia de seguridad de su rootfs con 8,2 GB. Entonces, dependiendo de su tipo de sistema de archivos rootfs, tiene las siguientes opciones:

Si es ext4, puedes reducirlo en el lugar:

  • Reinicie en otro sistema, como ArchISO, ya que ext4 solo se puede reducir sin conexión.

  • Asegúrese lvsde mostrar su partición, luegoe2fsck -f /dev/mapper/cs-root

  • resize2fs -M -p /dev/mapper/cs-root

    • Alternativamente, si conoce el tamaño de rootfs que desea, puede especificarlo en lugar de usar -M:

      resize2fs -p /dev/mapper/cs-root 15G

      Tenga en cuenta que es mejor dejar algo de espacio para reducir el volumen subyacente.

  • Recuperar espacio del LVlvreduce -L 16G cs/root

  • Cambie el tamaño del sistema de archivos al tamaño del volumen:resize2fs -p /dev/mapper/cs-root

  • Ahora el espacio libre se puede entregar a /var:lvextend -l +100%FREE cs/var

Sin embargo, si es XFS, lo mejor que puede hacer es hacer una copia de seguridad de sus rootfs y recrearlo:

  • Inicie un ArchISO como el anterior.
  • rsync -avHAXx /your-rootfs /somewhere(Asegúrese /somewherede que esté en otro volumen; es fácil encontrar 8,2 GB de espacio libre; es muy probable que su volumen de intercambio esté sobredimensionado)
  • lvremoveel volumen raíz y recrearlo con un tamaño apropiado. Recomiendo formatear a ext4 esta vez.
  • rsync -avHAXx /somewhere /your-rootfspara copiar cosas de nuevo.
  • Actualice su configuración de GRUB si es necesario: AFAICT, el ID de LV a menudo se escribe grub.cfgcomo una pista, pero no estoy familiarizado con CentOS (en Debian sería simplemente update-grub).
  • Asigne espacio libre en el VG como se indica arriba.

Otras notas que me gustaría señalar:

  • La partición de su sistema EFI (ESP) es demasiado grande. Para un servidor Linux típico, 256 MB deberían ser más que suficientes (yo uso 128 MB en mi servidor Ubuntu). Sólo necesita contener el binario GRUB y una versión muy básica de grub.cfg.
  • /bootno tiene que vivir de su propio volumen. GRUB puede leer LVM y su sistema de archivos rootfs sin problemas.
  • Dependiendo del diseño de su servidor, /rootes probable que también esté sobredimensionado (yo uso 16 GB para mi servidor Proxmox VE; no planeo colocar datos en el host).
  • ¿Realmente necesitas 64 GB de espacio de intercambio? Normalmente estoy bien con sólo 8 GB.

información relacionada