在前文《磁盤開篇:扒開機械硬碟堅硬的外衣!》中,我們了解了機械硬碟的物理構造,是由磁盤面,磁道、扇區等更小的單位組成的,如下圖:

磁區是作業系統對磁盤進行管理的第一步,這也是我們任何一個計算機使用者都非常熟悉的概念,例如Windows下的C、D、E、F盤,那么請思考一下,如果你是作業系統的設計者,讓你把整塊磁盤分成C、D等磁區,你會怎么分呢?
為了方便討論,我們這里你要分的硬碟是有50個盤面,3000個柱面,我們給出兩種方案
- 方案一: 50個盤面,C盤是0-10盤面, D盤是10-20個盤面,……
- 方案二:3263個柱面,C盤0-1000個柱面,D盤1001-20001個柱面,……
接下來我們來討論下那種方案更優秀,這得從磁盤的讀寫延時角度說起,讀寫原理說起來也簡單,就是磁頭要找到指定的磁道,指定的扇區,進而把資料讀取出來或者寫入進去的程序,這個程序分成如下三步:
- 第一步,首先是磁頭徑向移動來尋找資料所在的磁道,這部分時間叫尋道時間,尋道時間,現代磁盤大概在3-15ms,其中尋道時間大小主要受磁頭當前所在位置和目標磁道所在位置相對距離的影響
- 第二步,找到目標磁道后通過盤面旋轉,將目標扇區移動到磁頭的正下方,這部分時間叫旋轉延遲,現在主流服務器上經常使用的是1W轉/分鐘的磁盤,每旋轉一周所需的時間為60*1000/10000=6ms,故其旋轉延遲為(0-6ms)
- 第三步,向目標扇區讀取或者寫入資料,這部分時間叫存取時間,這個是電磁操作,所以一般耗時較短,為零點幾ms,
到此為止,單次磁盤IO時間 = 尋道時間 + 旋轉延遲 + 存取時間
磁區上采用哪一種方案,最主要看的是那種方式性能更快,在磁盤磁區的使用中,存在一個基本事實,那就是同一磁區下的資料經常會一起讀取,兩種方案的對于旋轉延遲、和存取時間上表現的性能是一樣的,主要區別是在尋道時間的表現上:
假如采用第一種,那么這樣磁頭就需要在3000多個磁道間不停地跳來跳去,這樣磁盤的尋道時間就降不下來,而對于方案二,假如對于磁盤C,只需要在磁頭在1-1000個磁道間移動就可以了,大大降低了尋道時間,
所以所有的作業系統采用的都是方案二,沒有用方案一的,如果你在Linux下使用過fdisk進行過磁區的話可以注意到以下資訊,


磁區的程序就是你輸入起始柱面號和截至柱面號的程序,不過在實際中,磁區并不能從0號柱面開始的,因為磁盤的第一個磁道對應的柱面會被用來安裝引導加載程式以及磁盤磁區表,
所以,作業系統通過按磁道對應的柱面劃分磁區,來降低磁盤IO所花費的的尋道時間 ,最終提高磁盤的讀寫性能

開發內功修煉之硬碟篇專輯:
- 1.磁盤開篇:扒開機械硬碟堅硬的外衣!
- 2.磁盤磁區也是隱含了技術技巧的
- 3.我們怎么解決機械硬碟既慢又容易壞的問題?
- 4.拆解固態硬碟結構
- 5.新建一個空檔案占用多少磁盤空間?
- 6.只有1個位元組的檔案實際占用多少磁盤空間
- 7.檔案過多時ls命令為什么會卡住?
- 8.理解格式化原理
- 9.read檔案一個位元組實際會發生多大的磁盤IO?
- 10.write檔案一個位元組后何時發起寫磁盤IO?
- 11.機械硬碟隨機IO慢的超乎你的想象
- 12.搭載固態硬碟的服務器究竟比搭機械硬碟快多少?
我的公眾號是「開發內功修煉」,在這里我不是單純介紹技術理論,也不只介紹實踐經驗,而是把理論與實踐結合起來,用實踐加深對理論的理解、用理論提高你的技術實踐能力,歡迎你來關注我的公眾號,也請分享給你的好友~~~
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/202164.html
標籤:其他
上一篇:扒開機械硬碟堅硬的外殼!
下一篇:簡單聊聊固態硬碟的物理結構
