Уменьшение 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 и новым начальным размером свободного пространства.

Лично я предпочитаю виртуальные группы данных отдельно от виртуальных групп операционной системы. Но это ваше хранилище, расставляйте его как хотите.

Другие вопросы по тегам