LVM에서 볼륨 그룹의 크기를 줄이는 방법은 무엇입니까?

LVM에서 볼륨 그룹의 크기를 줄이는 방법은 무엇입니까?
[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

태양광:

[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

그래서 65GB의 여유 공간이 있는 VG가 있습니다. 그러나 해당 볼륨 그룹을 약 50GB만큼 축소하려는 경우:

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

따라서 오류 메시지는 다음과 같습니다.

cannot resize to 63231 extents as later ones are allocated.

묻다:vg_root의 불필요한 부분을 제거하기 위해 어떻게 조각 모음을 할 수 있습니까?

ps: VG의 크기를 조정하려면 PV만 조정하면 된다는 것을 알았습니다. 아니면 VG의 크기를 조정하는 더 나은 명령이 있습니까(예: 하나의 PV에 여러 VG를 배치하는 경우 어떻게 해야 합니까?. ..)?

답변1

다음은 LVM 또는 LVM2 파티션의 크기를 조정하는 데 필요한 단계입니다:

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

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

마지막 명령에서 pvresize오류가 발생할 수 있습니다.

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

LVM 끝에서 할당되지 않은 공간을 다시 정렬해야 합니다. 이는 루트 및 swap_1 파티션 이후를 의미합니다. 이 명령을 사용하면 현재 공간 배열을 볼 수 있습니다.

pvs -v --segments /dev/sda5

pvs다음과 같은 출력이 표시됩니다

/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

이제 pvmove외부 조각화를 제거하려면 다음을 수행하십시오.

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

이제 스왑 볼륨 이동이 성공했는지 살펴보겠습니다.

pvs -v --segments /dev/sda5

새로운 볼륨 순서가 표시되어야 합니다.

/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

그런 다음 GParted를 사용하여 LVM의 크기를 최대 사용 영역으로 조정합니다. 나머지는 할당되지 않은 공간에 저장됩니다.

답변2

pvmove다음을 사용하여 이러한 범위를 장치 또는 다른 장치의 시작 부분으로 이동할 수 있습니다 .

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

그런 다음 pvmove범위를 이동할 위치를 선택하거나 범위를 이동할 위치를 지정할 수 있습니다.

pvs -v --segments /dev/device현재 할당된 범위를 봅니다 .

답변3

이전 답변은 이 문제를 해결하는 데 도움이 되었지만 자동화해야 하므로 작성했습니다.광전지 수축

# ./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

이는 PV 조각 모음을 수행한 다음 가능한 가장 작은 크기(메타데이터로 인해 사용된 크기보다 약간 큼)로 크기를 조정하는 데 필요한 만큼 pvmove를 호출합니다.

답변4

나는 이 방법을 사용하는데, 그것이 최선인지는 확실하지 않지만 나에게는 효과가 있다

주의를 기울이고아니요시스템 관리자

문제를 일으키는 차이점을 계산합니다.

324%4 = 0 문제 없음

하지만

324%32 = 10.125

그게 문제야 그래서 안맞아

나는 이것을 "실수 얻기"라고 생각합니다.

lvmdiskscan

관련 파티션 나열

그 다음에

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

작동하려면 4M을 추가해야 했는데, 이전 PE 크기와 관련이 있는 것 같습니다.

마침내

vgchange -s 32M **

관련 정보