Как изменить размер 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.

Другие вопросы по тегам