Como reduzir o tamanho do grupo de volume no LVM?

26
[root@localhost ~] vgdisplay
  --- Volume group ---
  VG Name               vg_root
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  7
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               297,59 GiB
  PE Size               4,00 MiB
  Total PE              76182
  Alloc PE / Size       59392 / 232,00 GiB
  Free  PE / Size       16790 / 65,59 GiB
  VG UUID               XXXXXXXXXX

PV:

[root@localhost ~] pvdisplay

  --- Physical volume ---
  PV Name               /dev/mapper/udisks-luks-uuid-ASDFASDF
  VG Name               vg_root
  PV Size               297,59 GiB / not usable 2,00 MiB
  Allocatable           yes 
  PE Size               4,00 MiB
  Total PE              76182
  Free PE               16790
  Allocated PE          59392
  PV UUID               YYYYYYYYYYY

Então eu tenho um VG com 65 GB de espaço livre. Mas quando eu quero reduzir este grupo de volume sobre ~ 50 GByte:

pvresize -tv --setphysicalvolumesize 247G /dev/mapper/udisks-luks-uuid-ASDFASDF
  Test mode: Metadata will NOT be updated and volumes will not be (de)activated.
    Using physical volume(s) on command line
    Test mode: Skipping archiving of volume group.
    /dev/mapper/udisks-luks-uuid-ASDFASDF: Pretending size is 517996544 not 624087040 sectors.
    Resizing volume "/dev/mapper/udisks-luks-uuid-ASDFASDF" to 624087040 sectors.
    Resizing physical volume /dev/mapper/udisks-luks-uuid-ASDFASDF from 0 to 63231 extents.
  /dev/mapper/udisks-luks-uuid-ASDFASDF: cannot resize to 63231 extents as later ones are allocated.
  0 physical volume(s) resized / 1 physical volume(s) not resized
    Test mode: Wiping internal cache
    Wiping internal VG cache

Portanto, a mensagem de erro é:

cannot resize to 63231 extents as later ones are allocated.

P: Como posso desfragmentar o vg_root para poder remover a parte desnecessária dele?

ps: Eu já descobri que só preciso redimensionar o PV para redimensionar o VG, ou existem comandos melhores para fazer o redimensionamento de VG (ex .: o que posso fazer se eu fizesse vários VGs em um PV? ...)?

    
por gasko peter 12.03.2013 / 20:43

5 respostas

27

Você pode usar pvmove para mover essas extensões para o início do dispositivo ou outro dispositivo:

sudo pvmove --alloc anywhere /dev/device:60000-76182

Em seguida, pvmove escolhe para onde mover as extensões ou você pode especificar para onde movê-las.

Veja pvs -v --segments /dev/device para ver quais extensões estão alocadas no momento.

    
por 12.03.2013 / 21:28
18

Estas são as etapas necessárias para redimensionar uma partição LVM ou LVM2:

sudo lvresize --verbose --resizefs -L -150G /dev/ubuntu/root

sudo pvresize --setphysicalvolumesize {any size here} /dev/sda5

O último comando, pvresize , pode gerar o erro

/dev/sda5: cannot resize to xxxxx extents as later ones are allocated.

Você precisa reorganizar o espaço não alocado no final do LVM. Isso significa depois da partição root e swap_1. Você pode ver a disposição atual do espaço com este comando

pvs -v --segments /dev/sda5

pvs mostrará a saída como esta

/dev/sda5 ubuntu lvm2 a-- 698.04g 150g 0 xxx+1 root 0 linear /dev/sda:0-xxx
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g xxx+1 iii 0 free
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g yyyy jjj swap 0 linear /dev/sda5:yyyy-end

Agora use pvmove para remover a fragmentação externa:

sudo pvmove --alloc anywhere /dev/sda5:yyyy-end

Agora vamos ver se o volume de troca foi bem sucedido.

pvs -v --segments /dev/sda5

deve mostrar a nova ordem dos volumes:

/dev/sda5 ubuntu lvm2 a-- 698.04g 150g 0 xxx+1 root 0 linear /dev/sda:0-xxx
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g xxx+1 iii swap 0 linear /dev/sda5:xxx+1-yyyy
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g yyyy+1 end 0 free

Depois disso, use o GParted e redimensione o LVM para a área máxima utilizada. O resto estará no espaço não alocado.

    
por 02.04.2015 / 08:42
1

Esta publicação mais antiga abrange esse tipo de redução para que você possa usar o novo espaço para outra coisa. Você precisará redimensioná-lo para os dados antes. Isso deve abranger isso e outros erros que você recebe também. Como é mais antigo, leia primeiro:

por 25.07.2013 / 04:03
0

eu uso esse método, não tenho certeza se é o melhor, mas funciona para mim

use it with caution and not SysAdmin

calcule a diferença que causa o problema

324% 4 = 0 sem problemas

mas

324% 32 = 10,125

esse é o problema, então não cabe

eu acho que é chamado de "get real number"

lvmdiskscan

para listar as partições envolvidas

então

pvresize /dev/*** --setphysicalvolumesize ***M

eu tenho que adicionar 4M extras para trabalhar, acho que está relacionado ao tamanho antigo de PE

finalmente

vgchange -s 32M **
    
por 22.07.2015 / 02:21
0

As respostas anteriores me ajudaram a resolver esse problema, mas eu precisava automatizá-lo e, assim, escrevi pvshrink

# ./pvshrink /dev/vda2 
Moving 50 blocks from 714 to 664
  /dev/vda2: Moved: 4.00%
  /dev/vda2: Moved: 100.00%
50 of 50 (100.00%) done
Defragmentation complete.
Metadata size: 1048576 b
PE size: 4.0 MiB
Total size 1048576 b + 714 x 4194304 b = 2995781632 b (2.8 GiB)
    Wiping internal VG cache
    Wiping cache of LVM-capable devices
    Archiving volume group "fedora" metadata (seqno 15).
    /dev/vda2: Pretending size is 5851136 not 6287360 sectors.
    Resizing volume "/dev/vda2" to 5851136 sectors.
    Resizing physical volume /dev/vda2 from 0 to 714 extents.
    Updating physical volume "/dev/vda2"
    Creating volume group backup "/etc/lvm/backup/fedora" (seqno 16).
  Physical volume "/dev/vda2" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized

Isso invoca o pvmove para você quantas vezes forem necessárias para desfragmentar o PV e, em seguida, o redimensiona para o tamanho mínimo possível (o que é um pouco mais do que o tamanho usado devido aos metadados).

    
por 08.03.2018 / 23:56