Назад | Перейти на главную страницу

lvremove утверждает, что LV открыт

часто замечаю, что после

$ sudo lvcreate vg -L 10G

сразу за которым следует

$ sudo lvremove vg/<created volume>

Я получаю сообщение об ошибке

Не удается удалить открытый логический том "..."

в то время как

$ sudo lvs

показывает мне этот объем

  lvol2         vg   -wi-a-  10,00g

Через некоторое время удаление работает.

Почему так? Как заставить его работать сразу?

РЕДАКТИРОВАТЬ: Следующее не привело к чему-то полезному:

$ sudo rm /dev/mapper/vg-lvol24 
$ sudo lvremove /dev/vg/lvol24
  Can't remove open logical volume "lvol24"
$ sudo lvs vg/lvol24
  LV     VG   Attr   LSize  Origin Snap%  Move Log Copy%  Convert
  lvol24 vg   -wi-a- 10,00g                                      
$ sudo lvremove /dev/vg/lvol24
  Can't remove open logical volume "lvol24"

Таким образом, есть еще одна возможность, кроме NFS, устаревшего процесса bash и неправильного поведения udev, а именно, открытие разделов на блочном устройстве.

kpartx -d /dev/vg1/lv1

Затем вы можете убедиться, что # open падает до 0 в lvdisplayвывод.

Похоже, есть проблема с кооперацией lvm и udev.

На lvremove, есть udev изменить события для каждого доступного блочного устройства. Их обработка, кажется, мешает процессу удаления, и удаление не удается.

Решение состоит в том, чтобы деактивировать LV, которые нужно удалить, с помощью lvchange -an <given LV>. В этом случае создается только несколько событий «удалить», которые являются результатом связанных dm устройство удаляется.

Если я lvremove Теперь деактивированный LV, есть еще много событий изменения udev, но они не влияют на LV, который нужно удалить (потому что он больше не существует в dm), поэтому он работает без проблем.

Удалите все сопоставления с этим LV из / dev / mapper / удалив символические ссылки, после чего вы сможете удалить его.

Несколько полезных команд, чтобы узнать, использует ли что-то еще диск:

cat /proc/mounts
dmsetup ls --tree
lsof <device>

Я столкнулся с аналогичной проблемой при установке OpenStack. lsof ничего не показал для меня, но dmsetup ls --tree действительно показывает зависимость / цель. lvchange -an <given LV> у меня тоже не сработало. Также не было удалено символических ссылок на /dev/dm-* устройства

В моем случае я отключил службы OpenStack и затем смог lvremove непокорные объемы.

Это экспериментальная установка, и я думаю, что изначально я мог вызвать проблему из-за принудительной перезагрузки, которую я сделал, чтобы обойти некоторые другие проблемы.

Я тоже получил эту ошибку. К счастью, я был на начальном этапе создания, данные не теряли. Должен отметить, что логический том был создан за последние полчаса.

Чтобы разрешить удаление логического тома, я сделал следующее:

  1. (В fdisk) Удалите раздел таблицы, который я создал для этого логического тома.
  2. (В fdisk) Выполнена запись - после подтверждения отсутствия разделов таблицы
  3. Partprobe
  4. multipath -F (очищает неиспользуемые многопутевые устройства)
  5. остановка службы multipathd
  6. запуск службы с несколькими путями
  7. перезагрузите сервер
  8. lvscan, когда сервер вернулся
  9. lvremove

Я столкнулся с этим недавно. Я полностью забыл, что устройство XYZ было томом luks, сопоставленным с XYZ, и что лежащий в основе lvm фактически использовался картой luks.