Corrigindo duas mensagens de aviso irritantes no LVM

Esta dica, que na verdade são duas, resolve o problema que exibe as seguintes mensagens após algumas operações que com LVM.

/dev/sdd: open failed: No medium found
/dev/sdd: open failed: No medium found
WARNING: PV /dev/sdb1 in VG vgdados is using an old PV header, modify the VG to update.

Ali nós temos dois problemas. Um dispositivo de bloco que o LVM espera ser um PV, mas não é; e o outro é o conjunto de metadados do LVM corrompido ou desatualizado.

A solução para ambos os problemas é muito simples, no entanto como ela não costuma incomodar durante as operações do dia-a-dia geralmente algumas pessoas simplesmente as ignoram.

Atualizando os metadados do VG

Vamos primeiro pelo mais simples. A mensagem de “WARNING” é resolvida com o comando a seguir:

sudo vgck --updatemetadata vgdados

A linha de comando é praticamente auto-explicativa. Ela irá atualizar os os metadados do VG “vgdados” que é o grupo de volumes que apresentou a mensagem.

A sua execução é praticamente instantânea e pode acontecer de ao término a maldita mensagem aparecer novamente pela última vez, mas depois você se verá livre dela para sempre (pode rodar o mesmo comando pela segunda vez que quiser se assegurar disso).

Disco não encontrado no grupo de volumes

O segundo problema é relacionado ao “disco não encontrado”. Talvez eu esteja equivocado ou limitando demais a razão pelo qual esta mensagem aparece mas minha suspeita é que este problema ocorre em máquinas que possuam aqueles leitores de cartão genérico com múltiplas entradas ou quando você costuma usar diversos discos externos, pendrive etc.

Uma forma de descobrir se é exatamente isso que causa o seu problema é consultar as mensagens que o kernel emite sobre este dispositivo. No meu caso, por exemplo, são as mensagens relacionadas ao dispositivo /dev/sdd. Então eu faço assim:

dmesg | grep sdd
[ 3.239135] sd 7:0:0:0: [sdd] Attached SCSI removable disk

Veja que a mensagem informa que este dispositivo é de fato uma mídia removível (pendrive, cartão de memória, disco externo etc).

A minha máquina só tem dois discos fixos (/dev/sda e /dev/sdb) porém eu tenhos diversos discos usb e pendrives. Em algum momento eu pluguei vários deles ao mesmo tempo e o sistema do LVM ficou “morrendo de amores” por algum deles que acabou se tornando inesquecível. 🙂

O tratamento para este “caso de amor não resolvido” é bastante trivial porém deve ser feito com cuidado pois envolve aplicar um filtro sobre os dispositivos que o LVM deve considerar, e se você pesar a mão sobre ele, sendo muito restritivo, a sua máquina poderá não dar mais boot.

Este filtro deve ser informado no arquivo de configuração do LVM (/etc/lvm/lvm.conf). Este é um arquivo de texto simples com permissão de escrita exclusiva do root então vamos usar qualquer editor simples para isso:

sudo vim /etc/lvm/lvm.conf

Agora, procure as linhas que iniciam com “filter”. Você deve encontrar uma seção com diversos exemplos como os que seguem:

# filter = [ "a|.*|" ]
# filter = [ "r|/dev/cdrom|" ]
# filter = [ "a|loop|", "r|.*|" ]
# filter = [ "a|loop|", "r|/dev/hdc|", "a|/dev/ide|", "r|.*|" ]
# filter = [ "a|^/dev/hda8$|", "r|.*|" ]
# filter = [ "a|.*|" ]

Eu nunca alterei este arquivo então todas as linhas de filtro estão comentadas sendo necessários então adicionar a linha com a configuração que eu quero logo abaixo destes exemplos.

Pra simplificar: Estas linhas possuem REGEX (expressões regulares) que definem quais dispositivos serão aceitos (a) ou rejeitados (r) pelo LVM e valendo sempre a primeira regra que combine com o seu dispositivo.

Neste filtro eu serei bem especifico quanto ao dispositivo que está me causando problemas, e vou adicionar uma linha bem direta, para não causar um incidente bloqueando o que não devo:

filter = [ "r|^/dev/sdd|" ]

Ali eu digo que é para rejeitar (r) todos os dispositivos que iniciam com /dev/sdd. Coloque ali o seu dispositivo problemático e feito isso, basta forçar a busca por discos novamente para que a mensagem não apareça mais:

sudo vgscan

Duas últimas dicas para terminar

Caso haja mais de um disco sendo reclamado, faça como nos exemplos que estão no arquivo, e dentro dos colchetes “[]” coloque outra REGEX, separada da primeira por uma “,” (virgula) e apontando para o seu outro dispositivo. Como no exemplo abaixo:

filter = [ "r|^/dev/sdd|" , "r|^/dev/sde|" ]

E por fim. Se você ver uma mensagem como abaixo:

Invalid separator at end of regex.
Invalid filter pattern "r|^/dev/sdd".
Failed to create regex device filter

Edite o arquivo novamente, confira o que faltou ser digitado e após corrigir salve o arquivo e rode o vgscan mais uma vez. Neste caso especifico e omiti a “|” que finaliza a REGEX.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.