[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
Entonces tengo un VG con 65 GB de espacio libre. Pero cuando quiero reducir este grupo de volúmenes aproximadamente ~ 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
Entonces el mensaje de error es:
cannot resize to 63231 extents as later ones are allocated.
P: ¿Cómo puedo desfragmentar vg_root para poder eliminar la parte innecesaria?
ps: Ya descubrí que solo necesito cambiar el tamaño del PV para cambiar el tamaño del VG, o ¿hay algún comando mejor para cambiar el tamaño del VG (por ejemplo: ¿qué puedo hacer si quisiera varios VG en un PV? ... )?
partition
lvm
scientific-linux
Gasko Peter
fuente
fuente
sudo pvmove --alloc anywhere /dev/sdX2:60000-76182 /dev/sdX2:3000-19182
Estos son los pasos necesarios para cambiar el tamaño de una partición LVM o LVM2:
El último comando
pvresize
, puede producir el errorDebe reorganizar el espacio no asignado al final del LVM. Eso significa después de la partición root y swap_1. Puede ver la disposición actual del espacio con este comando
pvs
mostrará resultados como esteAhora use
pvmove
para eliminar la fragmentación externa:Ahora veamos si mover el volumen de intercambio tuvo éxito.
debería mostrar el nuevo orden de volúmenes:
Después de eso, use GParted y cambie el tamaño del LVM al área máxima utilizada. El resto estará en espacio no asignado.
fuente
pvmove --alloc anywhere /dev/sda5:yyyy-end 0-newend
con "newend" calculado como final - aaaa. Sin embargo, no estoy seguro de si esto funciona si el espacio libre al principio es más pequeño que el rango a mover. También creo que hay un error tipográfico en tus salidas de pvs, creo que quisiste decir en/dev/sda5:0-xxx
lugar de/dev/sda:0-xxx
.--resizefs
parámetro delvresize
ya se encarga de cambiar el tamaño del sistema de archivos subyacente.Esta publicación anterior cubre este tipo de reducción para que pueda usar el nuevo espacio para otra cosa. Sin embargo, deberá cambiar su tamaño a los datos antes. Esto también debería cubrir ese y otros errores que usted obtiene. Como es más viejo, lea primero:
fuente
uso este método, no estoy seguro de si es el mejor pero funciona para mí
calcular la diferencia que causa el problema
324% 4 = 0 no hay problema
pero
324% 32 = 10.125
ese es el problema, así que no encaja
creo que se llama "obtener un número real"
para enumerar particiones involucradas
luego
Tengo que agregar 4M adicionales para trabajar, creo que está relacionado con el antiguo tamaño de PE
finalmente
fuente
Las respuestas anteriores me ayudaron a resolver este problema, pero necesitaba automatizarlo y escribí pvshrink
Esto invoca pvmove para usted tantas veces como sea necesario para desfragmentar el PV y luego lo redimensiona a su tamaño mínimo posible (que es un poco más que el tamaño utilizado debido a los metadatos).
fuente