Digamos que eu criei o seguinte grupo de volumes Linux LVM e volumes lógicos:
$ sudo vgcreate vg1 /dev/sdb1
$ sudo lvcreate -L 10G -n lv1 vg1
$ sudo lvcreate -L 10G -n lv2 vg1
$ sudo lvcreate -L 10G -n lv3 vg1
$ sudo mkfs.ext4 /dev/mapper/vg1-lv1
$ sudo mkfs.ext4 /dev/mapper/vg1-lv2
$ sudo mkfs.ext4 /dev/mapper/vg1-lv3
Eu acabo com o seguinte, que estaria usando o sistema de arquivos ext4:
$ sudo lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1 vg1 -wi-a----- 10.00g
lv2 vg1 -wi-a----- 10.00g
lv3 vg1 -wi-a----- 10.00g
Eu gostaria de reduzir o tamanho do lv1 de 10G para 5G e aumentar o tamanho do lv2 de 10G para 15G. Isso significa que o lv2 precisaria crescer em direção à frente do disco.
$ sudo lvreduce --resizefs --size 5G /dev/mapper/vg1-lv1
fsck from util-linux 2.36.1
/dev/mapper/vg1-lv1: clean, 11/655360 files, 66753/2621440 blocks
resize2fs 1.46.3 (27-Jul-2021)
Resizing the filesystem on /dev/mapper/vg1-lv1 to 1310720 (4k) blocks.
The filesystem on /dev/mapper/vg1-lv1 is now 1310720 (4k) blocks long.
Size of logical volume vg1/lv1 changed from 10.00 GiB (2560 extents) to 5.00 GiB (1280 extents).
Logical volume vg1/lv1 successfully resized.
Reduzir o lv1 parece ter funcionado. Como faço para crescer lv2 agora?
Sim é possivel. Um ponto principal do lvm é que ele abstrai o disco das partições, então mesmo que você libere blocos no final do disco (ou neste caso antes do início da próxima partição) o lvm permitirá que você o adicione a uma partição existente partição porque mapeia os blocos internamente. A única coisa complicada herr é encolher o lv1, porque ele já tem um sistema de arquivos no iit, e os sistemas de arquivos ext4 não podem ser reduzidos online.
Considero que todas as operações de dispositivo de bloqueio apresentam um nível de risco e aconselho um backup antes de tentar como uma questão de prática recomendada.
Não existe uma solução correta, e não estou no meu pc, então não posso testar meu dyntax, mas a maneira que eu faria seria -
Desmonte o lvm1 / coloque-o em um estado desmontado (se for uma partição raiz, talvez seja necessário usar um disco usb)
Encolher o sistema de arquivos nele menor do que deveria finalmente ser (você pode usar resize2fs/resize4fs para zhrink volumes desmontados)
use lvreduce yo shrink lvm1 para o tamanho desejado. Tjis não deve ser menor que a partição ext4 redimensionada.
Resize4fs (resize2fs) para expandir o sistema de arquivos em lvm1.
(A rigor, se sua matemática estiver correta, você não precisa redimensionar o volume e expandi-lo, mas acho muito mais fácil trabalhar com blocos de 512/1024/2048 bytes). Neste ponto, a parte difícil está feita.