Os LVs thin podem ser movidos para um pool LVM diferente?

5

Se eu tiver (2) thin pools (vg / pool1) e (vg / pool2) dentro do mesmo grupo de volume, com um LV dentro do primeiro pool, existe um comando LVM para mover esse LV para o segundo pool? O pvmove faria isso?

Como alternativa, se você tiver um pool LVM fino distribuído por dois PVs diferentes, será possível especificar facilmente que todas as extensões de LV X devem ser movidas de PV Y para Z com o comando pvmove?

    
por tgharold 06.07.2015 / 01:25

1 resposta

6

Eu tentei fazer isso usando o pvmove e não funcionou. Há uma referência no Google para uma correção no código-fonte que permitiria que o comando pvmove permitisse isso, mas na minha máquina do CentOS 7 reclamou do meu thin pool, então não sei qual versão, se houver, essa correção é incluído. Também não sei se funciona.

Dito isto, mover um LV de um pool para outro não deve ser muito difícil. De fato, eu mudei o meu entre dois pools que estão em VGs separados (o que não deveria importar em nenhum caso). Aqui está o que eu fiz:

Chame o LV my_logical_volume, os VGs first_vg e second_vg (estes seriam os mesmos no seu caso), e o destino my_logical_volume2. Eu mudei nomes do LV na minha instância; Não tenho certeza se você pode criar dois lvs com o mesmo nome no mesmo VG, mesmo se eles estiverem em thin-pools diferentes. Você pode experimentá-lo. Em qualquer caso, após a mudança, você sempre pode fazer um simples, fácil de usar.

Aqui está a ordem das coisas:

# lvs
LV                VG        Attr       LSize   Pool      Origin Data%  Move Log Cpy%Sync Convert
my_logical_volume first_vg  Vwi-a-tz--  10.74g thinpool0         31.39  
thinpool1         second_vg twi-a-tz--   1.20t                    0.29        
thinpool0         first_vg  twi-a-tz-- 500.89g                   86.87                                 

Observe o LSize no volume lógico, acima. Este comando:

# lvcreate -V 10.74g -n my_logical_volume2 -T second_vg/thinpool1

... cria o número adequado de LEs para corresponder. Apenas use exatamente o mesmo tamanho como é exibido por lvs. Use o lvdisplay para verificar se você tem criou um volume lógico de tamanho idêntico; veja a linha Current LE (se sua contagem LE resultante for menor, exclua e recrie o lv, mas adicione 0,01 ao seu tamanho [o número após o -V]):

# lvdisplay first_vg/my_logical_volume
  --- Logical volume ---
  LV Path                /dev/first_vg/my_logical_volume
  LV Name                my_logical_volume
  VG Name                first_vg
  LV Pool name           thinpool0
  LV Size                10.74 GiB
  Mapped size            31.39%
  Current LE             2750

# lvdisplay second_vg/my_logical_volume2
  --- Logical volume ---
  LV Path                /dev/second_vg/my_logical_volume2
  LV Name                my_logical_volume2
  VG Name                second_vg
  LV Pool name           thinpool1
  LV Size                10.74 GiB
  Mapped size            0.00%
  Current LE             2750

Agora copie do primeiro lv para o recém-criado:

# time dd if=/dev/first_vg/my_logical_volume of=/dev/second_vg/my_logical_volume2 bs=4194304 conv=sparse

conv=sparse é crítico com o dd, caso contrário, todo o espaço será provisionado em seu pool fino de destino e não será mais fino: -).

Verifique se o seu novo volume lógico é do seu agrado. Uma vez que alles klarr, Herr Kommissar, você pode renomear seu novo LV se quiser, remover o original (você fez backup antes de trabalhar nele, certo?), Etc.

    
por 28.07.2015 / 20:31

Tags