
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/md125p2
e queremos reduzir o tamanho desse PV.
Sua saída pvs -v --segments /dev/md125p
mostra que você tem um espaço livre muito grande ( SSize==81947
) depois lv_mysql
e antes do seu lv_root
. Isto é grande o suficiente para abrigar lv_root
etodosdos 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_home
para o espaço livre começando logo após lv_mysql
.
Em seguida, execute novamente pvs -v --segments /dev/md125p
para ver os números revisados e mova o próximo bloco para qualquer espaço livre restante.
Isso irá desfragmentar efetivamente seu PV.
Agora, pvmove
pode 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/md125p2
uma abreviação para /dev/md125p2:480745-488244
- mas observe também que isso ficará mais complexo se lh_home
for 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 pvmove
teria 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.
lvremove
volumes que você não precisa.
pvmove
permite 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 --segments
novamente. Repita o procedimento pvmove
com 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.