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


30
[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

여유 공간이 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.

Q : 불필요한 부분을 제거 할 수 있도록 vg_root를 조각 모음하려면 어떻게해야합니까?

추신 : 이미 VG의 크기를 조정하기 위해 PV의 크기를 조정해야하거나 VG 크기 조정을 수행하는 더 나은 명령이 있음을 이미 알았습니다 (예 : PV에서 여러 VG를 수행하려면 어떻게해야합니까? ... )?

답변:


31

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

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

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

참조 pvs -v --segments /dev/device범위가 현재 할당 된 것을 볼 수 있습니다.


1
나에게 문제는 PE를 다른 곳으로 옮겼다는 것이 었습니다. 목적지를 지정해야합니다. 예 :sudo pvmove --alloc anywhere /dev/sdX2:60000-76182 /dev/sdX2:3000-19182
akostadinov

29

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의 끝에 할당되지 않은 공간을 다시 정렬해야합니다. 이는 root 및 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의 최대 사용 영역 크기를 조정하십시오. 나머지는 할당되지 않은 공간에 있습니다.


이것은 매우 포괄적 인 답변입니다-파일 시스템 크기 조정 (예 : resize2fs)을 수행하는 단계 0이 포함되어 있으면 도움이 될 것입니다. 자세한 내용은 필요하지 않다고 생각하지만 앞으로 시청자에게 약간의 정보를 제공하면 도움이 될 것입니다.
Justin

처음에 여유 공간이 있었고 대상없이 pvmove를 호출하면 처음으로 이동하지 않았습니다. 어떤 일을하는 것은이었다 pvmove --alloc anywhere /dev/sda5:yyyy-end 0-newendYYYY - 끝으로 계산 "newend"로. 그러나 시작의 여유 공간이 이동할 범위보다 작은 경우 이것이 작동하는지 확실하지 않습니다. 또한 내가 오타가 PVS 출력에 있다고 생각, 난 당신이 의미 생각 /dev/sda5:0-xxx대신 /dev/sda:0-xxx.
pcworld

2
@Justin --resizefs매개 변수는 lvresize이미 기본 파일 시스템의 크기를 조정합니다.
pcworld

@pcworld는 매뉴얼 페이지를 읽고 여러분이 옳은 것 같습니다
Justin

훌륭한 답변-그러나 마지막 단계를 자세히 설명 할 수 있습니까? "LVM 크기 조정"은 "물리적 볼륨 크기 조정"을 의미한다고 가정합니다. GUI가없는 시스템의 경우 명령 줄에서 GParted없이이를 수행 할 수있는 방법이 있습니까?
케빈 Keane

1

이 오래된 게시물은 이러한 종류의 축소를 다루므로 다른 공간에 새로운 공간을 사용할 수 있습니다. 그러나 이전에는 데이터 크기를 조정해야합니다. 이것은 그와 당신이 얻는 다른 오류를 포함해야합니다. 오래된 것부터 먼저 읽으십시오.


0

이 방법을 사용합니다. 최고인지 확실하지 않지만 저에게 효과적입니다

SysAdmin이 아니라 주의해서 사용하십시오

문제를 일으키는 차이를 계산

324 % 4 = 0 문제 없습니다

그러나

324 % 32 = 10.125

그것이 문제이므로 맞지 않습니다

나는 그것이 "실제 번호를 얻을"이라고 생각

lvmdiskscan

관련된 파티션을 나열

그때

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

나는 일하기 위해 여분의 4M을 추가해야한다.

마침내

vgchange -s 32M **

0

이전 답변 으로이 문제를 해결하는 데 도움이되었지만 자동화해야했기 때문에 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

이렇게하면 PV 조각 모음에 필요한만큼 pvmove가 호출 된 다음 가능한 최소 크기 (메타 데이터로 인해 사용 된 크기보다 약간 큰 크기)로 크기가 조정됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.