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

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

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


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.


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/


2

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


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.


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.


0

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


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”


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


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ąć

-1

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

lvremove ...


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.