新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > linux存儲設(shè)備的表示方法

        linux存儲設(shè)備的表示方法

        作者: 時間:2007-04-23 來源:網(wǎng)絡(luò) 收藏

        linux存儲設(shè)備的表示方法

        本文引用地址:http://www.104case.com/article/258226.htm

        一、對于IDE接口的硬盤的兩種表示方法;



        1、IDE接口硬盤,對于整塊硬盤的兩種表示方法;


        IDE接口中的整塊硬盤在Linux系統(tǒng)中表示為/dev/hd[a-z],比如/dev/hda,/dev/hdb ... ... 以此類推,有時/dev/hdc可能表示的是CDROM ,還是以具體的fdisk -l 輸出為準(zhǔn)吧;

        另一種表示方法是hd[0-n] ,其中n是一個正整數(shù),比如hd0,hd1,hd2 ... ... hdn ;

        如果機器中只有一塊硬盤,無論我們通過fdisk -l 列出的是/dev/hda 還是/dev/hdb ,都是hd0;如果機器中存在兩個或兩個以上的硬盤,第一個硬盤/dev/hda 另一種方法表示為hd0,第二個硬盤/dev/hdb,另一種表法是hd1 ;

        感覺大家對hd0,hd1這種表示方法并不寞生,現(xiàn)在新的機器,在BIOS 中,在啟動盤設(shè)置那塊,硬盤是有hd0,hd1之類的,這就是硬盤表示方法的一種;

        對于/dev/hda 類似的表示方法,也并不寞生吧;我們在Linux通過fdisk -l 就可以查到硬盤是/dev/hda還是/dev/hdb;


        [root@localhost ~]# fdisk -l
        Disk /dev/hda: 80.0 GB, 80026361856 bytes
        255 heads, 63 sectors/track, 9729 cylinders
        Units = cylinders of 16065 * 512 = 8225280 bytes
        Device Boot Start End Blocks Id System
        /dev/hda1 * 1 970 7791493+ 7 HPFS/NTFS
        /dev/hda2 971 9729 70356667+ 5 Extended
        /dev/hda5 971 2915 15623181 b W95 FAT32
        /dev/hda6 2916 4131 9767488+ 83 Linux
        /dev/hda7 4132 5590 11719386 83 Linux
        /dev/hda8 5591 6806 9767488+ 83 Linux
        /dev/hda9 6807 9657 22900626 83 Linux
        /dev/hda10 9658 9729 578308+ 82 Linux swap / Solaris

        請注意第一行, Disk /dev/hda: 80.0 GB, 80026361856 bytes ,這個就是表示機器中只有一個硬盤設(shè)備/dev/hda ,體積大小為 80.0G;下面的就是硬盤的分區(qū),每個分區(qū)都有詳細的信息,在這里不詳細說了;


        2、IDE接口硬盤分區(qū)的兩種表示方法;



        1)硬盤分區(qū)的第一種表示方法/dev/hd[a-z]X;


        硬盤的分區(qū)也有兩種表示方法,一種是/dev/hd[a-z]X,這個a-z表示a、b、c......z ,X是一個從1開始的正整數(shù);比如/dev/hda1,/dev/hda2 .... /dev/hda6,/dev/hda7 ... ... 值得注意的是/dev/hd[a-z]X,如果X的值是1到4,表示硬盤的主分區(qū)(包含擴展分區(qū));邏輯分區(qū)從是從5開始的,比如/dev/hda5肯定是邏輯分區(qū)了;

        我 用fdisk -l 就能列出一個硬盤的分區(qū)表,比如:


        [root@localhost ~]# fdisk -l
        Disk /dev/hda: 80.0 GB, 80026361856 bytes
        255 heads, 63 sectors/track, 9729 cylinders
        Units = cylinders of 16065 * 512 = 8225280 bytes
        Device Boot Start End Blocks Id System
        /dev/hda1 * 1 970 7791493+ 7 HPFS/NTFS
        /dev/hda2 971 9729 70356667+ 5 Extended
        /dev/hda5 971 2915 15623181 b W95 FAT32
        /dev/hda6 2916 4131 9767488+ 83 Linux
        /dev/hda7 4132 5590 11719386 83 Linux
        /dev/hda8 5591 6806 9767488+ 83 Linux
        /dev/hda9 6807 9657 22900626 83 Linux
        /dev/hda10 9658 9729 578308+ 82 Linux swap / Solaris


        2)硬盤分區(qū)的第二種表示方法(hd[0-n],y);

        我們前面已經(jīng)說過了整塊硬盤也有兩種表示方法,一種是/dev/hd[a-z]的,另種方法是hd[0-n];

        一個硬盤分區(qū)首先要大確認在哪個硬盤,然后再確認他所在的位置;做個比喻,比如我住在XXX賓館YYY號房間,我僅僅是告訴別人我在XXX賓館不夠的,還要告訴他YYY房間,這樣來找我的人才能找到我;所以我們要知道一個硬盤分區(qū),除了知道/dev/hd[a-z]以外,還要知道他在哪個位置,也就有前面所說的/dev/hd[a-z]X的說法,確認了分區(qū)在/dev/hd[a-z]后,還要通過X來確認具體位置;

        本標(biāo)題中說的是另外一種表示方法 (hd[0-n],y),hd[0-n]我們知道這是硬盤的表示方法之一,如果不懂,請看看前面的東西吧;那這里的y是什么意思呢?y的值是 /dev/hd[a-z]X中的 X-1 ;

        用實例來理解吧;


        [root@localhost ~]# fdisk -l
        Disk /dev/hda: 80.0 GB, 80026361856 bytes
        255 heads, 63 sectors/track, 9729 cylinders
        Units = cylinders of 16065 * 512 = 8225280 bytes
        Device Boot Start End Blocks Id System
        /dev/hda1 * 1 970 7791493+ 7 HPFS/NTFS
        /dev/hda2 971 9729 70356667+ 5 Extended
        /dev/hda5 971 2915 15623181 b W95 FAT32
        /dev/hda6 2916 4131 9767488+ 83 Linux
        /dev/hda7 4132 5590 11719386 83 Linux
        /dev/hda8 5591 6806 9767488+ 83 Linux
        /dev/hda9 6807 9657 22900626 83 Linux
        /dev/hda10 9658 9729 578308+ 82 Linux swap / Solaris

        /dev/hda1 等同 (hd0,0)
        /dev/hda2 等同 (hd0,1) 注:看好了,這個是擴展分區(qū),在Linux還是Windows是不能掛載的;
        /dev/hda5 等同 (hd0,4)
        /dev/hda6 等同 (hd0,5)
        /dev/hda7 等同 (hd0,6)
        /dev/hda8 等同 (hd0,7)
        ... ...
        /dev/hda10 同 (hd0,9)

        對于機器中只有一個硬盤來說,無論在Linux通過/dev/hda 還是/dev/hdb ,用 hd[0-n]表示方法,都是hd0;所以如果您如果硬盤中列出來的是;


        [root@localhost ~]# fdisk -l
        Disk /dev/hdb: 80.0 GB, 80026361856 bytes
        255 heads, 63 sectors/track, 9729 cylinders
        Units = cylinders of 16065 * 512 = 8225280 bytes
        Device Boot Start End Blocks Id System
        /dev/hdb1 * 1 970 7791493+ 7 HPFS/NTFS
        /dev/hdb2 971 9729 70356667+ 5 Extended
        /dev/hdb5 971 2915 15623181 b W95 FAT32
        /dev/hdb6 2916 4131 9767488+ 83 Linux
        /dev/hdb7 4132 5590 11719386 83 Linux
        /dev/hdb8 5591 6806 9767488+ 83 Linux
        /dev/hdb9 6807 9657 22900626 83 Linux
        /dev/hdb10 9658 9729 578308+ 82 Linux swap / Solaris

        對于機器中只有一個硬盤來說,如果通過fdisk -l 列出來的是/dev/hdb的分區(qū)表;對應(yīng)關(guān)系和/dev/hda列出的分區(qū)表對應(yīng)關(guān)系一樣;

        /dev/hdb1 等同 (hd0,0)
        /dev/hdb2 等同 (hd0,1) 注:看好了,這個是擴展分區(qū),在Linux還是Windows是不能掛載的;
        /dev/hdb5 等同 (hd0,4)
        /dev/hdb6 等同 (hd0,5)
        /dev/hdb7 等同 (hd0,6)
        /dev/hdb8 等同 (hd0,7)
        ... ...
        /dev/hdb10 等同 (hd0,9)

        注意:如果機器中有兩塊硬盤,那/dev/hda 另一種表示方法就是hd0,/dev/hdb 的另一種表示方法是hd1;這樣我們就理解 (hd[0-n],y)的寫法了吧;這樣機器只有單個硬盤或者多個硬盤,我們都知道怎么寫了;對不對?可能也不對,那就請指正吧;


        二、關(guān)于SATA和SCSI接口的硬盤的兩種表示方法;


        理解方法和IDE接口的硬盤相同,只是把hd換成sd;

        如果您的機器中比如有一個硬盤是/dev/hda ,也有一個硬盤是/dev/sda ,那/dev/sda的硬盤應(yīng)該是sd0; 具體每個分區(qū)用(sd[0-n],y)的表示方法和IDE接口中的算法相同,比如/dev/sda1 就是(sd0,0);


        三、usb及1394接口的存儲設(shè)備和軟驅(qū)設(shè)備;


        usb存儲設(shè)備也目前在內(nèi)核中在兩種驅(qū)動方法,一種是模擬SCSI硬盤,通過fdisk -l 出現(xiàn)的是/dev/sd[0-n] ;如果是模擬SCSI設(shè)備的方法來驅(qū)動。那usb 存儲設(shè)備在Linux的另一種表示方法和前面所說的SCSI和SATA的相同;

        但目前新版本的內(nèi)核中,想拋棄模擬SCSI,我們通過fdisk 列系統(tǒng)存在的存儲設(shè)置時會出現(xiàn) /dev/uba 類似的;但目前這個驅(qū)動并不成熟,比如大數(shù)據(jù)量表現(xiàn)不穩(wěn)定;其實USB接口的存儲設(shè)備,在Linux表現(xiàn)還是比較差;

        1394接口存儲調(diào)備,在Linux中也是模擬SCSI,我們通過fdisk -l 后,出現(xiàn)的也是/dev/sd[0-n],另一種表示方法(sd[a-z],y)的理解請參照前面所說的; 1394接口的存儲設(shè)備在Linux表現(xiàn)極好,USB存儲如果相對1394接口的存儲表現(xiàn)來說,應(yīng)該不值不提,建議大家購買1394接口的存儲設(shè)備;

        軟驅(qū)在Linux中,是/dev/fd0設(shè)備這是一般情況,另一種表示為fd0 ;

        CDROM 或DVDROM ,以及COMBO ,一般的情況下是/dev/hdc ;看下面的例子,無論是 /dev/cdrom 還是/dev/dvd ,最后都指向了/dev/hdc;


        [root@localhost ~]# ls -la /dev/cdrom
        lrwxrwxrwx 1 root root 3 2005-12-14 /dev/cdrom -> hdc
        [root@localhost ~]# ls -la /dev/dvd
        lrwxrwxrwx 1 root root 3 2005-12-14 /dev/dvd -> hdc


        四、關(guān)于存儲設(shè)備的不同的表示方法的應(yīng)用;



        1、/dev/hd[a-z] 表示方法的應(yīng)用


        1)用于mount 掛載文件系統(tǒng)(分區(qū))之用;


        我們在前面所說的,硬盤的分區(qū)/dev/hd[a-z]X表示方法,一般是用于掛載和讀取文件系統(tǒng)之用的;


        [root@localhost ~]# fdisk -l
        Disk /dev/hda: 80.0 GB, 80026361856 bytes
        255 heads, 63 sectors/track, 9729 cylinders
        Units = cylinders of 16065 * 512 = 8225280 bytes
        Device Boot Start End Blocks Id System
        /dev/hda1 * 1 970 7791493+ 7 HPFS/NTFS
        /dev/hda2 971 9729 70356667+ 5 Extended
        /dev/hda5 971 2915 15623181 b W95 FAT32
        /dev/hda6 2916 4131 9767488+ 83 Linux
        /dev/hda7 4132 5590 11719386 83 Linux
        /dev/hda8 5591 6806 9767488+ 83 Linux
        /dev/hda9 6807 9657 22900626 83 Linux
        /dev/hda10 9658 9729 578308+ 82 Linux swap / Solaris

        比如我要掛載 /dev/hda9 到系統(tǒng)中;所以過程應(yīng)該是這樣的;


        [root@localhost ~]# mkdir /opt/data/ 注:建立掛載點目錄;
        [root@localhost ~]# mount /dev/hda9 /opt/data/ 注:掛載;

        是不是掛載好了呢?看下面的信息,顯示已經(jīng)掛載好了,所以這時我們就能向/opt/data目錄寫東西了,寫的所有東西都記錄在了/dev/hda9上;


        [root@localhost ~]# df -lh
        Filesystem 容量 已用 可用 已用% 掛載點
        /dev/hda7 11G 9.2G 1.1G 90% /
        /dev/shm 236M 0 236M 0% /dev/shm
        /dev/hda9 22G 3.9G 18G 18% /opt/data

        注意:掛載得需要內(nèi)核支持,另外分區(qū)也得建立文件系統(tǒng),請參考相關(guān)文檔 ;


        2)用于GRUB中指定Linux的根分區(qū)的位置;


        在GRUB系統(tǒng)引導(dǎo)管理器,用命令行啟動一個操作系統(tǒng)時,要通過指定Linux根/所在的硬盤分區(qū) /dev/hd[a-z]X;比如 root=/dev/hda7 ;


        2、hd[0-n] 表示方法的應(yīng)用;


        這種一般是應(yīng)用在GRUB的/boot所位于的硬盤分區(qū)的指定上;在GRUB的命令行和GRUB的配置文件menu.lst 中都要應(yīng)用到;

        比如我們要把GRUB寫到硬盤的MBR上,在GRUB的命令行模式中要通過root (hd[0-n],y)來指定;這里的root (hd[0-n],y),在GRUB中就/boot所位于的分區(qū);不要搞錯了,有時/boot和Linux的根/并不是處于同一個分區(qū)的,就看您安裝Linux時怎么安裝的了;而我們前面所說的root=/dev/hd[a-z]X來指定的是Linux 根/所位于的分區(qū);雖然有時/boot和/同處一個分區(qū),但兩種表示方法在GRUB中各有用途;明白了吧;

        比如/boot位于同一個硬盤分區(qū),就可以用類似下的方法來把GRUB寫到硬盤的MBR上;舉個例子;


        [root@localhost ~]# grub 注:運行GRUB;
        grub> root (hd0,6) 注:比如/boot位于 (hd0,6)分區(qū)上,應(yīng)該這樣
        Filesystem type is ext2fs, partition type 0x83
        grub> setup (hd0)
        Checking if /boot/grub/stage1 exists... yes
        Checking if /boot/grub/stage2 exists... yes
        Checking if /boot/grub/e2fs_stage1_5 exists... yes
        Running embed /boot/grub/e2fs_stage1_5 (hd0)... 15 sectors are embedded.
        succeeded
        Running install /boot/grub/stage1 (hd0) (hd0)1+15 p (hd0,6)/boot/grub/stage2
        /boot/grub/grub.conf... succeeded
        Done.
        grub>quit 注:退出GRUB命令行模式;

        如果您不懂,慢慢就會了,我這里寫的只是為了應(yīng)用罷了;如果您要搞懂為什么Linux的存儲設(shè)備表達上是這樣或者那樣的,還是建議您看看kernel的文檔;可能中文文檔并不能滿足您的需要,最好還是洋文的吧;




        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 舒城县| 汨罗市| 都昌县| 讷河市| 邯郸县| 稻城县| 扎鲁特旗| 江安县| 拜泉县| 西平县| 太白县| 内丘县| 舒兰市| 大石桥市| 五河县| 安达市| 中阳县| 桓仁| 天峻县| 凭祥市| 株洲县| 资兴市| 漳平市| 高雄县| 嵩明县| 睢宁县| 高雄市| 重庆市| 利津县| 车致| 华安县| 鲁甸县| 河北省| 来安县| 那坡县| 堆龙德庆县| 新丰县| 璧山县| 米脂县| 社会| 游戏|