Nie można usunąć otwartego woluminu logicznego

20

Gdy próbuję usunąć wolumin logiczny, pojawia się komunikat

#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  

Jak mogę wymusić usunięcie tego woluminu?

Dzięki, Everett

Everett Toews
źródło

Odpowiedzi:

13

Co zawiera wolumin logiczny? Czy to system plików (przypadkowo napisałem partycję)? Czy to możliwe, że jest zamontowany? W tym wypadku:

umount /dev/my-volumes/volume-1

Czy ma jakieś aktywne migawki?

Edycja: spróbuj lvchange -an -v /dev/my-volumes/volume-1i lvremove -vf /dev/my-volumes/volume-1.

Edycja 2: proszę zamieścić „lvs”.

Edycja 3: Wypróbuj to z innym problematycznym woluminem. Nie jest to najczystsza opcja, ale według tej strony może działać i jest mniej problematyczna niż ponowne uruchomienie.

dmsetup remove my--volumes-volume--number
lvremove /dev/my-volumes/volume-number
Eduardo Ivanec
źródło
Nic nie zawiera. To nie jest partycja. Nie jest zamontowany (już). Brak aktywnych migawek.
Everett Toews
Do czego go użyłeś? Może dać nam wskazówkę, co może być nie tak.
Eduardo Ivanec
Dodano informacje, o które prosiłeś, do pytania. Był używany jako wolumin dla OpenStack Compute (aka Nova). Naprawdę udało mi się go usunąć, uruchamiając jądro i ponownie uruchamiając maszynę, a następnie robiąc lvremove. O wiele bardziej drastyczny niż chciałem być. Wciąż mam kilka innych woluminów, których chciałbym się pozbyć bez konieczności ponownego uruchamiania, więc każda pomoc, którą możesz udzielić, jest doceniana.
Everett Toews
Dodałem coś do wypróbowania z innym problematycznym tomem.
Eduardo Ivanec
Spróbował tego. Brak szczęścia. Próbowałem także wszystkiego z wiki.davidjb.com/… (stąd „/ dev / dm-1: read failed ...” w niektórych moich wynikach ), ale to też nie działało.
Everett Toews
9

Jeśli nie możesz odmontować lub usunąć woluminu logicznego, sprawdź, czy nie ma procesów przechowujących LV

Znajdź numery główne / dodatkowe dla woluminu logicznego, który próbujesz usunąć, np .: vol0

# dmsetup info -c | grep vol0

Zwróć uwagę na piątą kolumnę, która wskazuje, czy wolumin jest „otwarty”, oraz drugą i trzecią kolumnę, które są odpowiednio głównym i pomocniczym identyfikatorem.

Znajdź dowolny proces dołączony do tego woluminu, wyszukując główne i mniejsze identyfikatory odkryte powyżej:

# lsof | grep "major,minor"

Zamknij lub zabij dowolny proces, który nadal uzyskuje dostęp do woluminu, aby kontynuować odmontowywanie i usuwanie.

następnie spróbuj lvremove

pruthvi
źródło
W moim przypadku nie ma pomocy. Z tego powodu utrwalacz nie wykazuje żadnego użycia. dmsetup mówi, że urządzenie jest zajęte. urządzenie jest odmontowane (można je zamontować w dowolnym momencie). tylko sprzętowy restart pomaga: /
John
5

Prawdopodobnie masz uruchomiony iet lub tgt (który zależy od iscsi_helperwartości w /etc/nova/nova.conf, domyślnie jest ustawiony na iet), a usługa ma otwarty uchwyt pliku. Możesz sprawdzić, który z nich robi coś takiego (w moim przypadku jest to 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

Jeśli jest okej, zatrzymaj usługę, wykonując:

service iscsitarget stop

Jeśli jest to tgt, zatrzymaj usługę, wykonując:

service tgt stop

Powinieneś być w stanie usunąć swoje woluminy.

Lorin Hochstein
źródło
To rozwiązało problem z OpenStack
juanluisrp
5

Znalazłem się w podobnej sytuacji, ale usuwanie LV było zablokowane, ponieważ korzystałem z mount -o bind.

Poniższy artykuł bardzo pomógł, używając lsof z większymi / mniejszymi liczbami LV pokazał proces utrzymywania otwartego LV, w moim przypadku smbd.

Niż po prostu cat / proc / mounts | grep LV_name doprowadziło mnie do wniosku, dlaczego lvremove lub dmsetup remove odmawiają pozbycia się niezmontowanego LV.

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

janfai
źródło
2

Zamknij kontenery LXC korzystające z systemów plików za pomocą ich config: lxc.mount.entry

Tonny
źródło
1

Jeśli nie możesz usunąć lvm, wykonaj następujące kroki:

  1. odmontować partycję:

    # umount / dev / sda8

    (np. zamontowałem partycję /dev/sda8)

  2. spróbuj usunąć lvmtak:

    # lvremove / dev / vgname / lvname

Jeśli pojawi się błąd typu „ nie można usunąć otwartego woluminu logicznego w systemie Linux ”, spróbuj dezaktywować LVM za pomocą poniższych poleceń, a następnie usuń go:

 # lvchange -an  /dev/vgname/lvname

 # lvremove /dev/vgname/lvname

Daj nam znać, jeśli napotkasz jakiś problem.

Pankaj Patel
źródło
0

Miałem ten problem z LV, który pochodzi z 3 PV na urządzeniu iSCSI (z wieloma ścieżkami).

Żadne rozwiązanie nie działało, ale prosty restart ! ( skomentuj to w fstab , aby nie został ponownie zamontowany)

Może to komuś pomaga.

dawidak
źródło
0

może to również zostać zablokowane przez usługę nfslock w RHEL, po prostu zatrzymaj tę usługę, a będziesz gotowy.

Veaceslav Mindru
źródło
0

Miałem podobny problem. Lv, który próbowałem usunąć, to urządzenie blokujące VM, trzymające grupę woluminów. Ta grupa woluminów została przefiltrowana w pliku lvm.conf, ale niektóre elementy mapujące deweloperów zostały wcześniej utworzone.

Aby dowiedzieć się, czy urządzenie jest w posiadaniu, spójrz na jego mniejszy numer (253, ?? ), który ll /dev/<vg>/<lv>powinien wskazywać../dm-??

Następnie ls -la /sys/dev/block/253:??/holderspodadzą Ci linki -> ../../dm-xxprzekazywania vg (ex ) na twoim urządzeniu (jako pv)

Usuń je za pomocą dmsetup remove /dev/dm-xx(upewnij się, że te dm nie są używane) Następnie powinieneś usunąć / dev //, które nie jest już gdzieś „pv”

Cedric de lEpine
źródło
Im Mój przypadek to jest, dmsetup remove /dev/dm-36ale dostaję błąd device-mapper: remove ioctl on vg0-snap--tmp--vm06.docker--disk failed: – Device or resource busy – Command failedpatrz: serverfault.com/questions/926681/…
rubo77
0

Możesz odłączyć LV od urządzenia DM:

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

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

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

lrwxrwxrwx 1 root root 8 sierpnia 15 02:53 / dev / my-sample-volume / volume-sample-1 -> ../dm-21

unlink / dev / my-sample-volume / volume-sample-1

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

dayzero
źródło
Witam i witam Nie sądzę, że po tym lvremovezacznie działać unlink, czy możesz wyjaśnić tę część? Po prostu edytuj swoją odpowiedź.
kubańczyk
To powinno działać. Przetestowałem to. Po prostu odłączy się od swojego softlink. LV powinien nadal istnieć i możesz go usunąć za pomocą lvremove.
dayzero
0

W moim przypadku uruchomiłem cAdvisor w kontenerze, co wydaje się uniemożliwiać usunięcie urządzeń blokowych, które zostały zamontowane podczas jego uruchamiania. Moja poprawka to:

  1. Odmontuj wolumin LVM
  2. Uruchom ponownie kontener cAdvisor ( docker restart $CONTAINER_ID)
  3. Spróbuj ponownie usunąć
RobM
źródło
-1

Mam taki sam problem jak twój. Próbowałem następującego polecenia i rozwiązałem: swapoff -a

lvremove ...

zhaorufei
źródło
może to doprowadzić kogoś do ślepego wypróbowania twojego polecenia. Lepiej po prostu wskazać, jeśli LV jest używane do zamiany, najpierw zamień lv i tylko to, a nie tylko -a
roothahn