Estenda a partição /var no Centos Stream 8

Estenda a partição /var no Centos Stream 8

Durante a instalação do meu sistema operacional centos stream 8 dei /var um tamanho de 10GB pensando que seria mais que suficiente, mas depois que comecei a usar o docker descobri que ele ocupa muito espaço na partição /var como é mostrado por o 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

Esta é a saída do comando lsblk, já que /var está em uma partição separada, então / e /home não consegui encontrar uma maneira de redimensioná-lo ou criar outra partição e vinculá-la 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  

Existe alguma maneira de redimensionar esta partição sem perder nenhum dado.

Responder1

Não. Na verdade, a maior parte do espaço no sistema é sempre usado por /varonde normalmentevarvidas úteis de dados - bancos de dados, Docker, logs e assim por diante, enquanto o Linux /,raramenteusa mais de 10 GiB de espaço, quando o sistema é gerenciado adequadamente.

Não apenas o seu LVM está abaixo do ideal: eu encaixaria toda a instalação do Debian com alguns serviços no espaço que você desperdiçou no seu ESP e /boot. (Eu tinha o hábito de criar VMs com 4GiB alocados para o sistema. Mais que suficiente.)

Muito bem, a melhor solução seria reduzir o seu sistema de arquivos raiz superdimensionado, mas isso não poderia ser feito online. Você precisa inicializar alguma mídia de resgate, ativar seu VG e então reduzir o sistema de arquivos e o volume lógico e isso pode consumir muito tempo, considerando o tamanho da partição. Também é possível bagunçar as coisas. Se você estiver com pressa, você pode fazer uma reviravolta: crie algum diretório na raiz, mova os dados do Docker para ele e monte-o de volta no local onde os dados do Docker residem em var. Você precisa parar o Docker e todos os contêineres por enquanto. Algo assim:

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

Dessa forma, o Docker usará o espaço do sistema de arquivos raiz superdimensionado, estando disponível no local habitual. No /etc/fstabvocê precisa adicionar a seguinte entrada, para que esta configuração sobreviva à reinicialização:

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

Mas lembre-se que este é um hack bastante feio que pode lhe dar algum tempo, mas também trazer alguns problemas, então procure a oportunidade de recuperar espaço da raiz e alocá-lo /varadequadamente.

E que fique esta a lição: nunca aloque todo o espaço disponível desde o início. Deixe parte (a maior parte) não alocada. Você sempre pode adicionar facilmente o espaço e fazer isso on-line, embora seja muito difícil, demorado e sujeito a erros recuperá-lo, e isso requer tempo de inatividade. É melhor gerenciar o espaço para que você nunca precise recuperá-lo.

Responder2

Como alternativa paraesta resposta

Seu sistema está usando volumes lógicos LVM.

Pode haver algum espaço não utilizado no grupo de volumes que você pode atribuir para estender var.

Caso não haja espaço não utilizado ou muito pouco, você podereduzir ou remover o LVM de trocae aproveite o espaço liberado para estender /var.

Isso deixaria seu sistema intacto e normalmente pode até ser feito online.

A abordagem para isso seria algo como (comandos não testados, então não os copie completamente, mas o princípio deve ser sólido)

  • Crie um arquivo de troca temporário ou permanente em seu sistema de arquivos raiz superdimensionado como substituto enquanto você coloca a partição de troca off-line.

    • dd if=/dev/zero of=/swap-file count=65536 bs=1M
    • mkswap /swap-file
    • swapon /swap-file
  • swapoff /dev/mapper/cs-swap para desabilitar a partição swap

  • lvreducecs-swap seguido pela formatação da partição de troca LVM restante novamente mkswape reativando o espaço de troca menor comswapon

  • ou exclua-o imediatamente comlvremove

Use o espaço LVM livre recém-criado para estender o volume /var LVM e estender o sistema de arquivos

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

Responder3

Você dfe lsblknão nos diga quais são seus sistemas de arquivos. Para reduzir um volume (partição ou LV), o sistema de arquivos nele deve ser reduzido primeiro. Uma escolha comum para rootfs, ext4, pode ser reduzida offline. A escolha padrão de FS para CentOS (e distros do tipo RHEL), entretanto, é XFS e não pode ser reduzida no momento.

Como outros apontaram em suas respostas, o uso do rootfs de 8,2 GB não é difícil de fazer backup. Portanto, dependendo do tipo de sistema de arquivos rootfs, você tem as seguintes opções:

Se for ext4, você pode reduzi-lo no local:

  • Reinicie para outro sistema, como um ArchISO, pois o ext4 só pode ser reduzido offline.

  • Certifique-se lvsde mostrar sua partição, entãoe2fsck -f /dev/mapper/cs-root

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

    • Alternativamente, se você souber o tamanho desejado do rootfs, poderá especificá-lo em vez de usar -M:

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

      Observe que é melhor deixar algum espaço para diminuir o volume subjacente.

  • Recuperar espaço do LVlvreduce -L 16G cs/root

  • Redimensione o sistema de arquivos de volta ao tamanho do volume:resize2fs -p /dev/mapper/cs-root

  • Agora o espaço livre pode ser distribuído para /var:lvextend -l +100%FREE cs/var

Se for XFS, entretanto, sua melhor aposta é fazer backup de seu rootfs e recriá-lo:

  • Inicialize um ArchISO como acima.
  • rsync -avHAXx /your-rootfs /somewhere(Certifique- /somewherese de que esteja em outro volume - é fácil encontrar 8,2 GB de espaço livre - seu volume de swap provavelmente está superdimensionado)
  • lvremoveo volume raiz e recrie-o com um tamanho apropriado. Eu recomendo formatar para ext4 desta vez.
  • rsync -avHAXx /somewhere /your-rootfspara copiar as coisas de volta.
  • Atualize sua configuração do GRUB, se necessário - AFAICT, o ID do LV é frequentemente escrito grub.cfgcomo uma dica, mas não estou familiarizado com o CentOS (no Debian seria simplesmente update-grub).
  • Atribua espaço livre no VG conforme acima.

Outras notas que gostaria de destacar:

  • A partição do sistema EFI (ESP) é muito grande. Para um servidor Linux típico, 256 MB devem ser mais que suficientes (eu uso 128 MB no meu servidor Ubuntu). Ele só precisa conter o binário GRUB e uma versão muito básica do grub.cfg.
  • /bootnão precisa viver em seu próprio volume. O GRUB pode ler o LVM e seu sistema de arquivos rootfs perfeitamente.
  • Dependendo do design do seu servidor, /rootprovavelmente ele também será superdimensionado (eu uso 16 GB para meu servidor Proxmox VE - não estou planejando colocar dados no host).
  • Você realmente precisa de 64 GB de espaço de troca? Normalmente fico bem com apenas 8 GB.

informação relacionada