整理自《鳥哥的Linux私房菜》,整理者:華科小濤http://www.cnblogs.com/hust-ghtao/
我們都知道一塊磁盤是可以被分成多個分區(partition)的,以Windows觀點來看,你可能會有一塊磁盤並且將它分區成C,D,E盤。那個C,D,E就是分區。但是Linux的設備都是以文件形式存在,那么分區的文件名又是什么?如何進行磁盤分區,磁盤分區有哪些限制?
1. 磁盤的連接方式與設備文件名的關系
個人計算機常見的磁盤接口有兩種,分別是IDE接口和SATA接口,目前主流的已經是SATA接口了。我們稱可連接到IDE接口的設備成為IDE設備,不管是磁盤還是光盤。
以IDE接口來說,主機會提供兩個IDE接口,每個接口連接兩個設備,所以最多可以連接到4個設備。每個接口的IDE設備又有Master和Slave之分。4個設備的文件名如表所示。
再以SATA接口來說,由於SATA/USB/SCSIA等磁盤接口都是使用SCSI模塊來驅動的,因此這些接口的磁盤設備文件名都是使用SCSI模塊來驅動的,因此這些接口的磁盤設備文件名都是/dev/sd[a-p]的格式。但是與IDE接口不同的是,SATA/USB接口的磁盤設備文件名根本就沒有一定的順序,順序是由Linux內核檢測到磁盤的順序決定的。
2. 磁盤的組成
磁盤的組成主要有:
- #圓形的盤片(主要記錄數據的部分);
- #機械手臂與機械手臂上的磁頭(可讀寫盤片上的數據);
- #主軸馬達,可以轉動盤片,讓機械手臂的磁頭在盤片上讀寫數據。
而盤片的組成:
- $扇區為最小的物理存儲單位,每個扇區512B;
- $將扇區組成一個園,那就是柱面,柱面是分區的最小單位;
- $第一個扇區最重要,有硬盤主引導記錄MBR和分區表,其中MBR446B,分區表64B。
各種接口的磁盤在Linux中的文件名分別是:
- /dev/sd[a-p][1-15]:表示SCSI,SATA,USB,Flash等接口的磁盤文件名。
- /dev/hd[a-d][1-63]:為IDE接口的磁盤文件名。
3.磁盤分區表
那磁盤是怎么分區的呢,總不能拿鋸子來割吧!柱面是文件系統的最小單位,也是分區的最小單位,我們就利用參考柱面號碼的方式來進行分區。其實分區的本質就是:在分區表設置每個區的起始柱面和結束柱面號碼。
在分區表所在的64B容量中,總共分為4組記錄區,每個記錄區記錄了對應分區的起始柱面和結束柱面的號碼。若將硬盤以長條形式來看,然后將柱面以柱形圖來看,那么64B的記錄區段如圖所示:
假設上面的硬盤設備文件名為/dev/hda時,那么這4個分區在Linux系統中的設備文件名如下所示,文件名后面會再接一個數字,這個數字與分區的位置有關。
-
P1:/dev/hda1
-
P2:/dev/hda2
-
P3:/dev/hda3
-
p4:/dev/hda4
由於分區表只有64B,最多只能容納4個分區,這4個分區被稱為主分區或擴展分區。
總結一下:
-
其實所謂的分區,只是針對那64B的分區表進行設置而已。
-
硬盤的默認分區表僅能寫入4組分區信息。
-
這4組分區信息我們稱為主或擴展分區。
-
分區的最小單位是柱面。
-
當系統要寫入磁盤時,一定要參考磁盤分區表,才能針對某個分區進行數據的處理。
上面我們介紹了分區的基本知識,讓我們回頭想下,為什么要分區?
-
數據的安全性。不同分區使不同類型的數據隔離,既保證數據安全也便於管理。
-
系統的性能。由於分區將數據集中在某個柱面的區段,由於數據集中了將有助於數據讀取的速度與性能。