часто замечаю, что после
$ sudo lvcreate vg -L 10G
сразу за которым следует
$ sudo lvremove vg/<created volume>
Я получаю сообщение об ошибке
Не удается удалить открытый логический том "..."
в то время как
$ sudo lvs
показывает мне этот объем
lvol2 vg -wi-a- 10,00g
-
после a
во флагах, где должен быть o
если том действительно был открыт.Через некоторое время удаление работает.
Почему так? Как заставить его работать сразу?
РЕДАКТИРОВАТЬ: Следующее не привело к чему-то полезному:
$ 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
непокорные объемы.
Это экспериментальная установка, и я думаю, что изначально я мог вызвать проблему из-за принудительной перезагрузки, которую я сделал, чтобы обойти некоторые другие проблемы.
Я тоже получил эту ошибку. К счастью, я был на начальном этапе создания, данные не теряли. Должен отметить, что логический том был создан за последние полчаса.
Чтобы разрешить удаление логического тома, я сделал следующее:
Я столкнулся с этим недавно. Я полностью забыл, что устройство XYZ было томом luks, сопоставленным с XYZ, и что лежащий в основе lvm фактически использовался картой luks.