Уменьшение 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 и новым начальным размером свободного пространства.
Лично я предпочитаю виртуальные группы данных отдельно от виртуальных групп операционной системы. Но это ваше хранилище, расставляйте его как хотите.