Уменьшение lvmgroup — невозможно изменить размер до xxxx экстентов, так как выделяются более поздние

Уменьшение 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, но что такое "yyyy" и "end"?

решение1

Итак, я вижу, что все готово /dev/md125p2, и мы хотим уменьшить размер этого фотоэлектрического модуля.

Ваш вывод от pvs -v --segments /dev/md125pshow у вас очень большое свободное пространство ( 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 операционной системы. Но это ваше хранилище, раскладывайте его так, как хотите.

Связанный контент