$ cat /proc/partitions
major minor #blocks name
8 0 976762584 sda
8 1 99998720 sda1
8 2 1 sda2
8 3 103561216 sda3
8 4 291514368 sda4
8 5 1998848 sda5
8 16 31506432 sdb
8 17 31505439 sdb1
我想从输出中区分物理磁盘 ( /dev/sda
) 和逻辑磁盘 ( )。/dev/sda1
/proc/partitions
- 我看到的一种简单方法是检查一些正则表达式模式是否以整数结尾
- 正如我所见,我机器上的输出比所有条目的
sda
价值最小sdaN
- 检查是否存在
/sys/block/[NAME]
所以我将尝试读取/sys/block/sdaN
目录(这将失败)和/sys/block/sda
(这将成功)
我不知道哪个可靠,还有其他方法吗?
另外,我怎样才能可靠地制作树状结构sda : {sda1, sda2, sda3, sda4, sda4}, sdb : {sdb1}
- 就凭它的名字
- 按次要号码
- 再次调查
/sys/block
- 按位置(是否确认 sda1 总是在 sda 之后?例如,逻辑分区条目是否总是在物理磁盘条目之后?)