安装块设备时谁导致设备或资源繁忙?

安装块设备时谁导致设备或资源繁忙?

我已将带有一些分区的 HDD 插入 Linux 机器,但是当我尝试安装它们时,它失败了:

[root@il ~]# mount -oro /dev/sdb1 /media/sdb1
fuse: mount failed: Device or resource busy

它尚未安装(至少,安装在当前根目录中不可见):

[root@il ~]# grep sdb /proc/mounts
[root@il ~]# 

如果我使用将 sdb1 内容复制到文件dd并将其安装为循环设备安装得很好。。 (我还通过将中间循环设备映射到 sdb1 而不是复制来设法规避此问题)

[root@il ~]# mount -oro,loop /dev/sdb1 /media/sdb1
[root@il ~]# 

于是我写了一个小程序来检查:

#include <fcntl.h>
#include <stdio.h>
int main(int argc, char *argv[]) {
        if (argc < 2) {
                return 1;
        }
        int fd = open(argv[1], O_RDONLY | O_EXCL);
        printf("%d\n", fd);
        return 0;
}

正如我所料,该程序无法打开该硬盘的分区:

[root@il ~]# ./excl /dev/sdb1
-1
# another unmounted NTFS partition
[root@il ~]# ./excl /dev/md124p6
3

如何找出谁阻止对磁盘的独占访问?我正在寻找一个比它更好的通用工具,lsof因为lsof不会打印为循环设备或通过 dmraid 或 mdraid 打开的文件。

[root@il ~]# dmraid -s
ERROR: ddf1: wrong # of devices in RAID set "ddf1_4c5349202020202010000055000000004711471100000a28" [1/2] on /dev/sdb
*** Group superset .ddf1_disks
--> *Inconsistent* Subset
name   : ddf1_4c5349202020202010000055000000004711471100000a28
size   : 623046656
stride : 128
type   : mirror
status : inconsistent
subsets: 0
devs   : 1
spares : 0
*** Group superset isw_ebaifefjbf
--> Subset
name   : isw_ebaifefjbf_Volume0
size   : 976783360
stride : 256
type   : stripe
status : ok
subsets: 0
devs   : 2
spares : 0

_

[root@il ~]# lsblk
NAME         MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
loop0          7:0    0   100M  0 loop
sda            8:0    0 232,9G  0 disk
└─md124        9:124  0 465,8G  0 raid0
  ├─md124p1  259:0    0   9,8G  0 part  /media/realboot
  ├─md124p2  259:1    0     1K  0 part
  ├─md124p5  259:2    0 195,3G  0 part  /media/distrpart
  ├─md124p6  259:3    0  19,5G  0 part
  ├─md124p7  259:4    0   3,7G  0 part  [SWAP]
  ├─md124p8  259:5    0   155G  0 part  /.sxbackup
  ├─md124p9  259:6    0  81,7G  0 part  /media/ARCHLINUXOLD
  └─md124p10 259:7    0 782,6M  0 part
sdb            8:16   0 931,5G  0 disk
├─sdb1         8:17   0   100M  0 part
└─sdb2         8:18   0   297G  0 part
sdc            8:32   0 232,9G  0 disk
└─md124        9:124  0 465,8G  0 raid0
  ├─md124p1  259:0    0   9,8G  0 part  /media/realboot
  ├─md124p2  259:1    0     1K  0 part
  ├─md124p5  259:2    0 195,3G  0 part  /media/distrpart
  ├─md124p6  259:3    0  19,5G  0 part
  ├─md124p7  259:4    0   3,7G  0 part  [SWAP]
  ├─md124p8  259:5    0   155G  0 part  /.sxbackup
  ├─md124p9  259:6    0  81,7G  0 part  /media/ARCHLINUXOLD
  └─md124p10 259:7    0 782,6M  0 part

相关内容