2013-11-22 56 views
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 

我想從/proc/partitions輸出物理磁盤(/dev/sda)和邏輯磁盤(/dev/sda1)之間進行區分。的/ proc /分區主次編號來檢測物理磁盤和分區

  1. 一個簡單的方法我看到的是一些正則表達式來檢查它是否符合整數結束或不
  2. 當我看到我的機器上輸出sda具有比所有sdaN
  3. 用於檢查至少次要值的/sys/block/[NAME]存在所以我會試着去閱讀/sys/block/sdaN目錄(這會失敗)和/sys/block/sda(這會成功)

我不知道哪一個是可靠的,有沒有其他辦法?

而且我怎麼能可靠地通過微小的數字

  • 做出相似的樹型結構sda : {sda1, sda2, sda3, sda4, sda4}, sdb : {sdb1}

    1. 僅僅通過它的名字
    2. 又把眼光投向/sys/block
    3. 位置(是不是證實sda1的意志總是會出現在sda之後嗎?例如邏輯分區條目總是會出現在物理磁盤條目之後?)
  • +0

    你知道,特定塊設備的所有分區應該是父目錄下的子目錄嗎? – Petesh

    +0

    嘗試命令'lsblk' – Peter

    回答

    0

    看起來您在主分區和輔助分區之間沒有很好的區分:

    分區通常可以是主類型(最多四個),擴展(最多一個)或邏輯(包含在擴展分區內)。每個分區都有一個包含代碼的類型字段。這決定了計算機操作系統或分區文件系統。

    一次(最多4)1-4, 擴展(最大1)1-4, 邏輯5

    當涉及到分區的命名,你通常可以看到硬盤的設備被命名爲/ dev/hdx或/ dev/sdx,其中x取決於硬件配置。

    分區號,從1開始計數。因此,四個(可能的)主分區編號爲1到4.邏輯分區計數始終從5開始。因此/ dev/hda2是第一個ATA硬盤上的第二個分區磁盤設備,而/ dev/hdb5是第二個ATA硬盤設備上的第一個邏輯分區。與SCSI相同,/ dev/sdb3是第二個SCSI磁盤上的第三個分區。

    爲了在磁盤上創建新的分區,fdisk應該永遠是你的朋友,你只需要添加從最後一個獲取塊開始的空間,在那裏你可以通過fdisk -l或者#cat/proc /分區

    如果您無法使用fdisk或parted工具創建設備,只是提到它?