Единственный способ сделать это правильно - попытаться размонтировать компакт-диск внутри виртуальной машины.
Общая процедура, которую я обычно использую:
Проверьте, монтируется ли он вообще, желательно запустить от имени пользователя root:
grep /dev/sr0 /proc/self/mounts
Если это выплевывает какой-либо текст, то компакт-диск смонтирован и может использоваться (но его пока невозможно удалить, даже если он не используется), в противном случае вы можете предположить, что он не используется, если у вас не открыто программное обеспечение для записи компакт-дисков ,
Попытайтесь размонтировать его (необходимо сделать как root):
umount /dev/sr0
Если это произойдет без ошибок, вы можете быть уверены, что в этот момент компакт-диск не используется и можете безопасно удалить его на стороне гипервизора. Если он жалуется на то, что /dev/sr0
не смонтирован, перепроверьте первый шаг, в противном случае переходите к следующему шагу.
Выясните, что его использует (это также должно быть сделано от имени пользователя root, и вам, возможно, придется установить команду fuser
):
fuser -m $(grep /dev/sr0 /proc/self/mounts | cut -f 2)
Это выяснит, где он монтируется, а затем выложит одну строку для каждого используемого файла, начиная с имени файла, за которым следует разделенный пробелами список PID, которые используют файл. Затем вы можете посмотреть, к каким процессам относятся эти PID, в большинстве программ мониторинга системы, таких как top
. Если вас не волнует, что это такое, вы можете добавить -k -TERM
перед командой -m
к этой команде, приведенной выше, и она отправит SIGTERM во все процессы, которые вам нужны (эквивалентно вызову kill
для каждого PID). После того, как со всеми этим покончено, вы можете повторить шаг 2, и команда umount
должна работать.
Обратите внимание, что в этом подходе предполагается, что пространства имен монтирования не задействованы, что обычно будет истинно, если вы не используете контейнеры (в этом случае вам может потребоваться выполнить все эти шаги в каждом работающем контейнере).