[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
Więc mam VG z 65 GB wolnego miejsca. Ale kiedy chcę zmniejszyć tę grupę woluminów o około 50 GB:
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
Komunikat o błędzie to:
cannot resize to 63231 extents as later ones are allocated.
P: Jak mogę zdefragmentować plik vg_root, aby usunąć niepotrzebną część?
ps: Już się dowiedziałem, że muszę tylko zmienić rozmiar PV, aby zmienić rozmiar VG, czy też są jakieś lepsze polecenia do zmiany rozmiaru VG (np .: co mogę zrobić, gdybym miał kilka VG na PV? ... )?
partition
lvm
scientific-linux
Gasko Peter
źródło
źródło
sudo pvmove --alloc anywhere /dev/sdX2:60000-76182 /dev/sdX2:3000-19182
Oto kroki wymagane do zmiany rozmiaru partycji LVM lub LVM2:
Ostatnie polecenie
pvresize
może spowodować błądMusisz zmienić rozmieszczenie nieprzydzielonego miejsca na końcu LVM. Oznacza to po partycji root i swap_1. Za pomocą tego polecenia możesz zobaczyć aktualny układ przestrzeni
pvs
pokaże takie wyjścieTeraz użyj,
pvmove
aby usunąć fragmentację zewnętrzną:Zobaczmy teraz, czy przeniesienie woluminu wymiany się powiodło.
powinien pokazać nową kolejność woluminów:
Następnie użyj GParted i zmień rozmiar LVM do maksymalnego używanego obszaru. Reszta będzie w nieprzydzielonym miejscu.
źródło
pvmove --alloc anywhere /dev/sda5:yyyy-end 0-newend
„newend” liczony jako koniec - rrrr. Nie jestem jednak pewien, czy to zadziała, jeśli wolne miejsce na początku jest mniejsze niż zakres, który ma zostać przesunięty. Myślę też, że w twoich wyjściach z pvs jest literówka, myślę, że miałeś na myśli/dev/sda5:0-xxx
zamiast/dev/sda:0-xxx
.--resizefs
Parametrlvresize
już dba o zmianę rozmiaru bazowego systemu plików.Ten starszy post dotyczy tego rodzaju kurczenia się, dzięki czemu możesz wykorzystać nowe miejsce na coś innego. Jednak wcześniej trzeba będzie zmienić jego rozmiar na dane. Powinno to obejmować również to i inne błędy, które otrzymujesz. Ponieważ jest starszy, najpierw przeczytaj:
źródło
używam tej metody, nie jestem pewien, czy jest najlepsza, ale działa dla mnie
obliczyć różnicę, która powoduje problem
324% 4 = 0 bez problemu
ale
324% 32 = 10,125
to jest problem, więc nie pasuje
myślę, że nazywa się to „zdobądź prawdziwy numer”
aby wyświetlić listę partycji
następnie
muszę dodać dodatkowe 4M do pracy, myślę, że jest to związane ze starym rozmiarem PE
Wreszcie
źródło
Poprzednie odpowiedzi pomogły mi rozwiązać ten problem, ale musiałem to zautomatyzować i tak napisałem pvshrink
Powoduje to wywołanie pvmove tyle razy, ile jest to konieczne do defragmentacji PV, a następnie zmiana rozmiaru do minimalnego możliwego rozmiaru (który jest nieco większy niż rozmiar używany z powodu metadanych).
źródło