É possível desfazer o LVM pvmove?

3

Estou prestes a converter minha configuração do LVM 2x3TB para usar o software RAID1 com 2 unidades adicionais. Só estou querendo saber se o seguinte será seguro e se há uma maneira de recuperar em várias etapas.

Então eu tenho / dev / sdb1 e / dev / sdc1 compondo meu grupo de volumes vg_media.

Estou adicionando discos / dev / sdd e / dev / sde, mas primeiro configurando um RAID degradado neles.

Então, aqui está o meu plano:

# use parted to create GPT partitions on /dev/sdd and /dev/sde

mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdd1 missing
mdadm --create --verbose /dev/md1 --level=1 --raid-devices=2 /dev/sde1 missing

mdadm --detail --scan >> /etc/mdadm/mdadm.conf

pvcreate /dev/md0
pvcreate /dev/md1

vgextend vg_media /dev/md0
vgextend vg_media /dev/md1

pvmove /dev/sdb1 /dev/md0
pvmove /dev/sdc1 /dev/md1

vgreduce vg_media /dev/sdb1
vgreduce vg_media /dev/sdc1

Entendo que o pvmove realmente copia tudo e atualiza alguns metadados para que o novo local físico seja usado.

Eu só estou querendo saber se eu poderia desfazer o pvmove neste ponto e voltar para os dados em / dev / sdb1 e / dev / sdc1, se algo der errado com meu RAID degradado.

Quando eu verifiquei que as coisas parecem estar funcionando neste momento, eu só vou fazer isso para terminar o RAID

pvremove /dev/sdb1
pvremove /dev/sdc1

sfdisk -d /dev/sdd | sfdisk /dev/sdb
sfdisk -d /dev/sde | sfdisk /dev/sdc

mdadm --manage /dev/md0 --add /dev/sdb1
mdadm --manage /dev/md1 --add /dev/sdc1
    
por Matt 17.07.2016 / 19:09

1 resposta

2

mdadm --detail --scan >> /etc/mdadm/mdadm.conf

É um bom ponto de partida para um mdadm.conf, mas tende a ser muito detalhado. UUID sozinho é suficiente.

MAILADDR your@address
ARRAY /dev/md0 UUID=d8b8b4e5:e47b2e45:2093cd36:f654020d

It is my understanding that pvmove really just copies everything then updates some metadata so the new physical location is used.

É como um pequeno espelho RAID-1. Para cada segmento a ser movido, ele inicia a sincronização no novo local e, uma vez totalmente sincronizado, remove o local antigo. Dessa forma, as gravações que acontecem nos segmentos atualmente no meio da realocação são tratadas corretamente também.

I'm just wondering if I could undo the pvmove at this point and go back to the data on /dev/sdb1 and /dev/sdc1, if something were to go wrong with my degraded RAID.

Isso depende do que você entende por "dar errado com" ... o espelho pvmove é estritamente temporário, você não tem redundância para voltar. Se o novo PV falhar completamente, você sofrerá alguma perda de dados.

Se você executar o pvmove no modo somente leitura, poderá ser apenas vgcfgrestore um antigo vgcfgbackup (crie um backup antes de começar a mover as coisas), mas isso também funciona se o próprio pvmove nunca fez nada sobreposto com qualquer outra coisa, sobrescrevendo dados antigos no processo.

A execução de um autoteste inteligente em todos os seus discos (e a visualização de outros dados inteligentes relevantes) antes de iniciar esse movimento deve informar antecipadamente se você deve esperar um grande problema ou não.

Métodos alternativos: (não necessariamente melhor)

Se você pode fazê-lo offline / de um sistema de recuperação, você poderia apenas dd (resgatar) ambos os discos para o RAID. No entanto, neste caso, você tem que lidar com problemas de tamanho (o dispositivo RAID não deve ser menor que o tamanho do PV) e problemas de UUID duplicados.

Você poderia colocar a camada RAID no PV original sem copiar nada e depois adicionar os novos discos ao RAID. Isso pode ser feito com 0.90 ou 1.0 metadata que mora no final da partição (talvez tenha que reduzir o PV um pouco antes) ou editando metadados LV para liberar as primeiras extensões físicas para criar espaço para metadados mdadm no início da partição. No entanto, isso exige que você entenda totalmente os layouts de metadados do LVM e do MD.

    
por 17.07.2016 / 20:06

Tags