在linux中,如何确定使用块设备的进程?

前端之家收集整理的这篇文章主要介绍了在linux中,如何确定使用块设备的进程?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在服务器中有一个磁盘,我正在迁移到LVM卷组.以前,它使用传统的DOS磁盘分区,hdb [1-5].

我已经从hdb卸载了每个文件系统,使用hdb关闭交换,已经在设备上删除了一个较小的VG,然后使用fdisk重新分区,删除现有分区,并创建了2个分区,但在写完后,linux拒绝了重新读取分区表.使用hdparm -z报告再次尝试:BLKRRPART失败:设备或资源繁忙.

我已检查以下位置以确保设备及其分区未列在任何位置:

> / proc / swaps
> / proc / mdadm
>’pvs’命令输出
>’mount’命令输出
> / etc / mtab
> lsof | grep hdb

但是cat / proc / partitions仍然列出了分区,而hdparm -z / dev / hdb仍然让我设备忙.

是否有一些我遗漏的东西,或者我还不知道要找到什么仍然保留在我的块设备上的秘密地方?更重要的是,我如何释放它以便我可以重新加载分区表?

FWIW,在这个特定的情况下,我可以简单地重启服务器而不用担心,但这一直困扰着我,而且我很好奇是否有更好的方法.

(编辑:添加更精确的措辞)
(编辑:详细信息重新分区)

更新:我使用了partprobe / dev / hdb,它确实改变了一些东西:在/ dev / hdb1中,/ deb / hdb [3-5]现在已经消失了,而且partprobe正在报告错误错误通知内核有关分区的修改/ dev / hdb1 – 设备或资源繁忙. < - 特别是关于hdb1. hdb1以前是LVM卷组(VG)中的物理卷(PV),在我重新分区之前,我已经恢复了pvremoved em ...... 更新2:FWIW,我仍然没有纠正这个问题,幸运的是它并不紧急.我已经了解到partprobe正在使用更新的API调用,这就是为什么它似乎早先做了一些事情.我仍然没有找到一种简单有效的方法,给定一个设备,它的主要/次要数字,找出哪些资源(内核或用户空间)正在使用它.有任何想法吗?

解决方法

尝试使用热凝器
fuser -vam /dev/hdb1

猜你在找的Linux相关文章