4

在 linux 中,我使用 blkid api 来获取有关磁盘分区的大部分信息。我找不到可以让我找出分区名称与其驱动器之间的映射的 API。

例如,磁盘 /dev/sda 被分区为 /dev/sda1 和 /dev/sda2。给定两个分区名称,我怎么知道它是否来自同一个驱动器?通过寻找一个公共前缀 (sda),可以查看它们是否属于同一个驱动器。但是,这是万无一失的证明吗?这在所有情况下都有效吗?如果这是卷的一部分怎么办?此外,驱动器名称/卷名称(“sda”)是否可以包含数字?

我假设应该有一个简单的方法来确定这个映射。

4

2 回答 2

2

我找到了两种方法来获取分区父磁盘的内核名称,

  1. 简单的方法,你可以使用lsblk命令来获取

    sudo lsblk /dev/sda1 -o SIZE,KNAME,PKNAME,MOUNTPOINT,FSTYPE

    您可以在选项列表中提供 PKNAME,它将提供父设备的内核名称。

  2. 第二种方法有点棘手,您可以使用udevadmn工具找到父磁盘/设备的 MINOR:MAJOR 对,并在连接的设备中搜索 MAJOR:MINOR 对。

sudo udevadm info --query=property --name=/dev/sda1 | grep ID_PART_ENTRY_DISK

列表是 Linux 设备列表,是 Linux 操作系统分配设备号和 /dev 目录节点的官方注册表。

于 2014-07-22T15:22:29.827 回答
0

签出 /dev/disk/by-xxxxx 文件

于 2019-09-28T20:52:14.057 回答