0
$ 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

  1. 我看到的一种简单方法是检查一些正则表达式模式是否以整数结尾
  2. 正如我所见,我机器上的输出比所有条目的sda价值最小sdaN
  3. 检查是否存在/sys/block/[NAME]所以我将尝试读取/sys/block/sdaN目录(这将失败)和/sys/block/sda(这将成功)

我不知道哪个可靠,还有其他方法吗?

另外,我怎样才能可靠地制作树状结构sda : {sda1, sda2, sda3, sda4, sda4}, sdb : {sdb1}

  1. 就凭它的名字
  2. 按次要号码
  3. 再次调查/sys/block
  4. 按位置(是否确认 sda1 总是在 sda 之后?例如,逻辑分区条目是否总是在物理磁盘条目之后?)
4

1 回答 1

1

看起来您无法很好地区分主分区和辅助分区:

分区通常可以是主分区(最多四个)、扩展分区(最多一个分区)或逻辑分区(包含在扩展分区内)。每个分区都有一个包含代码的类型字段。这决定了计算机操作系统或分区文件系统。

Primary (max 4)        1-4, 
Extended (max 1)       1-4, 
Logical                5-

当谈到分区命名时,您通常会看到硬盘设备被命名为 /dev/hdx 或 /dev/sdx,其中 x 取决于硬件配置。

分区号,从 1 开始计数。因此,四个(可能的)主分区编号为 1 到 4。逻辑分区计数始终从 5 开始。因此 /dev/hda2 是第一个 ATA 硬盘设备上的第二个分区,并且/dev/hdb5 是第二个 ATA 硬盘设备上的第一个逻辑分区。SCSI 也一样,/dev/sdb3 是第二个 SCSI 磁盘上的第三个分区。

对于您在磁盘上创建新分区,fdisk应始终是您的朋友,您只需从最后一个占用的块开始添加空间,您可以随时通过fdisk -lcat /proc/partitions

如果您不能使用fdiskparted工具创建设备,刚刚提到它?!

于 2014-12-02T20:49:27.907 回答