<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    Linux中的設備文件與設備號

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接

    設備文件與設備號

     

    在Linux下,一切皆文件,設備也不例外,為了管理這些設備,系統為它們各自都編了號,而每個設備號又分為主設備號次設備號。主設備號用來區分不同類型的設備,而次設備號用來區分同一類型內的多個設備(及其設備分區)。
    一個Linux系統,當前所有注冊設備的主設備號可以通過/proc接口查看:

    [root@localhost lenky]# cat /proc/devices
    Character devices:
      1 mem
      4 /dev/vc/0
      4 tty
      4 ttyS
      5 /dev/tty
      5 /dev/console
      5 /dev/ptmx
      7 vcs
     10 misc
     13 input
     14 sound
     21 sg
     29 fb
     99 ppdev
    116 alsa
    128 ptm
    136 pts
    162 raw
    180 usb
    189 usb_device
    202 cpu/msr
    203 cpu/cpuid
    251 hidraw
    252 usbmon
    253 bsg
    254 rtc
    
    Block devices:
      1 ramdisk
      2 fd
    259 blkext
      7 loop
      8 sd
      9 md
     11 sr
     65 sd
     66 sd
     67 sd
     68 sd
     69 sd
     70 sd
     71 sd
    128 sd
    129 sd
    130 sd
    131 sd
    132 sd
    133 sd
    134 sd
    135 sd
    253 device-mapper
    254 mdp
    [root@localhost lenky]#
    

    字符設備與塊設備的主設備號并不沖突,所有兩個都可以有主設備號為1的設備,如果要繼續查看次設備號,那么可以通過直接ls -l來查看,比如查看主設備號為8的設備的次設備號:

    [root@localhost lenky]# ls -Rl /dev/* | grep " 8,"
    brw-rw----. 1 root disk      8,   0 Jan 12 06:24 /dev/sda
    brw-rw----. 1 root disk      8,   1 Jan 12 06:24 /dev/sda1
    brw-rw----. 1 root disk      8,   2 Jan 12 06:24 /dev/sda2
    brw-rw----. 1 root disk      8,  16 Jan 12 06:25 /dev/sdb
    brw-rw----. 1 root disk      8,  17 Jan 12 06:25 /dev/sdb1
    brw-rw----. 1 root disk      8,  32 Jan 12 06:29 /dev/sdc
    brw-rw----. 1 root disk      8,  33 Jan 12 06:29 /dev/sdc1
    brw-rw----. 1 root disk      8,  34 Jan 12 06:29 /dev/sdc2
    brw-rw----. 1 root disk      8,  35 Jan 12 06:29 /dev/sdc3
    [root@localhost lenky]#
    

    上面的0,1,2,16,17等都是次設備號,用于區分標記各個sd硬盤或分區。查看系統所有的塊設備:

    [root@localhost lenky]# grep ^ /sys/class/block/*/dev
    /sys/class/block/dm-0/dev:253:0
    /sys/class/block/dm-1/dev:253:1
    /sys/class/block/dm-2/dev:253:2
    /sys/class/block/fd0/dev:2:0
    /sys/class/block/loop0/dev:7:0
    /sys/class/block/loop1/dev:7:1
    /sys/class/block/loop2/dev:7:2
    /sys/class/block/loop3/dev:7:3
    /sys/class/block/loop4/dev:7:4
    /sys/class/block/loop5/dev:7:5
    /sys/class/block/loop6/dev:7:6
    /sys/class/block/loop7/dev:7:7
    /sys/class/block/ram0/dev:1:0
    /sys/class/block/ram10/dev:1:10
    /sys/class/block/ram11/dev:1:11
    /sys/class/block/ram12/dev:1:12
    /sys/class/block/ram13/dev:1:13
    /sys/class/block/ram14/dev:1:14
    /sys/class/block/ram15/dev:1:15
    /sys/class/block/ram1/dev:1:1
    /sys/class/block/ram2/dev:1:2
    /sys/class/block/ram3/dev:1:3
    /sys/class/block/ram4/dev:1:4
    /sys/class/block/ram5/dev:1:5
    /sys/class/block/ram6/dev:1:6
    /sys/class/block/ram7/dev:1:7
    /sys/class/block/ram8/dev:1:8
    /sys/class/block/ram9/dev:1:9
    /sys/class/block/sda1/dev:8:1
    /sys/class/block/sda2/dev:8:2
    /sys/class/block/sda/dev:8:0
    /sys/class/block/sdb1/dev:8:17
    /sys/class/block/sdb/dev:8:16
    /sys/class/block/sdc1/dev:8:33
    /sys/class/block/sdc2/dev:8:34
    /sys/class/block/sdc3/dev:8:35
    /sys/class/block/sdc/dev:8:32
    /sys/class/block/sr0/dev:11:0
    [root@localhost lenky]#
    

    關于每個主設備號:次設備號對應設備的功能在Linux幫助文檔里可以找到:http://lxr.linux.no/

    在內核2.6.9之后,Linux系統上出現了一種名為device-mapper的存儲映射機制,這種機制的作用簡單來說就是給用戶提供簡單方便而又豐富的存儲管理接口,在這種機制以及相關工具的幫助下,用戶能夠方便的自定義存儲資源管理策略。

    通過一些映射規則,device-mapper機制能夠從原有的物理磁盤或邏輯磁盤中劃分映射出新的邏輯磁盤,可以看到這是一個遞歸的映射機制,理論上可無限迭代。舉個例子,系統有物理磁盤A和B,從物理磁盤A中映射出新的邏輯磁盤C、D、E,從物理磁盤B中映射出新的邏輯磁盤F、G,又可以從物理磁盤A和邏輯磁盤F中映射出新的邏輯磁盤H,等等。關于這方面,請參考:http://www.ibm.com/developerworks/cn/linux/l-devmapper/http://sources.redhat.com/dm/等資源,不管是原物理磁盤還是通過device-mappe機制映射出來的新邏輯磁盤,在Linux操作系統看來都一樣,一切皆文件,復雜邏輯被隔離在底部。

    我系統使用的dm磁盤如下:

    [root@localhost lenky]# ls -l /dev/dm-*
    brw-rw----. 1 root disk 253, 0 Jan 12 06:24 /dev/dm-0
    brw-rw----. 1 root disk 253, 1 Jan 12 06:24 /dev/dm-1
    brw-rw----. 1 root disk 253, 2 Jan 12 06:24 /dev/dm-2
    [root@localhost lenky]# ls -l /dev/mapper/*
    crw-rw----. 1 root root 10, 236 Jan 12 06:24 /dev/mapper/control
    lrwxrwxrwx. 1 root root       7 Jan 12 06:24 /dev/mapper/VolGroup-lv_home -> ../dm-2
    lrwxrwxrwx. 1 root root       7 Jan 12 06:24 /dev/mapper/VolGroup-lv_root -> ../dm-0
    lrwxrwxrwx. 1 root root       7 Jan 12 06:24 /dev/mapper/VolGroup-lv_swap -> ../dm-1
    [root@localhost lenky]#
    

    轉載請保留地址:http://www.lenky.info/archives/2012/02/1141 或http://lenky.info/?p=1141

     

    附加筆記:

     

    [root@localhost lenky]# ls -Rl /dev/* | grep " 8,"
    brw-rw----. 1 root disk      8,   0 Jan 12 06:24 /dev/sda
    brw-rw----. 1 root disk      8,   1 Jan 12 06:24 /dev/sda1
    brw-rw----. 1 root disk      8,   2 Jan 12 06:24 /dev/sda2

    一般說的各個分區相加等于硬盤,有個隱含說明就是硬盤內各個分區的硬盤存儲空間容量相加等于硬盤的硬盤存儲空間容量。

     

    一個硬盤有一個描述硬盤的信息,而一個分區有一描述分區的信息,將硬盤內各個分區的描述分區的信息拼接在一起也得不到關于硬盤的信息,所以給硬盤配上一個次設備號是有必要不多余的。

     

    [root@localhost lenky]# ls -Rl /dev/* | grep " 8,"
    brw-rw----. 1 root disk      8,   0 Jan 12 06:24 /dev/sda
    brw-rw----. 1 root disk      8,   1 Jan 12 06:24 /dev/sda1
    brw-rw----. 1 root disk      8,   2 Jan 12 06:24 /dev/sda2
    brw-rw----. 1 root disk      8,  16 Jan 12 06:25 /dev/sdb
    brw-rw----. 1 root disk      8,  17 Jan 12 06:25 /dev/sdb1
    brw-rw----. 1 root disk      8,  32 Jan 12 06:29 /dev/sdc
    brw-rw----. 1 root disk      8,  33 Jan 12 06:29 /dev/sdc1
    brw-rw----. 1 root disk      8,  34 Jan 12 06:29 /dev/sdc2
    brw-rw----. 1 root disk      8,  35 Jan 12 06:29 /dev/sdc3

    我們看到/dev/sd*設備名的設備類型(即指的是IDE硬盤),這里有三個不同的IDE硬盤,其主設備號以及其分區的主設備號都是8。

    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全