Назад | Перейти на главную страницу

Как изменить размер PE группы томов

Я пытаюсь увеличить размер PE одной из моих групп томов.

Я по ошибке установил 4М для запуска, хотя должно было быть 32М.

Когда я пытаюсь изменить размер, я получаю

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.

Спасибо

Ты можешь использовать 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.

Вы можете изменить размер физического экстента группы томов только в том случае, если для завершения изменения не нужно перемещать существующие физические экстенты. В противном случае вы получите сообщение об ошибке, указанное выше.

Единственный другой вариант - воссоздать группу томов правильного размера.

Цитата из справочной страницы:

После того, как это значение установлено, его трудно изменить без повторного создания группы томов, что потребовало бы резервного копирования и восстановления данных на любых логических томах. Однако, если для применения нового значения не нужно перемещать экстенты, его можно изменить с помощью vgchange -s.

Можно, но сложно. Если у вас есть возможность, воссоздание 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.