Уменьшение lvmgroup — невозможно изменить размер до экстентов xxxx, поскольку они выделяются позже.
Я проходил процесс уменьшения размера образа Centos 6.10 путем уменьшения файла lvmgroup. Я нахожусь в тот момент, когда смог запустить эту команду:
pvresize -tv --setphysicalvolumesize 1600G /dev/md125p2
И это дает мне следующее сообщение об ошибке:
/dev/md125p2: cannot resize to 409599 extents as later ones are allocated.
Я пытаюсь понять, как создать команду pvmove, чтобы избавиться от ошибки, но не совсем понимаю эту концепцию.
Вот вывод этой командыpvs -v --segments /dev/md125p
PV VG Fmt Attr PSize PFree Start SSize LV Start Type PE Ranges
/dev/md125p2 vg_centos6svr lvm2 a--u 1.86t 320.11g 0 384000 lv_mysql 0 linear /dev/md125p2:0-383999
/dev/md125p2 vg_centos6svr lvm2 a--u 1.86t 320.11g 384000 81947 0 free
/dev/md125p2 vg_centos6svr lvm2 a--u 1.86t 320.11g 465947 12800 lv_root 0 linear /dev/md125p2:465947-478746
/dev/md125p2 vg_centos6svr lvm2 a--u 1.86t 320.11g 478747 1998 lv_swap 0 linear /dev/md125p2:478747-480744
/dev/md125p2 vg_centos6svr lvm2 a--u 1.86t 320.11g 480745 7500 lv_home 0 linear /dev/md125p2:480745-488244
Я знаю, что команда перемещения должна выглядеть примерно так:
pvmove --alloc anywhere /dev/md125p2 vg_centos6svr:yyyy-end
Мне просто не понятно, как вычислить часть yyyy-end. Я полагаю, это означает перемещение 81947 (блоков?), которые начинаются с 384000, но что такое «гггг» и «конец»?
2 ответа
Итак, я вижу, что все включено./dev/md125p2
и мы хотим уменьшить размер этого PV.
Ваш вывод показывает, что у вас очень большое свободное пространство (SSize==81947
) после вашего и перед вашим. Это достаточно большое место, чтобы разместитьlv_root
и все логические тома, которые идут после него в физической структуре.
Итак, первый набор чисел, который я бы предложил:
***# pvmove --alloc anywhere /dev/md125p2:480745-488244 /dev/md125p2:384000+7499
то есть переместить всюlv_home
на свободное пространство, начиная сразу послеlv_mysql
.
Затем повторно запуститеpvs -v --segments /dev/md125p
чтобы увидеть измененные числа, и переместите следующий блок на оставшееся свободное пространство.
Это эффективно дефрагментирует ваш PV.
Теперь у меня может быть гораздо больше опций, чем то, что я использую (может быть, указывая PV вместо экстентов?), но то, что меня устраивает, это просто явно указывать блоки, поэтому все мои источники и цели имеют форму/dev/<dev>:<Start>-<End>
или/dev/<dev>:<Start>+<SSize-1>
.
Я подозреваю, что ваша проблема в основном заключалась в отсутствии экстентов в вашей «исходной» спецификации.
Я видел несколько примеров их использования-end
- Я не знаю, должно ли это сработать, но возникает вопрос: «Конец чему ? ». Поэтому я избегаю этого и использую явные номера блоков. Просто нужно помнить, что+
Синтаксис является плюсом и должен быть на единицу меньше, чем SSize.
Дополнительный
ОК, со стороны источника кажется, что вы можете сделать-name lv_home /dev/md125p2
как сокращение для/dev/md125p2:480745-488244
- но учтите также, что это станет более сложным, еслиlh_home
был фрагментирован на несколько экстентов (будет ли это означать «все фрагменты?») — думаю, я все же предпочитаю подход чисел. Обратите внимание, что ваш пример в вопросе не включал имя LV, поэтому я не уверен, что именно.pvmove
понял бы из того, что ты ему дал...
Уменьшение PV требует перемещения экстентов на свободное место до желаемого размера. В вашем случае экстенты ниже 409599.
Сначала проверьте восстановление из резервной копии, чтобы убедиться, что данные можно восстановить при необходимости.
lvremove
тома, которые вам не нужны.
позволяет указывать экстенты по имени LV и место назначения по смещениям с обозначением +. При указании пункта назначения это должен быть PV, а не VG.
Переместите один LV в первый экстент в свободном пространстве. Смещение — это размер перемещаемого сегмента.
pvmove --alloc anywhere -n lv_swap /dev/md125p2 /dev/md125p2:384000+1998
Получите новый макет сегмента с помощьюpvs -v --segments
снова. Повторитеpvmove
с другим LV и новым начальным размером свободного пространства.
Лично я предпочитаю виртуальные группы данных отдельно от виртуальных групп операционной системы. Но это ваше хранилище, расставляйте его как хотите.