Não é possível remover o thinpool do LVM - não é possível desativar tdata, tmeta

1

De alguma forma eu baguncei alguns volumes lvm provisionados finamente no ubuntu 14.04 e agora eu quero começar de novo excluindo o thinpool com todos os seus volumes e dados dentro dele. Infelizmente isso falha e não consigo encontrar uma solução.

Os volumes lógicos são assim:

user@server1:~$ sudo lvs
  dm_report_object: report function failed for field data_percent
  LV             VG   Attr      LSize   Pool       Origin Data%  Move Log Copy%  Convert
  project2       vg0  Vwi-i-tz-  22.00g mythinpool       
  project1       vg0  Vwi---tz-  20.00g mythinpool                                      
  project3       vg0  Vwi---tz-  21.00g mythinpool                                      
  home           vg0  -wi-ao--- 140.00g                                                 
  mythinpool     vg0  twi-i-tz-  78.82g                    52.15                        
  root           vg0  -wi-ao---  10.00g                                                 
  swap           vg0  -wi-ao---   4.00g                                                 
  tmp            vg0  -wi-ao---   5.00g           

Agora eu quero remover o thinpool com os três lvms dentro:

sudo lvremove /dev/vg0/mythinpool

Removing pool mythinpool will also remove 3 thin volume(s). OK? [y/n]: y
Do you really want to remove and DISCARD logical volume project1? [y/n]: y
  device-mapper: message ioctl on  failed: Invalid argument
  Unable to deactivate open vg0-mythinpool_tdata (252:5)
  Unable to deactivate open vg0-mythinpool_tmeta (252:4)
  Failed to deactivate vg0-mythinpool-tpool
  Failed to resume mythinpool.
  Failed to update thin pool mythinpool.

Eu não me importo com os dados dentro do mythinpool, mas o resto do grupo de volume vg0 deve permanecer intacto. Como eu poderia resolver esse problema? Obrigado por qualquer ajuda sobre isso.

EDIT 1: Depois de seguir a resposta do shodanshok, consegui remover uma imagem do LVM inicializando no CentOS7, mas infelizmente os outros dois volumes, incluindo o thin pool, retornaram outra mensagem de erro - transaction_id mismatch:

Também não há espaço disponível para lvconvert --repair

    
por merlin 15.11.2015 / 18:28

2 respostas

2

Eu finalmente resolvi muito com alguns passos simples, como descrito aqui: remover corruptos LVM fina pool

vgcfgbackup -f  vg.bak   vgname

//edit vg.bak and remove all thinp related volumes

vgcfgrestore -f vg.bak  vgname

Após seguir o conselho do @shodanshok para inicializar no Live CentOS7 colado ao servidor em um pen drive, consegui emitir os comandos descritos e, eventualmente, livrar-me do thin pool corrompido sem danificar o sistema de arquivos raiz que reside dentro do mesmo grupo de volumes.

Obrigado a todos pelo seu conselho útil que levou à solução.

    
por 17.11.2015 / 11:00
1

Algo está mantendo seus volumes finos abertos. Por favor faça o seguinte:

  • verifique se os volumes estão montados. Em caso afirmativo, desmonte-os
  • se você não puder desmontá-los, talvez alguns arquivos ainda sejam abertos por um processo em execução. Você pode usar lsof | grep mountpoint para encontrar os processos ofensivos. Mate-os e tente desmontar os sistemas de arquivos
  • se isso falhar, reinicialize a máquina e tente desmontar os sistemas de arquivos relacionados aos volumes thin
  • se você ainda não conseguir desmontar os volumes, tente reinicializar no modo de usuário único, desmonte-os e exclua os volumes
  • se tudo mais falhar, use uma imagem de CD / USB ativa para inicializar seu PC e remover os volumes ofensivos.

EDITAR:

Como você não pode usar uma imagem ao vivo e seu sistema de resgate não tem suporte a volumes pequenos, podemos tentar uma rota alternativa. Basicamente, vamos definir o "sinalizador de ativação de ignorar" em seus volumes / pool thin e reinicializar a máquina. Siga estas etapas:

  • definir salto de ativação: lvchange -ky vg0/project1 ; lvchange -ky vg0/project2 ; lvchange -ky vg0/project3 ; lvchange -ky vg0/mythinpool
  • reinicialize a máquina e os volumes devem estar inativos
  • agora você pode removê-los com lvremove

No entanto, se algum desses volumes for necessário para a inicialização da máquina, você terminará com uma máquina não inicializável. Certifique-se de ter um "plano B" para restaurar a máquina por meio de um console de recuperação ou algo semelhante.

EDIT 2

Se o seu sistema não suportar o sinalizador -k , você poderá tentar usar lvchange -aay volumename e reinicializar. Isso definirá o volume para a ativação automática, que funciona apenas para volumes especificados em /etc/lvm.conf

    
por 15.11.2015 / 18:43