Impossible de supprimer le volume logique ouvert

20

Lorsque j'essaie de supprimer un volume logique, je reçois le message

#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  

Comment puis-je forcer la suppression de ce volume?

Merci, Everett

Everett Toews
la source

Réponses:

13

Que contient le volume logique? Est-ce un système de fichiers (j'ai accidentellement écrit une partition)? Serait-ce qu'il est monté? Dans ce cas:

umount /dev/my-volumes/volume-1

At-il des instantanés actifs?

Modifier: essayez lvchange -an -v /dev/my-volumes/volume-1et lvremove -vf /dev/my-volumes/volume-1.

Edit 2: veuillez poster 'lvs'.

Edit 3: Essayez ceci avec un autre volume problématique. Ce n'est pas l'option la plus propre mais selon ce site, cela peut fonctionner, et c'est moins problématique que de redémarrer de toute façon.

dmsetup remove my--volumes-volume--number
lvremove /dev/my-volumes/volume-number
Eduardo Ivanec
la source
Il ne contient rien. Ce n'est pas une partition. Il n'est pas monté (plus). Aucun instantané actif.
Everett Toews
Eh bien, pourquoi l'avez-vous utilisé? Cela peut nous donner une idée de ce qui ne va pas.
Eduardo Ivanec
Ajout des informations que vous avez demandées à la question. Il était utilisé comme volume pour OpenStack Compute (alias Nova). En fait, j'ai réussi à l'enlever en devenant nucléaire et en redémarrant la machine, puis en faisant un retrait. Bien plus drastique que je ne voulais l'être. J'ai encore quelques autres volumes dont je voudrais me débarrasser sans avoir à redémarrer, donc toute aide que vous pouvez fournir est appréciée.
Everett Toews,
J'ai ajouté quelque chose à essayer avec un autre volume problématique.
Eduardo Ivanec
Essayé. Pas de chance. J'ai également tout essayé sur wiki.davidjb.com/… (d'où le "/ dev / dm-1: échec de lecture ..." dans certaines de mes sorties) mais cela n'a pas fonctionné non plus.
Everett Toews
9

Si vous ne parvenez pas à démonter ou à supprimer un volume logique, vérifiez qu'aucun processus ne contient le LV

Localisez les nombres majeurs / mineurs pour le volume logique que vous essayez de supprimer, par exemple: vol0

# dmsetup info -c | grep vol0

Prenez note de la 5e colonne, qui indique si un volume est «ouvert», et des 2e et 3e colonnes, qui sont les ID principaux et mineurs, respectivement.

Recherchez tout processus associé à ce volume en recherchant les identifiants majeurs et mineurs découverts ci-dessus:

# lsof | grep "major,minor"

Arrêtez ou supprimez tout processus qui accède encore au volume pour continuer le démontage et la suppression.

puis essayez lvremove

pruthvi
la source
Dans mon cas, aucune aide. lsof, l'unité de fusion ne montre aucune utilisation. dmsetup indique que l'appareil est occupé. l'appareil n'est pas monté (peut être monté à tout moment). seul un redémarrage matériel peut aider: /
John
5

Vous avez probablement iet ou tgt en cours d'exécution (lequel dépend de votre iscsi_helpervaleur dans /etc/nova/nova.conf, par défaut iet), et le service a un descripteur de fichier ouvert. Vous pouvez vérifier lequel en faisant quelque chose comme ça (dans mon cas, c'est 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

Si c'est le cas, arrêtez le service en faisant:

service iscsitarget stop

Si c'est tgt, arrêtez le service en faisant:

service tgt stop

Vous devriez alors pouvoir supprimer vos volumes.

Lorin Hochstein
la source
Cela a résolu le problème pour moi avec OpenStack
juanluisrp
5

Je suis entré dans une situation similaire, mais la suppression de LV a été bloquée, car j'utilisais mount -o bind.

L'article ci-dessous a beaucoup aidé, en utilisant lsof avec un nombre majeur / mineur de LV, le processus a montré la tenue de LV ouvert, dans mon cas smbd.

Que simplement cat / proc / mounts | grep LV_name m'a conduit à la conclusion, pourquoi lvremove ou dmsetup remove refusent de se débarrasser du LV non monté.

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

janfai
la source
2

Arrêtez les conteneurs LXC qui utilisent les systèmes de fichiers via leur configuration: lxc.mount.entry

Tonny
la source
1

Si vous ne parvenez pas à supprimer lvm, veuillez suivre ces étapes:

  1. démonter la partition:

    # umount / dev / sda8

    (par exemple. J'ai monté la partition /dev/sda8)

  2. essayez de supprimer lvmcomme suit:

    # lvremove / dev / vgname / lvname

Si vous obtenez une erreur comme " impossible de supprimer le volume logique ouvert sous linux ", essayez de désactiver le LVM via les commandes ci-dessous, puis supprimez-le:

 # lvchange -an  /dev/vgname/lvname

 # lvremove /dev/vgname/lvname

Faites-nous savoir si vous rencontrez un problème.

Pankaj Patel
la source
0

J'ai eu ce problème avec un LV qui provient de 3 PV sur un appareil iSCSI (avec multichemin).

Aucune solution n'a fonctionné mais un simple redémarrage ! ( commentez-le dans fstab , pour qu'il ne soit plus monté)

Peut-être que cela aide quelqu'un.

davidak
la source
0

cela peut également être verrouillé par le service nfslock dans RHEL, arrêtez simplement ce service et vous êtes prêt à partir.

Veaceslav Mindru
la source
0

J'avais un problème similaire. Le lv que j'ai essayé de supprimer était un périphérique de bloc VM, contenant un groupe de volumes. Ce groupe de volumes a été filtré dans lvm.conf, mais certains éléments du mappeur de développement ont été créés plus tôt.

Pour comprendre est détenu par un appareil, regardez son numéro mineur (253, ?? ) ll /dev/<vg>/<lv>devrait pointer vers../dm-??

Ensuite ls -la /sys/dev/block/253:??/holders, vous donnera des liens de -> ../../dm-xxrelais vg (ex ) sur votre appareil (en tant que pv)

Supprimez-les avec dmsetup remove /dev/dm-xx(assurez-vous que ces dm ne sont pas utilisés) Ensuite, vous devez supprimer / dev // qui n'est plus un "pv" quelque part

Cedric de lEpine
la source
Im Mon cas c'est dmsetup remove /dev/dm-36mais j'obtiens l'erreur device-mapper: remove ioctl on vg0-snap--tmp--vm06.docker--disk failed: – Device or resource busy – Command failedvoir: serverfault.com/questions/926681/…
rubo77
0

Vous pouvez dissocier votre LV de l'appareil DM:

fuser -kuc / dev / my-sample-volumes / volume-sample-1

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

ls -l / dev / my-sample-volumes / volume-sample-1

lrwxrwxrwx 1 root root 8 août 15 02:53 / dev / my-sample-volumes / volume-sample-1 -> ../dm-21

dissocier / dev / mes-volumes-d'échantillons / volume-échantillon-1

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

dayzero
la source
Salut et bienvenue. Je ne pense pas que cela lvremovefonctionnera après unlink, pourriez-vous clarifier cette partie? Modifiez simplement votre réponse.
kubanczyk
Ça devrait marcher. Je l'ai testé. Il se dissociera simplement de son lien logiciel. le LV doit toujours exister et vous pouvez le supprimer avec lvremove.
dayzero
0

Dans mon cas, j'exécutais cAdvisor dans un conteneur, et cela semble empêcher la suppression de tout périphérique bloc qui a été monté au démarrage. Ma solution était:

  1. Démontez le volume LVM
  2. Redémarrez le conteneur cAdvisor ( docker restart $CONTAINER_ID)
  3. Tentative de suppression à nouveau
RobM
la source
-1

J'ai le même problème que le vôtre. J'ai essayé la commande suivante et résolu: swapoff -a

lvremove ...

zhaorufei
la source
cela pourrait conduire quelqu'un à essayer aveuglément votre commande. Mieux vaut simplement souligner, si LV est utilisé pour l'échange, puis permutez d'abord le lv, et seulement cela, pas seulement -a
roothahn