Reduzindo um lvmgroup - não é possível redimensionar para extensões xxxx, pois as posteriores são alocadas

Reduzindo um lvmgroup - não é possível redimensionar para extensões xxxx, pois as posteriores são alocadas

Estou passando pelo processo de redução do tamanho de uma imagem do Centos 6.10 reduzindo um lvmgroup. Estou no ponto em que consegui executar este comando:

pvresize -tv --setphysicalvolumesize  1600G /dev/md125p2

E está me dando a seguinte mensagem de erro:

 /dev/md125p2: cannot resize to 409599 extents as later ones are allocated.

Estou tentando entender como construir o comando pvmove para me livrar do erro, mas não entendi bem o conceito.

Aqui está a saída deste comando 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

Eu sei que o comando move deve ser parecido com isto:

pvmove --alloc anywhere /dev/md125p2 vg_centos6svr:yyyy-end

Só não estou claro como calcular a parte final aaaa. Acho que significa mover aqueles 81947 (blocos?) Que começam em 384000, mas o que é "aaaa" e "fim"?

Responder1

Então, o que vejo é que está tudo ligado /dev/md125p2e queremos reduzir o tamanho desse PV.

Sua saída pvs -v --segments /dev/md125pmostra que você tem um espaço livre muito grande ( SSize==81947) depois lv_mysqle antes do seu lv_root. Isto é grande o suficiente para abrigar lv_rootetodosdos LVs que vêm depois dele no layout físico.

Então, o primeiro conjunto de números que sugiro é:

***# pvmove --alloc anywhere /dev/md125p2:480745-488244 /dev/md125p2:384000+7499

isto é, mova tudo lv_homepara o espaço livre começando logo após lv_mysql.

Em seguida, execute novamente pvs -v --segments /dev/md125ppara ver os números revisados ​​e mova o próximo bloco para qualquer espaço livre restante.

Isso irá desfragmentar efetivamente seu PV.

Agora, pvmovepode tercaminhomais opções do que estou usando (talvez especificando o PV em vez das extensões?), mas o que me deixou confortável foi apenas ser explícito com os blocos, então todas as minhas fontes e destinos estão na forma de /dev/<dev>:<Start>-<End>ou /dev/<dev>:<Start>+<SSize-1>.

Suspeito que seu problema estava faltando principalmente nas extensões de sua especificação de "fonte".

Eu vi alguns exemplos de uso deles -end- não sei se isso é algo que ésupostofuncionar, mas seria uma petição de princípio a questão "fim doo que?". Portanto, evito isso e uso números de bloco explícitos. Você só precisa estar ciente de que a +sintaxe é ummais, e precisa ser um a menos que o SSize.

Extra

OK, do lado da fonte, parece que você pode fazer -name lv_home /dev/md125p2uma abreviação para /dev/md125p2:480745-488244- mas observe também que isso ficará mais complexo se lh_homefor fragmentado em múltiplas extensões (significaria "todos os fragmentos?") - acho que ainda prefiro os números se aproximam. Observe que seu exemplo na perguntanãoinclua o nome LV, então não tenho certeza do que pvmoveteria entendido pelo que você deu ...

Responder2

A redução de um PV requer mover extensões para liberar espaço antes do tamanho desejado. No seu caso, extensões abaixo de 409599.

Primeiro, teste uma restauração de backup para ter certeza de que os dados poderão ser recuperados, se necessário.

lvremovevolumes que você não precisa.

pvmovepermite especificar extensões por nome LV e o destino por deslocamentos com a notação +. Ao fornecer o destino, deve ser um PV, não um VG.

Mova um LV para a primeira extensão no espaço livre. O deslocamento é o tamanho do segmento que está sendo movido.

pvmove --alloc anywhere  -n lv_swap /dev/md125p2 /dev/md125p2:384000+1998

Obtenha o novo layout do segmento pvs -v --segmentsnovamente. Repita o procedimento pvmovecom um LV diferente e a nova extensão inicial do espaço livre.

Pessoalmente, prefiro VGs de dados separados dos VGs do sistema operacional. Mas este é o seu armazenamento, organize-o como desejar.

informação relacionada