分區簡介
磁軌:上圖中硬碟被一圈圈分成18等分的同心圓,這些同心圓就是磁軌.但打開硬碟,用戶不能看到這些,它實際上是被磁頭磁化的同心圓.這些磁軌是有間隔的,因為磁化單元太近會產生干擾。
扇區:每個磁軌中被分成若干等份的區域.扇區是硬碟數據存儲的最小單位。
柱面:假如一個硬碟只有上圖中的3個磁碟片,每一片中的磁軌數是相等的.從外圈開始,這些磁軌被分成了0磁軌、1磁軌、2磁軌...具有相同磁軌編號的同心圓組成面就稱作柱面.為了便於理解,柱面可以看作沒有底的鐵 桶.從上圖可以看出,柱面數就是磁碟上的磁軌數.柱面是硬碟分區的最小單位.因此,一個硬碟的容量=柱面*磁頭*扇區*512。
簇:扇區是硬碟數據存儲的最小單位,但作業系統無法對數目眾多的扇區進行定址,所以作業系統就將相鄰的扇區組合在一起,形成一個簇,然後再對簇進行管理.每個簇可以包括2、4、8、16、32、64個扇區
硬碟的分區
要掌握硬碟的分區,需要掌握MBR、擴展分區、邏輯分區的概念。
一個是放置該硬碟的信息區,稱之為主引導記錄(MBR,Main Boot Record),一個是實際檔案數據放置的地方.其中,MBR是整個硬碟最重要的區域,一旦MBR物理實體損壞時,則該硬碟就差不多報廢了,一般來說,MBR有512個位元組,且可以分為兩個部分。
(1)第一部分有446個位元組,用於存放引導代碼,即是bootloader。
(2)第二部分有64個位元組,用於存放磁碟分區表.其中,每個分區的信息需要用16個位元組來記錄。因此,一個硬碟最多可以有4個分區,這4個分區稱之為主分區和擴展分區(extended)。
註:通常所說的"硬碟分區"就是指修改磁碟分區表,它定義了"第n個磁碟塊是從第x個柱面到第y個柱面".因此,當系統要讀取第n個磁碟塊時,就是去讀硬碟上第x個柱面到第y個柱面的信息。
由於擴展分區只能有一個,所以這4個分區可以是4個主分區或者3個主分區加1個擴展分區,如下所示:
P + P + P + P
P + P + P + E
重點說明的是,擴展分區不能直接使用,還需要將其劃分為邏輯分區才行,這樣就產生了一個問題,既然擴展分區不能直接使用,但為什麼還要劃分出一定的空間來給擴展分區呢?這是因為,如果用戶想要將硬碟劃分為5個分區的話,那該如何?此時,就需要擴展分區來幫忙了。
由於MBR僅能保存4個分區的數據信息,如果超過4個,系統允許在額外的硬碟空間存放另一份磁碟分區信息,這就是擴展分區.若將硬碟分成3P+E,則E實際上是告訴系統,磁碟分區表在另外的那份分區表,即擴展分區其實是指向正確的額外分區表.本身擴展分區不能直接使用,還需要額外將擴展分區分成邏輯分區才能使用,因此,用戶通過擴展分區就可以使用5個以上的分區了。
Attention!!!
(1)實際上,不建議用戶將硬碟分為4個主分區,這是因為,假如一個20GB的硬碟,若4個主分區占據了15GB的空間,則剩下的5GB空間完全不能使用,因為已經沒有多餘的分區表可以記錄這些空間了。
(2)考慮到磁碟的連續性,一般建議將擴展分區放在最後面的柱面內。
(3)理論上允許一個硬碟只有1個主分區,其它空間都分配給擴展分區。
磁碟分區
在Windows作業系統中,是先將物理地址分開,再在分區上建立目錄.在Windows作業系統中,所有路徑都是從盤符開始,如C://program file。
Linux正好相反,是先有目錄,再將物理地址映射到目錄中。在Linux作業系統中,所有路徑都是從根目錄開始。Linux默認可分為3個分區,分別是boot分區、swap分區和根分區。
無論是Windows作業系統,還是Linux作業系統,每個分區均可以有不同的檔案系統,如FAT32、NTFS、Yaffs2等。
(1)boot分區
該分區對應於/boot目錄,約100MB.該分區存放Linux的Grub(bootloader)和核心源碼。用戶可通過訪問/boot目錄來訪問該分區.換句話說,用戶對/boot目錄的操作就是操作該分區。
(2)swap分區
該分區沒有對應的目錄,故用戶無法訪問。
Linux下的swap分區即為虛擬記憶體.虛擬記憶體用於當系統記憶體空間不足時,先將臨時數據存放在swap分區,等待一段時間後,然後再將數據調入到記憶體中執行.所以說,虛擬記憶體只是暫時存放數據,在該空間內並沒有執行。
Ps:虛擬記憶體
虛擬記憶體是指將硬碟上某個區域模擬為記憶體.因此虛擬記憶體的實際物理地址仍然在硬碟上.虛擬記憶體,或者說swap分區只能由系統訪問,其大小為物理記憶體的2倍。
(3)根分區
在Linux作業系統中,除/boot目錄外的其它所有目錄都對應於該分區.因此,用戶可通過訪問除/boot目錄外的其它所有目錄來訪問該分區。
Attention!!!
(1)在Linux作業系統中,用戶可根據需要進行修改分區.修改後的分區中,同一目錄下的檔案可能在不同分區中.比如/home目錄下有a、b、c三個目錄,可將不同的分區掛載到這三個目錄下,這種操作是允許的。
(2) 邏輯分割的數量依作業系統而不同,在Linux系統中,IDE硬碟最多有59個) 邏輯分割(5號到63號), SATA硬碟則有11個) 邏輯分割(5號到15號)。 (鳥哥版的)
不過根據最新的 linux核心技術規範 中指示,邏輯分區可以無限。
<1>硬碟上至少有1個主分區。
<2>邏輯分區不能再進行分區。
(3)Linux分區目錄和"盤符"的關係:
假如硬碟安裝在IDE1的主盤,並用戶想分區成6個可以使用的硬碟分區,則可以採用下面兩種方式。
方式一:採用3個主分區和3個邏輯分區
方式二:採用1個主分區和5個邏輯分區
當然還有其他的分區方式,只要滿足上述說的規則就行
安裝Linux時,默認分為三個區,分別是/boot分區、根分區和swap分區.這三個分區分別對應的盤符是hda1、hda2、hda3。
(4)Linux允許使用fdisk -l命令和df -h命令來查詢其硬碟分區.其中,df無法顯示出swap分區的大小。
[root@localhost /]#df -h
檔案系統 容量 已用 可用 已用% 掛載點
/dev/hda2 8.8GB 3.1GB 5.3GB 38% / (根分區)
/dev/hda1 99MB 9.2MB 85MB 10% /boot (boot分區)
(5)在PC機下,A、B盤並不存在,這兩個盤在Linux下類似於hda1/hda3,而C糟類似於hda2,D、E、F盤類似於hda5、hda6、hda7。
(6)swap分區不對應"盤符"。
(7)若硬碟的MBR已壞,則該磁碟就不能再作為引導盤,只能作為數據盤.因為MBR位於硬碟的起始處,用戶不能通過軟體進行修復,也不能跳過起始處.而硬碟中間的某個磁軌壞了,用戶可以軟體修復,也可以跳過該磁軌。
嵌入式分區
嵌入式系統可以分為4個區,分別是bootloader、para、kernel、根分區等,與Windows、Linux分區不同。
(1)在嵌入式系統中,沒有swap分區,只有實際的物理空間。
(2)bootloader、para、kernel這三個分區的功能類似於Linux系統中的/boot分區,這三個分區分別存放嵌入式系統的啟動代碼和核心。
註:Linux系統中/boot分區記憶體放著linux啟動代碼和核心源碼。
(3)根分區(/)可以構造,其功能類似於Linux系統中的根分區.在這個分區中可以創建許多目錄,比如/root、/home、/usr等,但不能創建/boot目錄。
(4)分區bootloader、para、kernel只能由地址來區分,而根分區只能由目錄來區分。
(5)嵌入式系統的驅動程式、上層軟體都放在根分區.在嵌入式系統啟動後,系統無法查看到bootloader、para、kernel這三個分區。