目錄
最近公司的服務器硬盤壞了,需要換一個新的硬盤,容量是2TB,用的fdisk進行分區(qū),期間搜索分區(qū)工具,看到了關于MBR(Master Boot Record)與GPT(GUID partition table)硬盤分區(qū)表的一些區(qū)別,其中說到MBR分區(qū)表最多只能管理2TB的容量,對此查了一下《鳥哥的私房菜》發(fā)現(xiàn)是簡化過的,并沒有解決疑惑,于是查了一些資料,總結如下。
機械硬盤主要由磁盤盤片、磁頭(header)、主軸與傳動軸等組成,數(shù)據(jù)就存放在磁盤盤片中,實際圖片如下:
值得注意的是,硬盤是上下磁頭的,也就是一個盤片有兩個磁頭進行操作,如下圖所示:
機械硬盤的邏輯結構主要分為磁道、扇區(qū)和柱面,如下圖所示:
什么是磁道(track)?每個盤片都在邏輯上有很多的同心圓,最外面的同心圓就是 0 磁道。我們將每個同心圓稱作磁道,硬盤的磁道密度非常高,通常一面上就有上千個磁道。但是相鄰的磁道之間并不是緊挨著的,這是因為磁化單元相隔太近會相互產(chǎn)生影響。
那扇區(qū)(sector)又是什么呢?扇區(qū)其實是很形象的,大家都見過折疊的紙扇吧,紙扇打開后是半圓形或扇形的,不過這個扇形是由每個扇骨組合形成的。在磁盤上每個同心圓是磁道,從圓心向外呈放射狀地產(chǎn)生分割線(扇骨),將每個磁道等分為若干弧段,每個弧段就是一個扇區(qū)。每個扇區(qū)的大小是固定的,為 512Byte。扇區(qū)也是磁盤的最小存儲單位。
柱面(cylinder)又是什么呢?如果硬盤是由多個盤片組成的,每個盤面都被劃分為數(shù)目相等的磁道,那么所有盤片都會從外向內(nèi)進行磁道編號,最外側的就是 0 磁道。具有相同編號的磁道會形成一個圓柱,這個圓柱就被稱作磁盤的柱面,如下圖所示。
硬盤的大小是使用"磁頭數(shù) x 柱面數(shù) x 扇區(qū)數(shù) x 每個扇區(qū)的大小"這樣的公式來計算的。
MBR磁盤分區(qū)是一種使用最為廣泛的分區(qū)結構,它也被稱為DOS分區(qū)結構,但它并不僅僅應用于Windows系統(tǒng)平臺,也應用于Linux,基于X86的UNIX等系統(tǒng)平臺。它位于磁盤的0號扇區(qū)(一扇區(qū)等于512字節(jié)),是一個重要的扇區(qū)(簡稱MBR扇區(qū))。
MBR扇區(qū)由以下幾個部分組成:
可以看到分區(qū)表只有64字節(jié),最多只能有4個主分區(qū)或者3個主分區(qū)1個擴展分區(qū)。
那么每個分區(qū)表項占有16個字節(jié),如果是記錄起始扇區(qū)id,也不止2T的容量啊。這就需要了解一下分區(qū)表的結構和硬盤的尋址方式了。
如下圖所示,為MBR分區(qū)表的詳細結構:
可以看到,這里使用了柱面(cylinder),磁頭(header),扇區(qū)(sector)三個變量進行尋址,這種尋址方式稱為CHS,這里表示的地址已經(jīng)不是物理地址,而是邏輯地址了,又稱為LARGE尋址方式,在這種方式下,
硬盤容量=磁頭數(shù)×柱面數(shù)×扇區(qū)數(shù)×扇區(qū)大?。ㄒ话銥?12byte)
那如果磁頭數(shù)足夠多,豈不是可以管理無限的容量?答案當然是否定的,我們看到上表的最后兩項,如下圖所示:
可以看到兩個以4字節(jié)表示分區(qū)之前以及本分區(qū)的扇區(qū)數(shù),也就是可以表示的最大扇區(qū)數(shù)為:
2^32=4294967296
而每個標準扇區(qū)的容量為512字節(jié),于是能表示的最大容量為:
4294967296*512
=2199023255552Bytes(硬盤廠商采用1:1000進行單位換算,因此也有2.2TB一說)
=2147483648 KB
=2097152 MB
=2048 GB
=2TB
在網(wǎng)上還可以找到另外一個答案:
由于它(MBR)是為32位操作系統(tǒng)設計的,這就限制了它的尋址范圍為2的32次方個扇區(qū)……
其實這種說法是不嚴謹?shù)?,準確來說,MBR分區(qū)表最大最大能容納2T容量的主要原因,是因為分區(qū)表中的本分區(qū)表之前使用的扇區(qū)數(shù)以及分區(qū)的總扇區(qū)數(shù)這兩個字段為4字節(jié),因此導致的限制。
盡管后來為了支持更多的分區(qū),引入了擴展分區(qū)及邏輯分區(qū)的概念。但每個分區(qū)項仍然用16個字節(jié)存儲。
《鳥哥的linux私房菜》
(完)