【问题标题】:linux partitions to drive mappinglinux分区到驱动映射
【发布时间】:2014-06-30 05:14:39
【问题描述】:

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

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

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

【问题讨论】:

  • 这个 [1] 可能有助于找到答案。不,您不能只删除最后一个数值(即 sda1 删除 1)并获取 sda1 所属的潜水节点。在设备映射场景中他们将多路径设备命名为“dm-1”、“dm-2”,因此仅删除最后一位不会给出它所属的设备节点。 [1]:github.com/GNOME/gparted/blob/master/src/…

标签: mapping disk partition


【解决方案1】:

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

  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

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

【讨论】:

  • PKNAME 得到你的父母。但是,如果您创建嵌套分区,它会为您提供直接父级。你如何找到根父(实际的硬盘)?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-25
    • 2017-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多