2

Как проверить, используется ли компакт-диск, прежде чем удалить его из виртуальной машины? В настоящее время он смонтирован в /dev /sr0 на машине с Ubuntu 14.04, и мне нужно размонтировать его для переноса хранилища данных.

Я знаю, что это не пишется, но мне нужно знать, если это читается из.

1 ответ1

1

Единственный способ сделать это правильно - попытаться размонтировать компакт-диск внутри виртуальной машины.

Общая процедура, которую я обычно использую:

  1. Проверьте, монтируется ли он вообще, желательно запустить от имени пользователя root:

    grep /dev/sr0 /proc/self/mounts
    

    Если это выплевывает какой-либо текст, то компакт-диск смонтирован и может использоваться (но его пока невозможно удалить, даже если он не используется), в противном случае вы можете предположить, что он не используется, если у вас не открыто программное обеспечение для записи компакт-дисков ,

  2. Попытайтесь размонтировать его (необходимо сделать как root):

    umount /dev/sr0
    

    Если это произойдет без ошибок, вы можете быть уверены, что в этот момент компакт-диск не используется и можете безопасно удалить его на стороне гипервизора. Если он жалуется на то, что /dev/sr0 не смонтирован, перепроверьте первый шаг, в противном случае переходите к следующему шагу.

  3. Выясните, что его использует (это также должно быть сделано от имени пользователя root, и вам, возможно, придется установить команду fuser ):

    fuser -m $(grep /dev/sr0 /proc/self/mounts | cut -f 2)
    

    Это выяснит, где он монтируется, а затем выложит одну строку для каждого используемого файла, начиная с имени файла, за которым следует разделенный пробелами список PID, которые используют файл. Затем вы можете посмотреть, к каким процессам относятся эти PID, в большинстве программ мониторинга системы, таких как top . Если вас не волнует, что это такое, вы можете добавить -k -TERM перед командой -m к этой команде, приведенной выше, и она отправит SIGTERM во все процессы, которые вам нужны (эквивалентно вызову kill для каждого PID). После того, как со всеми этим покончено, вы можете повторить шаг 2, и команда umount должна работать.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .