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