fundindo grupos de volumes LVM

7

Situação:

Eu tenho um servidor com 4 unidades de 1 TB no LVM, como mostrado abaixo. O servidor é um nó de hardware openvz com uma dúzia de contêineres openvz. Neste momento, cada contêiner usa apenas um disco. Isso foi projetado no momento para manter a maior parte do controle e separação sobre a carga io do disco.

# pvdisplay -s
  Device "/dev/sdd1" has a capacity of 227.51 GiB
  Device "/dev/sdc1" has a capacity of 427.51 GiB
  Device "/dev/sdb1" has a capacity of 427.51 GiB
  Device "/dev/sda2" has a capacity of 407.02 GiB

ATM cada VP é configurado com seu próprio VG separado:

# vgdisplay -s
  "vg04" 931.51 GiB [704.00 GiB used / 227.51 GiB free]
  "vg03" 931.51 GiB [504.00 GiB used / 427.51 GiB free]
  "vg02" 931.51 GiB [504.00 GiB used / 427.51 GiB free]
  "vg01" 931.02 GiB [524.00 GiB used / 407.02 GiB free]

Existem vários LVs sobre esses VGs:

# lvdisplay | grep Name
  LV Name                /dev/vg04/swap
  VG Name                vg04
  LV Name                /dev/vg04/vz
  VG Name                vg04
  LV Name                /dev/vg03/swap
  VG Name                vg03
  LV Name                /dev/vg03/vz
  VG Name                vg03
  LV Name                /dev/vg02/swap
  VG Name                vg02
  LV Name                /dev/vg02/vz
  VG Name                vg02
  LV Name                /dev/vg01/swap
  VG Name                vg01
  LV Name                /dev/vg01/root
  VG Name                vg01
  LV Name                /dev/vg01/vz
  VG Name                vg01

Problema:

Um contêiner agora cresceu para um tamanho em que preciso dividi-lo em dois discos para lidar com a carga.

Essencialmente eu gostaria de mesclar dois LV's - / dev / vg03 / vz e / dev / vg04 / vz em um LV distribuído em dois discos.

Como faço melhor isso? Será que vgmerge seria capaz de fazer isso? A manpage do vgmerge é bastante breve e não consegui encontrar mais discussões aprofundadas sobre seu uso.

No final, consegui realizar o objetivo movendo as coisas, mas há muitos dados em jogo e esses são servidores de produção, então prefiro tentar evitar isso, se possível.

    
por RCD 10.12.2012 / 10:56

3 respostas

4

Se eu estou lendo sua pergunta corretamente, o que você realmente quer fazer é mesclar dois LVs em VGs separados. Isso exigirá que você mova dados de um LV para outro, não há uma maneira de mesclar LVs diretamente.

Então você está olhando para algum tipo de tempo de inatividade.

Você provavelmente pode limitá-lo, fazendo o seguinte: LVA - Logo será maior Volume lógico LVB - Logo será removido o volume lógico

  1. rsync LVB para localização em LVA (mais demorado)
  2. ** O tempo de inatividade começa ** - Desativar o acesso remoto
  3. Faça o rsync final para garantir que todos os dados estejam atualizados em LVA
  4. Desmontar LVB
  5. Mova os dados rsynced no LVA para o local onde ele viverá como se o LVB estivesse montado (isso deve ser feito em LVA, portanto o mv é apenas uma operação inode e, portanto, muito curto).
  6. ** Downtime Ends ** - reativar o acesso remoto
  7. Ao seu ritmo, afaste o LVB e use o VGB em VGA
  8. Você pode, então, aumentar o LVA (e, provavelmente, também aumentar o sistema de arquivos on-line)
por 10.12.2012 / 17:17
2

No entanto, você poderá mesclar os dois VGs, não acho que você será capaz de converter um LV de linear para striped sem primeiro excluí-lo e recriá-lo.

Em qualquer caso, você pode facilmente fazer testes com dispositivos de loop em arquivos esparsos que quase não ocupam espaço em disco:

truncate -s500G a
truncate -s500G b
sudo losetup /dev/loop0 a
sudo losetup /dev/loop1 b
sudo pvcreate /dev/loop0
sudo pvcreate /dev/loop1
sudo vgcreate A /dev/loop0
sudo vgcreate B /dev/loop1
sudo lvcreate ...
    
por 10.12.2012 / 11:41
0

Não sei como fazer isso sem destruir os dois volumes lógicos /dev/vg03/vz e /dev/vg04/vz e criar um novo LV depois de reorganizar o espaço.

A estratégia a seguir deve (eu não testei) deixar você obter a configuração desejada sem nenhum tempo de inatividade para os outros volumes. Você pode precisar de algum espaço temporário em um disco de trabalho, até o tamanho do maior dos LVs que você está excluindo.

  1. Faça backup de todos os dados dos dois LVs para excluir.
  2. Desativar os LVs ( lvchange -an ).
  3. Crie um volume físico sobre o espaço de rascunho ( pvcreate ).
  4. Adicione o espaço de trabalho a vg03 ( vgextend ). Mova as extensões no final de vg03 para o espaço de rascunho com pvmove /dev/sdXX:MMM-NNN (substitua sdXX pelo especificador de partição apropriado e MMM e NNN pelos números de extensão corretos). Mova as extensões que você deseja converter para uso pelo novo LV distribuído.
  5. Chame pvresize para reduzir o volume físico no grupo de volumes em que você acabou de liberar algum espaço no final.
  6. Use fdisk ou parted para reduzir a partição que contém o volume físico que você acabou de encolher. Enquanto você está nisso, crie uma nova partição para o resto do espaço.
  7. Chame pvmove novamente para mover todos os dados do espaço temporário para o PV original (agora reduzido).
  8. Repita as 4 etapas anteriores para vg04 . Depois disso, você não precisa mais do espaço de rascunho.
  9. Agora existem duas novas partições sem nada nelas. Transforme-os em volumes físicos ( pvcreate ) e crie um grupo de volumes para esses dois PVs ( vgcreate ).
  10. Crie um LV listrado no novo VG.
por 11.12.2012 / 02:17

Tags