Как изменить размер Volumegroup PE
Я пытаюсь увеличить размер PE одной из моих групп томов.
Я по ошибке установил его как 4M, чтобы начать, когда он должен был быть 32M .
Когда я пытаюсь изменить размер, я получаю
vgchange -s 32M the_vol
New extent size is not a perfect fit
vgdisplay говорит:
vgdisplay
--- Volume group ---
VG Name the_vol
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 173
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 43
Open LV 41
Max PV 0
Cur PV 1
Act PV 1
VG Size 864.25 GiB
PE Size 4.00 MiB
Total PE 221247
Alloc PE / Size 103680 / 405.00 GiB
Free PE / Size 117567 / 459.25 GiB
VG UUID uh25Y8-TOWR-pqBj-NyPV-ca6t-ec1k-jlqm4g
Могу ли я что-нибудь сделать, чтобы получить это изменение до 32 без воссоздания / удаления данных?
Или приблизиться к 32.
Спасибо
3 ответа
Ты можешь использовать pvmove
перемещаться по выделенным физическим экстентам на физическом томе (ах). Любые логические тома должны начинаться и заканчиваться на границах экстентов (увеличиваться с lvresize
). Размер (ы) основного физического тома, вероятно, также должен быть кратным новому размеру экстента (исправьте это с помощью pvresize
).
Как упоминалось в ответе суперпользователя на связанный вопрос, вы можете использовать что-то вроде этого:
pvmove --alloc anywhere /dev/sdc1:103680-221247 /dev/sdc1:0-103679
переместить экстенты 103680-221247
в 0-103679
на физическом объеме /dev/sdc1
, Возможно, вам придется перемещать сегменты по шагам. использование pvdisplay --maps /dev/sdc1
показать, какие экстенты выделяются на физическом томе /dev/sdc1
,
Обратите внимание, что размер экстента не должен влиять на производительность ввода-вывода (на LVM2), это должно влиять только на производительность самих инструментов LVM и максимальные размеры компонентов LVM.
Это возможно, но сложно. Если у вас есть возможность, воссоздание VG является гораздо лучшим вариантом.
Тем не менее, это не вариант для меня, поэтому вот как я изменил свой размер PE с 4 МБ до 32 МБ.
- Во-первых, уменьшите ваши PV до размера, который делится на ваш целевой размер PE, то есть:
pvresize /dev/sdb --setphysicalvolumesize 3778436m
- Затем измените размер всех ваших LV до размера, кратного вашему предполагаемому размеру PE, используя
lvresize
т.е.lvresize /dev/libvirtstorage/debian-8.7.1-amd64-netinst.iso --size 256
- Далее следует убедиться, что отдельные сегменты, составляющие каждое изображение, выровнены с вашим новым PE. Это ненадежно, так как вы должны "дефрагментировать" свой VG.
Для этого я использовал инструмент " lvm2defrag" (вам не нужно запускать его на самой машине, вы можете запустить его на любой машине с установленным PHP, он просто сгенерирует необходимые команды) - После этого, если ваш общий размер тома, размер фрагмента LV и свободное пространство делятся на ваш целевой размер PE, вы сможете изменить размер PE:
vgchange -s 32m the_vol
Весь этот процесс может быть выполнен без простоев, весь VG продолжает работать в течение всего этого.
Еще один недостаток, который стоит отметить: остерегайтесь разницы между 32m
а также 32M
, Команды LVM интерпретируют нижний регистр m
как MiB и заглавные буквы M как MB.
Вы можете изменить размер физического экстента группы томов только в том случае, если для завершения изменения не требуется перемещать существующие физические экстенты. В противном случае вы получите ошибку, которую вы опубликовали выше.
Единственный другой вариант - воссоздать группу томов с правильным размером.
Цитировать из справочной страницы:
После установки этого значения его трудно изменить без воссоздания группы томов, что потребовало бы резервного копирования и восстановления данных на любых логических томах. Однако если для применения нового значения не требуется перемещения экстентов, его можно изменить с помощью vgchange -s.