在Linux系統中儲存裝置的兩種表示方法(轉)
摘要: 硬碟和硬碟分割槽在Linux都表示為裝置,按我們通俗的說法來說,就是怎麼來表示或描述硬碟和或硬碟分割槽,但這種描述應該是科學和具體的;比如IDE硬碟,在Linux 可以表示為 /dev/hda、/dev/hdb ... ;SCSI 介面的硬碟、SATA介面的硬碟表示為/dev/sda、/dev/sdb ... ... ;而IDE介面的硬碟/dev/hda,也可以表示為hd0 ,而 SCSI 介面的如果是 /dev/sda ,另一種表示方法是sd0;
理解兩種表示方法有何用?至少GRUB引導管理器用到這些知識;另外我們mount (掛載)檔案系統(分割槽),也會用到這些知識;
一、對於IDE介面的硬碟的兩種表示方法;
1、IDE介面硬碟,對於整塊硬碟的兩種表示方法;
IDE介面中的整塊硬碟在Linux系統中表示為/dev/hd[a-z],比如/dev/hda,/dev/hdb ... ... 以此類推,有時/dev/hdc可能表示的是CDROM ,還是以具體的fdisk -l 輸出為準吧;
另一種表示方法是hd[0-n] ,其中n是一個正整數,比如hd0,hd1,hd2 ... ... hdn ;
如果機器中只有一塊硬碟,無論我們透過fdisk -l 列出的是/dev/hda 還是/dev/hdb ,都是hd0;如果機器中存在兩個或兩個以上的硬碟,第一個硬碟/dev/hda 另一種方法表示為hd0,第二個硬碟/dev/hdb,另一種表法是hd1 ;
感覺大家對hd0,hd1這種表示方法並不寞生,現在新的機器,在BIOS 中,在啟動盤設定那塊,硬碟是有hd0,hd1之類的,這就是硬碟表示方法的一種;
對於/dev/hda 類似的表示方法,也並不寞生吧;我們在Linux透過fdisk -l 就可以查到硬碟是/dev/hda還是/dev/hdb;
[root@localhost ~]# fdisk -lDisk /dev/hda: 80.0 GB, 80026361856 bytes255 heads, 63 sectors/track, 9729 cylindersUnits = 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 ,這個就是表示機器中只有一個硬碟裝置/dev/hda ,體積大小為 80.0G;下面的就是硬碟的分割槽,每個分割槽都有詳細的資訊,在這裡不詳細說了;
2、IDE介面硬碟分割槽的兩種表示方法;
1)硬碟分割槽的第一種表示方法/dev/hd[a-z]X;
硬碟的分割槽也有兩種表示方法,一種是/dev/hd[a-z]X,這個a-z表示a、b、c......z ,X是一個從1開始的正整數;比如/dev/hda1,/dev/hda2 .... /dev/hda6,/dev/hda7 ... ... 值得注意的是/dev/hd[a-z]X,如果X的值是1到4,表示硬碟的主分割槽(包含擴充套件分割槽);邏輯分割槽從是從5開始的,比如/dev/hda5肯定是邏輯分割槽了;
我 用fdisk -l 就能列出一個硬碟的分割槽表,比如:
[root@localhost ~]# fdisk -lDisk /dev/hda: 80.0 GB, 80026361856 bytes255 heads, 63 sectors/track, 9729 cylindersUnits = 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)硬碟分割槽的第二種表示方法(hd[0-n],y);
我們前面已經說過了整塊硬碟也有兩種表示方法,一種是/dev/hd[a-z]的,另種方法是hd[0-n];
一個硬碟分割槽首先要大確認在哪個硬碟,然後再確認他所在的位置;做個比喻,比如我住在XXX賓館YYY號房間,我僅僅是告訴別人我在XXX賓館不夠的,還要告訴他YYY房間,這樣來找我的人才能找到我;所以我們要知道一個硬碟分割槽,除了知道/dev/hd[a-z]以外,還要知道他在哪個位置,也就有前面所說的/dev/hd[a-z]X的說法,確認了分割槽在/dev/hd[a-z]後,還要透過X來確認具體位置;
本標題中說的是另外一種表示方法 (hd[0-n],y),hd[0-n]我們知道這是硬碟的表示方法之一,如果不懂,請看看前面的東西吧;那這裡的y是什麼意思呢?y的值是 /dev/hd[a-z]X中的 X-1 ;
用例項來理解吧;
[root@localhost ~]# fdisk -lDisk /dev/hda: 80.0 GB, 80026361856 bytes255 heads, 63 sectors/track, 9729 cylindersUnits = 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) 注:看好了,這個是擴充套件分割槽,在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 -lDisk /dev/hdb: 80.0 GB, 80026361856 bytes255 heads, 63 sectors/track, 9729 cylindersUnits = 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的分割槽表;對應關係和/dev/hda列出的分割槽表對應關係一樣;
/dev/hdb1 等同 (hd0,0)
/dev/hdb2 等同 (hd0,1) 注:看好了,這個是擴充套件分割槽,在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)的寫法了吧;這樣機器只有單個硬碟或者多個硬碟,我們都知道怎麼寫了;對不對?可能也不對,那就請指正吧;
二、關於SATA和SCSI介面的硬碟的兩種表示方法;
理解方法和IDE介面的硬碟相同,只是把hd換成sd;
如果您的機器中比如有一個硬碟是/dev/hda ,也有一個硬碟是/dev/sda ,那/dev/sda的硬碟應該是sd0; 具體每個分割槽用(sd[0-n],y)的表示方法和IDE介面中的演算法相同,比如/dev/sda1 就是(sd0,0);
三、usb及1394介面的儲存裝置和軟碟機裝置;
usb儲存裝置也目前在核心中在兩種驅動方法,一種是模擬SCSI硬碟,透過fdisk -l 出現的是/dev/sd[0-n] ;如果是模擬SCSI裝置的方法來驅動。那usb 儲存裝置在Linux的另一種表示方法和前面所說的SCSI和SA他的相同;
但目前新版本的核心中,想拋棄模擬SCSI,我們透過fdisk 列系統存在的儲存設定時會出現 /dev/uba 類似的;但目前這個驅動並不成熟,比如大資料量表現不穩定;其實USB介面的儲存裝置,在Linux表現還是比較差;
1394介面儲存調備,在Linux中也是模擬SCSI,我們透過fdisk -l 後,出現的也是/dev/sd[0-n],另一種表示方法(sd[a-z],y)的理解請參照前面所說的; 1394介面的儲存裝置在Linux表現極好,USB儲存如果相對1394介面的儲存表現來說,應該不值不提,建議大家購買1394介面的儲存裝置;
軟碟機在Linux中,是/dev/floppy裝置這是一般情況,另一種表示為fd0 ;
CDROM 或DVDROM ,以及COMBO ,一般的情況下是/dev/hdc ;看下面的例子,無論是 /dev/cdrom 還是/dev/dvd ,最後都指向了/dev/hdc;
[root@localhost ~]# ls -la /dev/cdromlrwxrwxrwx 1 root root 3 2005-12-14 /dev/cdrom -> hdc[root@localhost ~]# ls -la /dev/dvdlrwxrwxrwx 1 root root 3 2005-12-14 /dev/dvd -> hdc
四、關於儲存裝置的不同的表示方法的應用;
1、/dev/hd[a-z] 表示方法的應用
1)用於mount 掛載檔案系統(分割槽)之用;
我們在前面所說的,硬碟的分割槽/dev/hd[a-z]X表示方法,一般是用於掛載和讀取檔案系統之用的;
[root@localhost ~]# fdisk -lDisk /dev/hda: 80.0 GB, 80026361856 bytes255 heads, 63 sectors/track, 9729 cylindersUnits = 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 到系統中;所以過程應該是這樣的;
[root@localhost ~]# mkdir /opt/data/ 注:建立掛載點目錄;[root@localhost ~]# mount /dev/hda9 /opt/data/ 注:掛載;
是不是掛載好了呢?看下面的資訊,顯示已經掛載好了,所以這時我們就能向/opt/data目錄寫東西了,寫的所有東西都記錄在了/dev/hda9上;
[root@localhost ~]# df -lhFilesystem 容量 已用 可用 已用% 掛載點/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
注意:掛載得需要核心支援,另外分割槽也得建立檔案系統,請參考相關文件 ;
2)用於GRUB中指定Linux的根分割槽的位置;
在GRUB系統引導管理器,用命令列啟動一個作業系統時,要透過指定Linux根/所在的硬碟分割槽 /dev/hd[a-z]X;比如 root=/dev/hda7 ;
2、hd[0-n] 表示方法的應用;
這種一般是應用在GRUB的/boot所位於的硬碟分割槽的指定上;在GRUB的命令列和GRUB的配置檔案menu.lst 中都要應用到;
比如我們要把GRUB寫到硬碟的MBR上,在GRUB的命令列模式中要透過root (hd[0-n],y)來指定;這裡的root (hd[0-n],y),在GRUB中就/boot所位於的分割槽;不要搞錯了,有時/boot和Linux的根/並不是處於同一個分割槽的,就看您安裝Linux時怎麼安裝的了;而我們前面所說的root=/dev/hd[a-z]X來指定的是Linux 根/所位於的分割槽;雖然有時/boot和/同處一個分割槽,但兩種表示方法在GRUB中各有用途;明白了吧;
比如/boot位於同一個硬碟分割槽,就可以用類似下的方法來把GRUB寫到硬碟的MBR上;舉個例子;
[root@localhost ~]# grub 注:執行GRUB;grub> root (hd0,6) 注:比如/boot位於 (hd0,6)分割槽上,應該這樣 Filesystem type is ext2fs, partition type 0x83grub> 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"... succeededDone.grub>quit 注:退出GRUB命令列模式;
如果您不懂,慢慢就會了,我這裡寫的只是為了應用罷了;如果您要搞懂為什麼Linux的儲存裝置表達上是這樣或者那樣的,還是建議您看看kernel的文件;可能中文文件並不能滿足您的需要,最好還是洋文的吧;
五、關於本文;
這篇關於儲存裝置在Linux中有兩種不同的表達方法,可能說的有點複雜化了;用pandonny兄的話來說:“本來是理論性的概念的東西,寫得太理論性的東西新手反而看不懂,還是描述性的往往更容易被新手理解”。
這篇文件主要是把抽象的概念具體化,我不知道初學的弟兄是否能看得懂,至少我已經盡全力了,對我來說已經是“北南技窮”。關於理論文面的文件就是翻譯過來也是極為難翻譯的,更不要說簡單的描述了;初學Linux的弟兄,慢慢實踐著來吧;實踐是檢驗真理的唯一標準,相信這一真理絕對沒錯!!千萬不要把我所說過的是真理,真理在你手中。。。。。。因為您是實踐者;
本來寫GRUB入門文件了,結果發現不寫一寫儲存裝置的表示方法不太行,所以被迫寫了這篇文章,雖然勉強,但還是寫出來了;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-939810/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在儲存過程中建立表的兩種方法儲存過程
- Linux系統在儲存技術中的幾項應用(轉)Linux
- 在LINUX環境中,哪種檔案系統儲存更安全?Linux
- 在裝完Linux系統之後自己去修改Swap分割槽的大小(兩種方法)Linux
- Linux中如何安裝RabbitMQ?在linux系統中安裝Rabbitmq的方法LinuxMQ
- windows10系統如何關閉USB儲存裝置Windows
- Linux安裝MySQL的兩種方法LinuxMySql
- Linux系統中虛擬裝置檔案的各種實用用法Linux
- Linux系統常見的三種裝置分類!Linux
- win10禁用所有usb儲存裝置方法 win10如何禁止使用usb儲存裝置Win10
- 建立安裝程式的兩種方法 (轉)
- java物件頭的兩種儲存Java物件
- 兩種“BBC”恢復損壞的Linux系統(轉)Linux
- 兩種SQL分頁方法儲存過程和遊標儲存過程SQL儲存過程
- 【轉】Mysql兩種儲存引擎的異同【MyISAM和InnoDB】MySql儲存引擎
- iSCSI儲存的4種系統架構架構
- 【實驗】兩種方法刪除表中的列與空間儲存釋放
- win10怎麼禁止usb儲存_win10系統如何禁用usb儲存裝置Win10
- ARM體系中儲存系統
- TWaver在FTTX裝置網管系統中的應用
- 在網頁中實現細線邊框的兩種方法(轉)網頁
- 在Linux下兩種方法完整執行最新的QQ和MSN(轉)Linux
- linux製作安裝包的兩種方法Linux
- 【儲存】裸裝置和OracleOracle
- Android從外部儲存裝置中儲存和載入本地檔案Android
- 在 CentOS 7.1 上安裝分散式儲存系統 CephCentOS分散式
- Linux系統安裝執行.AppImage檔案的兩種執行方法介紹LinuxAPP
- 非同步系統的兩種測試方法非同步
- Linux系統中如何檢視塊裝置資訊?Linux
- 在Linux系統安裝flash的步驟方法Linux
- 兩名學生建立開源大腦訊號儲存裝置
- 閒聊linux中的input裝置(轉)Linux
- Linux中的紅外線裝置(轉)Linux
- 在 linux 系統下安裝 perl(轉)Linux
- Spark SQL中列轉行(UNPIVOT)的兩種方法SparkSQL
- SQL Server資料庫中轉儲裝置的分析SQLServer資料庫
- Android儲存(3)– 裝置配置Android
- Linux 中模擬多種系統負載的方法Linux負載