1.一些概念
磁頭 Head
磁面 Side
一個磁面對應一個磁頭,即磁面數量等於磁頭數量
磁道 Track
一個盤面上的相同半徑的圓形區域
柱面 Cylinder
所以盤面上相同半徑的磁道組成的區域
扇區 Sector
一個磁道上的一個弧段,是磁盤的最小存儲單位
簇(塊)
Windows下如NTFS等文件系統中叫做簇;在Linux下如Ext4等文件系統中叫做塊(block)。這是一個操作系統抽象出來的概念,由多個連續的扇區組成
磁盤容量的計算:
(可以參考:https://blog.csdn.net/Veini/article/details/5069329)
Cylinder柱面數表示硬盤每面盤面上有幾條磁道,編號是從0開始,最大爲1023,表示有1024個磁道。
Head磁頭數表示磁盤共有幾個磁頭,也就是幾面盤面,編號從0開始,最大爲255,表示有256個磁頭。
Sector/Track扇區數表示每條磁道上有幾個扇區,編號從1開始,最大爲63,表示63個扇區,每個扇區爲512字節,他是磁盤的最小存儲單位。
1024個柱面 x 63個扇區 x 256個磁頭 x 512byte = 8455716864byte(即8.4G)
磁盤圖解:http://blog.51cto.com/ncwcl/200395
2.關與磁盤塊
a.從物理上看讀寫的基本單位是扇區。
b.從操作系統層面來看讀寫的基本單位是塊。
c.爲什麼要有塊的概念?對於操作系統來說,扇區的大小比較小,操作系統將多個扇區組成一個塊能方便操作系統讀取與管理。
通常情況下:
塊大小=扇區大小*2的N次方
可以參考:https://www.i3geek.com/archives/1275
3.關於磁盤讀寫
磁盤IO時的過程包括:
- 第一步,首先是磁頭徑向移動來尋找數據所在的磁道。這部分時間叫尋道時間。
- 第二步,找到目標磁道後通過盤面旋轉,將目標扇區移動到磁頭的正下方。
- 第三步,向目標扇區讀取或者寫入數據。到此爲止,一次磁盤IO。
所以,單次磁盤IO時間 = 尋道時間 + 旋轉延遲 + 存取時間。
- 對於旋轉延時,現在主流服務器上經常使用的是1W轉/分鐘的磁盤,每旋轉一週所需的時間爲60*1000/10000=6ms,故其旋轉延遲爲(0-6ms)。
- 對於存取時間,一般耗時較短,爲零點幾ms。
- 對於尋道時間,現代磁盤大概在3-15ms,其中尋道時間大小主要受磁頭當前所在位置和目標磁道所在位置相對距離的影響。
可以參考:http://www.cnblogs.com/sammyliu/p/4521315.html
4.關於磁盤分區
主引導分區(Master Boot Recorder,MBR)
主分區
擴展分區
邏輯分區
a.MBP共512字節,其中保存着:引導代碼(bootloader,446字節)+磁盤分區表(Disk Partion Table,DPT,64字節)+MagicNum(2字節)
b.啓動一個磁盤的時候總是先從MBP開始,然後從中獲取磁盤中其他分區信息,這些分區信息就保存在DPT中,然而由於每個分區需要16字節記錄,因此,正常情況下DPT中只能保存4個分區信息:
P + P + P + P
c.如果想劃分超過4個分區怎麼辦?
這時候擴展分區就派上用處了:
P + P + P + E
在一塊磁盤中,擴展分區只能有一個
由於MBR僅能保存4個分區的數據信息,如果超過4個,系統允許在額外的硬盤空間存放另一份磁盤分區信息,這就是擴展分區. 若將硬盤分成3P+E,則E實際上是告訴系統,磁盤分區表在另外的那份分區表,即擴展分區其實是指向正確的額外分區表.本身擴展分區不能直接使用,還需要額外將擴展分區分成邏輯分區才能使用,因此,用戶通過擴展分區就可以使用5個以上的分區了.
可以參考:https://my.oschina.net/aiguozhe/blog/36632
寫在最後:本篇文章只是筆記,時刻提醒自己牢記基礎。相關鏈接均以貼出。