Latest News

Home » Linux主機伺服器 » 為什麼硬碟只能有四個主分區

為什麼硬碟只能有四個主分區

為什麼硬碟只能有四個主分區

LinuxBBSIDEthreadBlog
   硬碟最多分為4個主分區,這是一個常識可是很少告訴為什麼這麼分,網上找了兩篇不錯的文章應該回答清楚了這個問題
1、PC行業標準中一個硬碟只能分四個分區.這樣的四個分區在不同的操作系統中被冠以不同的名稱他可能叫partition (主分區)或是slice ,但是無論他們怎麼叫,這些系統都支援這樣的四個分區,都可以識別分區的起始位置和大小等訊息.這裡我把這樣的分區用一個最常用的詞來命名:主分區(primary partition).為什麼一個硬碟只能分四個主分區呢?這是由個人電腦初期的設計架構決定的.一開始,PC被設計成這樣的啟動過程,開機時主板BIOS進行自檢,當一切OK後,就開始讀取硬碟的第一個扇區,一個扇區的大小是512位元組,這是電腦工業裡的標準,無論什麼硬碟,一個扇區的大小都是512位元組.BIOS把這512位元組的內容讀出來並執行.這512位元組被叫做MBR(master boot record)主引導記錄) .這512自己包括了硬碟最重要的訊息:分區表.由於空間只有區區512位元組,所以分區表的大小就有很大限制,他被設計成十分小但是又足夠描述硬碟的分區情況.內含分區的開始扇區,結束扇區,引導標誌,分區類型等等.每個分區訊息用16個位元組表示,四個分區就用掉了16X4=64個位元組,這64個位元組分佈在MBR的第467-510位元組,後面緊接著兩個位元組AA和55被稱為幻數(Magic Number),BOIS讀取MBR的時候總是檢查最後是不是有這兩個幻數,如果沒有就被認為是一個沒有被分區的硬碟.儘管分區表中明明有資料,也會報錯,告訴你系統不存在.所以,對硬碟加密的簡單辦法就是從MBR中察掉這兩個位元組.那麼這個硬碟掛到任何電腦上都會顯示為一個沒有分區的空白硬碟.但是只要把這兩個位元組重新寫上,資料又能讀出.當然,你得知道怎麼重新寫上.



2、主分區,也稱為主磁碟分區,和延伸分區、邏輯分區一樣,是一種分區類型。主分區中不能再劃分其他類型的分區,因此每個主分區都相當於一個邏輯磁碟(在這一點上主分區和邏輯分區很相似,但主分區是直接在硬碟上劃分的,邏輯分區則必須建立於延伸分區中)。

實際上在早期的硬碟分區中並沒有主分區、延伸分區和邏輯分區的概念,每個分區的類型都是現在所稱的主分區。由於硬碟僅僅為分區表保留了64個位元組的存儲空間,而每個分區的參數佔據16個位元組,故主引導扇區中總計只能存儲4個分區的資料。也就是說,一塊物理硬碟只能劃分為4個邏輯磁碟。在具體的應用中,4個邏輯磁碟往往不能滿足實際需求。為了建立更多的邏輯磁碟供操作系統使用,引入了延伸分區和邏輯分區,並把原來的分區類型稱為主分區。

為什麼硬碟只能最多有四個主分區

   本文為搜尋網上資料並加以總結,僅供參考:      MBR(Master Boot Recorder)主要開機扇區,放置硬碟的訊息。MBR 可以說是整個硬碟最重要的地方了,因為在 MBR 裡面記錄了兩個重要的東西,分別是:開機管理程式,與磁碟分區表 ( partition table )。所以我們所做的硬碟分區,也就是在修改partition table。

   由於這個 MBR 區塊的容量有限,所以,當初設計的時候,就只有設計成 4 個分區紀錄(這個說法不太準確,下文有詳細說明),這些分區記錄就被稱為 Primary ( 主分區 ) 及 Extended ( 延伸分區 ) ,也就是說,一顆硬碟最多可以有 4 個 Primary + Extended 的扇區,其中,Extended 只能有一個,因此,你如果要分區成四塊磁碟分區的話,那麼最多就是可以:

P + P + P + P

P + P + P + E

的情況來分區了。需要特別留意的是,如果上面的情況中, 3P +E 只有三個『可用』的磁碟,如果要四個都『可用』,就得分區成 4P 了!( 因為 Extended 不能直接被使用,還需要分區成 Logical 才行)

思考一:如果我要將我的大硬碟暫時分區成四個 partition ,同時,還有其它的空間可以讓我在未來的時候進行規劃,那麼該如何分區?

由剛剛的說明,我們可以知道, Primary + Extended 最多只能有四個 partition,而如果要超過 5 個 partition 的話,那麼就需要 Extended 的幫忙。因此,在這個例子中,我們千萬不能分區成四個 Primary 為什麼呢?假如您是一個 20 GB 的硬碟,而 4 個 primary 共用去了 15 GB ,您心想還有 5 GB 可以利用對吧?錯!剩下的 5 GB 完全不能使用,這是因為已經沒有多餘的 partition table 紀錄區可以記錄了,因此也就無法進行額外的分區,當然囉,空間也就被浪費掉了!因此,請千萬注意,如果您要分區超過 4 槽以上時,請記得一定要有 Extended 分區區,而且必須將所有剩下的空間都配置給 Extended ,然後再以 logical 的分區區來規劃 Extended 的空間。

思考二:我可不可以僅分區 1 個 Primary 與 1 個 Extended 呢?

當然可以!基本上, Logical 可以有 64 個,因此,你可以僅分區一個主分區,並且將所有其它的分區都給 Extended ,利用 Logical 分區來進行其它的 partition 規劃即可!

思考三:假如我的硬碟安裝在 IDE 1 的 Master ,並且我想要分區成 6 個可以使用的硬碟扇區,那麼每個磁碟在 Linux 底下的代號為何?

說明:

由於硬碟在 Primary + Extended 最多可以有四個,因此,在 Linux 底下,已經將 partition table 1 ~ 4 先留下來了,如果只用了 2 個 P + E 的話,那麼將會空出兩個 partition number 呦!再詳細的說明一下,假設我將四個 P + E 都用完了。其中Extended /dev/hda4內含三個邏輯分區。

實際可以使用的是 /dev/hda1, /dev/hda2, /dev/hda3, /dev/hda5, /dev/hda6, /dev/hda7 這六個 partition!至於 /dev/hda4 這個 Extended 扇區本身僅是用來規劃出讓 Logical 可以利用的磁碟空間而已!

那麼萬一我只想要分區 1 個 Primary 與 1 個 Extended 呢?

因為 1~4 號已經被預留下來了,所以第一個 Logical 的代號由 5 號開始計算起來,而後面在被規劃的,就以累加的模式增加磁碟代號囉!而其中 /dev/hda3, /dev/hda4 則是空的,被保留下來的代號。

這個問題,結合歷史來說會說得比較準確。為什麼最多只可以分四個主要分區,並不是單由操作系統所決定的。

第一,為什麼一個扇區只有512位元組,為什麼不是1024位元組呢?

首先,我想說一個扇區是多少位元組是可以自己(硬碟生產廠家)定義的,可以是1024位元組的。所以說,一個扇區是512位元組並不是理論值,而是習慣值。也就是一個扇區的大小為512位元組對於硬碟的生產廠家來說都是習慣的這樣定義了,誰也不想變更這種習慣。

第二,硬碟的第一扇區可以分成三個部分:第一部分MBR,需要佔用446位元組,第二部分DPT,需要佔用64位元組,這是因為一個分區表需要佔用16位元組,64/16=4,所以剛好能存放四個分區的表,這就是為什麼只能分四個分區。還有兩個位元組就用來存放結束標誌。這樣

446+64+2=512位元組。

對硬碟加密其實就是改寫最後兩個位元組的結束標誌。

試想如果當初硬碟廠家將一個扇區設定成1024位元組,還是只能分四個分區嗎?邏輯磁碟機也需要分區表,它存放在延伸分區的第一扇區,所以邏輯磁碟機也不是隨便想分多少就分多少的。

這些都是一些硬體的知識。

有很多的問題都是歷史遺留下來的,要想問個究竟需要對電腦的發展歷史有瞭解。前人所做的一切,不實用了的都被拋棄或改進了,拋棄了就不說了,改進的還是會受到歷史的影響。前端時間有個朋友問我為什麼intel和nvida要爭是CPU還是GPU重要,瞭解一下CPU的發展史和GPU的發展史很容易就能想到了。這樣就不說了。

About

發佈留言