Como parar um grupo de volumes LVM do Linux?

4

No momento, estou lidando com uma falha de vários discos em um grupo de volumes LVM do Linux cujo backup é feito por um dispositivo RAID-5 md . Um disco foi retirado completamente e outro está mostrando um número limitado de setores corruptos, devido ao que parece ter sido uma fonte de alimentação que se comporta mal.

O problema é que, quando ocorre um erro de E / S, md retira o array, pois ele não tem dispositivos suficientes para estar operacional. Onde md é o único envolvido, eu posso mdadm --stop a matriz e depois recriá-la para ativar todos os dispositivos novamente.

Infelizmente, o array é um PV em um grupo de volume LVM e não consigo fazer o kernel liberá-lo. vgchange -an parece não fazer nada, barra vomitar alguns erros de E / S.

Eu obviamente estou perdendo alguma coisa, mas como em nome de -insert-favorite-deity - eu faço o LVM liberar o PV subjacente sem reiniciar o servidor?

    
por thkala 17.09.2012 / 16:39

2 respostas

5

Eu diria que você está muito mal. Se você está simplesmente desesperado para recuperar alguns dos seus dados e não se importa muito com o LVM (cujos metadados provavelmente já estão corrompidos, a julgar pelos erros de IO de vgchange -an ), eu recomendaria ir a baixo nível. Lembre-se, o LVM é apenas um wrapper em torno do mapeador de dispositivos do kernel, portanto, você pode usar dmsetup para manipular seus volumes lógicos. dmsetup table lhe dará uma lista de discos lógicos ativos no momento, portanto é uma boa idéia fazer backup de sua saída caso você não consiga acessar seu LVM mais tarde. Em seguida, você pode tentar parar os dispositivos que deseja interromper com dmsetup remove ou mesmo dmsetup remove_all . Mas certifique-se de que eles são desmontados primeiro.

E, claro, copie o máximo de dados possível para um local seguro.

    
por 17.09.2012 / 18:21
2

Quando vgchange -an parece não fazer nada (em um sistema Ubuntu), então considere culpar as regras do udev depois de ler este relatório de bug (achei Googling para " dmsetup remove lvm vgchange "): link

A solução alternativa é a seguinte (graças a Martin):

sudo umount /mnt # asume the drive in question is mounted under /mnt  
sudo service udev stop
sudo lvchange -a n <LV-name>
sudo cryptsetup luksClose <LUKS-devicename>  
sudo service udev start
    
por 14.08.2013 / 17:27

Tags