在将 CD 从虚拟机中移除之前,如何检查它是否正在使用?它目前安装在 Ubuntu 14.04 机器上的 /dev/sr0 上,我需要卸载它以进行数据存储迁移。
我知道它没有被写入,但我需要知道它是否被读取。
答案1
正确执行此操作的唯一方法是尝试卸载虚拟机内的 CD。
我通常使用的一般程序是:
检查它是否已安装,最好以 root 身份运行:
grep /dev/sr0 /proc/self/mounts
如果输出任何文本,则表明该 CD 已安装并且可能正在使用(但即使未使用也不安全移除),否则您可以假设它未被使用,除非您打开了 CD 刻录机软件。
尝试卸载它(必须以 root 身份进行):
umount /dev/sr0
如果成功且无错误,则此时您可以确定 CD 未在使用中,并且可以在虚拟机管理程序端安全地将其移除。如果它抱怨未
/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
应该可以正常工作。
请注意,这种方法假设不涉及任何挂载命名空间,除非您使用容器,否则通常是正确的(在这种情况下,您可能必须在每个正在运行的容器中执行所有这些步骤)。