Não é possível remover o volume lógico aberto

20

Quando tento remover um volume lógico, recebo a mensagem

#lvremove /dev/my-volumes/volume-1 
Can't remove open logical volume "volume-1"

#lvchange -an -v /dev/my-volumes/volume-1 
Using logical volume(s) on command line
/dev/dm-1: read failed after 0 of 4096 at 0: Input/output error
Deactivating logical volume "volume-1"
Found volume group "my-volumes"
LV my-volumes/volume-1 in use: not deactivating

#lvremove -vf /dev/my-volumes/volume-1 
Using logical volume(s) on command line
/dev/dm-1: read failed after 0 of 4096 at 0: Input/output error
Can't remove open logical volume "volume-1"

#lvs
/dev/dm-1: read failed after 0 of 4096 at 0: Input/output error
LV              VG           Attr   LSize   Origin Snap%  Move Log Copy%  Convert
volume-1        my-volumes   -wi-ao  50.00g  

Como posso forçar a remoção deste volume?

Obrigado, Everett

Everett Toews
fonte

Respostas:

13

O que contém o volume lógico? É um sistema de arquivos (eu acidentalmente escrevi uma partição)? Poderia ser montado? Nesse caso:

umount /dev/my-volumes/volume-1

Possui algum instantâneo ativo?

Editar: tente lvchange -an -v /dev/my-volumes/volume-1e lvremove -vf /dev/my-volumes/volume-1.

Edit 2: por favor poste 'lvs'.

Editar 3: tente isso com outro volume problemático. Não é a opção mais limpa, mas, de acordo com este site , pode funcionar e é menos problemático do que reiniciar de qualquer maneira.

dmsetup remove my--volumes-volume--number
lvremove /dev/my-volumes/volume-number
Eduardo Ivanec
fonte
Não contém nada. Não é uma partição. Não está montado (por mais tempo). Nenhum instantâneo ativo.
Everett Toews
Bem, para que você usou? Pode nos dar uma pista do que pode estar errado.
Eduardo Ivanec
Adicionadas as informações solicitadas à pergunta. Ele estava sendo usado como um volume para o OpenStack Compute (também conhecido como Nova). Na verdade, eu consegui removê-lo, usando a energia nuclear, reinicializando a máquina e fazendo um lvremove. Muito mais drástico do que eu queria ser. Ainda tenho alguns outros volumes que gostaria de me livrar sem precisar reiniciar para que qualquer ajuda que você possa fornecer seja apreciada.
Everett Toews
Adicionei algo para você tentar com outro volume problemático.
Eduardo Ivanec 5/05
Tentei. Sem sorte Eu também tentei de tudo em wiki.davidjb.com/… (daí o "/ dev / dm-1: leitura falhou ..." em algumas das minhas saídas), mas isso também não funcionou.
Everett Toews
9

Se você não conseguir desmontar ou remover um volume lógico, verifique se não há processos mantendo o LV

Localize os números principais / secundários do volume lógico que você está tentando remover, por exemplo: vol0

# dmsetup info -c | grep vol0

Observe a 5ª coluna, que indica se um volume está "aberto", e a 2ª e a 3ª colunas, que são os IDs principais e secundários, respectivamente.

Encontre qualquer processo anexado a este volume pesquisando os IDs principais e secundários descobertos acima:

# lsof | grep "major,minor"

Encerre ou interrompa qualquer processo que ainda esteja acessando o volume para continuar a desmontar e remover.

então tente lvremove

pruthvi
fonte
No meu caso, não ajuda. Portanto, o fusor não mostra nenhum uso. dmsetup diz que o dispositivo está ocupado. o dispositivo está desmontado (pode ser montado a qualquer momento). apenas uma reinicialização de hardware ajuda: /
John
5

Você provavelmente tem o iet ou o tgt em execução (qual depende de qual iscsi_helperé o seu valor no /etc/nova/nova.conf, o padrão é o iet), e o serviço possui um arquivo aberto. Você pode verificar qual deles fazendo algo assim (no meu caso, é tgt)

# fuser /dev/nova-volumes/volume-00000001
/dev/dm-5:           19155

# lsof | grep /dev/dm-5
tgtd      19155            root   12u      BLK              252,5         0t0    2531554 /dev/dm-5

Se for iet, pare o serviço fazendo:

service iscsitarget stop

Se for tgt, pare o serviço executando:

service tgt stop

Você deve poder excluir seus volumes.

Lorin Hochstein
fonte
Isso resolveu o problema para mim com o OpenStack #
30111
5

Entrei em uma situação semelhante, mas a remoção do LV foi bloqueada, porque eu estava usando mount -o bind.

O artigo abaixo ajudou muito, usando lsof com maior / menor número de LV mostrou processo mantendo LV aberto, no meu caso smbd.

Do que simplesmente cat / proc / mounts | grep LV_name me levou à conclusão, por que lvremove ou dmsetup removem se recusam a se livrar do LV desmontado.

http://kb.eclipseinc.com/kb/why-cant-i-remove-a-linux-logical-volume/

janfai
fonte
2

Encerre os contêineres LXC que usam os sistemas de arquivos por meio de sua configuração: lxc.mount.entry

Tonny
fonte
1

Se você não conseguir remover lvm, siga estas etapas:

  1. desmonte a partição:

    # umount / dev / sda8

    (por exemplo, montei a partição /dev/sda8)

  2. tente remover lvmassim:

    # lvremove / dev / vgname / lvname

Se você receber um erro como " não é possível remover o volume lógico aberto no linux ", tente desativar o LVM através dos comandos abaixo e remova-o:

 # lvchange -an  /dev/vgname/lvname

 # lvremove /dev/vgname/lvname

Deixe-nos saber se você enfrentar qualquer problema.

Pankaj Patel
fonte
0

Eu tive esse problema com um LV que vem de 3 PVs em um dispositivo iSCSI (com caminhos múltiplos).

Nenhuma solução funcionou, mas uma simples reinicialização ! ( comente no fstab , para não ser montado novamente)

Talvez isso ajude alguém.

davidak
fonte
0

isso também pode estar bloqueado pelo serviço nfslock no RHEL, basta interromper esse serviço e você estará pronto para prosseguir.

Veaceslav Mindru
fonte
0

Eu tive um problema parecido. O lv que tentei remover era um dispositivo de bloco de VM, mantendo um grupo de volumes. Esse grupo de volumes foi filtrado no lvm.conf, mas alguns itens do mapeador de desenvolvimento foram criados anteriormente.

Para descobrir se o dispositivo está em espera, observe o número menor (253, ?? ) que ll /dev/<vg>/<lv>deve apontar para../dm-??

Em seguida ls -la /sys/dev/block/253:??/holders, fornecerá links de -> ../../dm-xxretransmissão vg (ex ) no seu dispositivo (como um pv)

Remova-os com dmsetup remove /dev/dm-xx(certifique-se de que esses dm não sejam usados). Em seguida, remova / dev //, que não é mais um "pv" em algum lugar

Cedric de lEpine
fonte
Eu sou o meu caso, dmsetup remove /dev/dm-36mas eu recebo o erro, device-mapper: remove ioctl on vg0-snap--tmp--vm06.docker--disk failed: – Device or resource busy – Command failedconsulte: serverfault.com/questions/926681/…
rubo77
0

Você pode desvincular seu LV do dispositivo DM:

fusor -kuc / dev / volumes-minha-amostra / volume-amostra-1

/ dev / dm-21: 2400ce (raiz) 2739ce (raiz) 4793ce (raiz)

ls -l / dev / minha-amostra-volumes / volume-amostra-1

lrwxrwxrwx 1 raiz raiz 8 de agosto 15 02:53 / dev / volumes-minha-amostra / volume-amostra-1 -> ../dm-21

desvincular / dev / my-sample-volumes / volume-sample-1

lvremove / dev / minha-amostra-volumes / volume-amostra-1

dayzero
fonte
Olá e bem vindo. Eu acho que não lvremovevai funcionar depois unlink, você poderia esclarecer essa parte? Apenas edite sua resposta.
kubanczyk
Deveria funcionar. Eu testei. Ele simplesmente desvinculará o seu softlink. o LV ainda deve existir e você pode removê-lo com lvremove.
dayzero 9/09
0

No meu caso, eu estava executando o cAdvisor em um contêiner, e isso parece impedir a remoção de quaisquer dispositivos de bloco montados quando ele foi iniciado. Minha correção foi:

  1. Desmonte o volume LVM
  2. Reinicie o contêiner cAdvisor ( docker restart $CONTAINER_ID)
  3. Tente remover novamente
RobM
fonte
-1

Eu tenho o mesmo problema que o seu. Eu tentei o seguinte comando e resolvi: swapoff -a

lvremove ...

zhaorufei
fonte
isso pode levar alguém a tentar cegamente o seu comando. Melhor apenas apontar, se LV é usado para swap, então swapoff o lv primeiro lugar, e só isso, não apenas -a
roothahn