
Я прохожу процесс уменьшения размера образа 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, но что такое "yyyy" и "end"?
решение1
Итак, я вижу, что все готово /dev/md125p2
, и мы хотим уменьшить размер этого фотоэлектрического модуля.
Ваш вывод от pvs -v --segments /dev/md125p
show у вас очень большое свободное пространство ( SSize==81947
) после вашего lv_mysql
и перед вашим lv_root
. Этого достаточно для размещения lv_root
ивсеиз LV, которые следуют за ним в физической компоновке.
Итак, первый набор цифр, который я бы предложил, это:
***# pvmove --alloc anywhere /dev/md125p2:480745-488244 /dev/md125p2:384000+7499
то есть переместить весь lv_home
на свободное место, начиная сразу после lv_mysql
.
Затем повторите попытку, pvs -v --segments /dev/md125p
чтобы увидеть измененные числа, и переместите следующий блок на оставшееся свободное место.
Это эффективно дефрагментирует ваш PV.
Теперь, pvmove
возможно,способбольше опций, чем те, которые я использую (может быть, указание 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
понял бы то, что вы ему дали...
решение2
Уменьшение PV требует перемещения экстентов для освобождения пространства до желаемого размера. В вашем случае экстенты ниже 409599.
Сначала протестируйте восстановление из резервной копии, чтобы убедиться, что данные можно будет восстановить при необходимости.
lvremove
тома, которые вам не нужны.
pvmove
позволяет указывать экстенты по имени LV, а место назначения — по смещениям с обозначением +. При указании места назначения это должен быть PV, а не VG.
Переместить один LV в первый экстент в свободном пространстве. Смещение — это размер перемещаемого сегмента.
pvmove --alloc anywhere -n lv_swap /dev/md125p2 /dev/md125p2:384000+1998
Получите новый макет сегмента pvs -v --segments
снова. Повторите pvmove
с другим LV и новым начальным экстентом свободного пространства.
Лично я предпочитаю VG данных отдельно от VG операционной системы. Но это ваше хранилище, раскладывайте его так, как хотите.