[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
Итак, у меня есть VG с 65 ГБ свободного места. Но когда я хочу сжать эту группу томов примерно на 50 Гбайт:
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, чтобы удалить ненужную часть?
ps: я уже узнал, что мне нужно только изменить размер PV, чтобы изменить размер VG, или есть какие-то лучшие команды для изменения размера VG (например: что я могу сделать, если бы я использовал несколько VG на PV? ... )?
partition
lvm
scientific-linux
Гаско Питер
источник
источник
sudo pvmove --alloc anywhere /dev/sdX2:60000-76182 /dev/sdX2:3000-19182
Это шаги, необходимые для изменения размера раздела LVM или LVM2:
Последняя команда
pvresize
, может привести к ошибкеВы должны переставить нераспределенное пространство в конце LVM. Это означает, что после раздела root и swap_1. Вы можете увидеть текущее расположение пространства с помощью этой команды
pvs
покажет вывод, как этоТеперь используйте
pvmove
для удаления внешней фрагментации:Теперь давайте посмотрим, удалось ли перенести том подкачки.
должен показать новый порядок объемов:
После этого используйте GParted и измените размер LVM до максимально используемой площади. Остальное будет в нераспределенном пространстве.
источник
pvmove --alloc anywhere /dev/sda5:yyyy-end 0-newend
с "newend", рассчитанным как end - yyyy. Однако я не уверен, работает ли это, если свободное пространство в начале меньше, чем диапазон, который нужно переместить. Также я думаю, что в ваших выводах pvs есть опечатка, я думаю, вы имели в виду/dev/sda5:0-xxx
вместо/dev/sda:0-xxx
.--resizefs
Параметрlvresize
уже заботится об изменении размера базовой файловой системы.В этом старом посте рассказывается об уменьшении, поэтому вы можете использовать новое пространство для чего-то другого. Вам нужно будет изменить его размер до данных, однако, прежде. Это должно охватывать и другие ошибки, которые вы получаете. Поскольку это старше, прочитайте сначала:
источник
я использую этот метод, не уверен, что это лучший, но работает для меня
рассчитать разницу, которая вызывает проблему
324% 4 = 0 без проблем
но
324% 32 = 10,125
это проблема, поэтому она не подходит
я думаю, что это называется "получить реальное число"
перечислить задействованные разделы
тогда
я должен добавить 4M к работе, я думаю, что это связано со старым размером PE
Ну наконец то
источник
Предыдущие ответы помогли мне решить эту проблему, но мне нужно было ее автоматизировать и поэтому написал pvshrink
Это вызывает pvmove столько раз, сколько необходимо для дефрагментации PV, а затем изменяет его размер до минимально возможного размера (который немного больше используемого размера из-за метаданных).
источник