磁盤分區也是隱含了技術技巧的

圖片

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

圖片

圖1 機械磁盤內部構造app

分區是操做系統對磁盤進行管理的第一步,這也是咱們任何一個計算機使用者都很是熟悉的概念。例如Windows下的C、D、E、F盤。那麼請思考一下,若是你是操做系統的設計者,讓你把整塊磁盤分紅C、D等分區,你會怎麼分呢?ide

爲了方便討論,咱們這裏假設你要分的硬盤是有50個盤面,3000個柱面。咱們給出兩種方案性能

  • 方案一:50個盤面,C盤是0-10盤面, D盤是10-20個盤面,……spa

  • 方案二:3263個柱面,C盤0-1000個柱面,D盤1001-20001個柱面,……操作系統

接下來咱們來討論下那種方案更優秀,這得從磁盤的讀寫延時角度提及。讀寫原理提及來也簡單,就是磁頭要找到指定的磁道,指定的扇區,進而把數據讀取出來或者寫入進去的過程。這個過程分紅以下三步:設計

  • 第一步,首先是磁頭徑向移動來尋找數據所在的磁道。這部分時間叫尋道時間。尋道時間,現代磁盤大概在3-15ms,其中尋道時間大小主要受磁頭當前所在位置和目標磁道所在位置相對距離的影響orm

  • 第二步,找到目標磁道後經過盤面旋轉,將目標扇區移動到磁頭的正下方,這部分時間叫旋轉延遲。如今主流服務器上常常使用的是1W轉/分鐘的磁盤,每旋轉一週所需的時間爲60*1000/10000=6ms,故其旋轉延遲爲(0-6ms)blog

  • 第三步,向目標扇區讀取或者寫入數據,這部分時間叫存取時間。這個是電磁操做,因此通常耗時較短,爲零點幾ms。圖片

到此爲止,單次磁盤IO時間 = 尋道時間 + 旋轉延遲 + 存取時間

分區上採用哪種方案,最主要看的是那種方式性能更快。在磁盤分區的使用中,存在一個基本事實,那就是同一分區下的數據常常會一塊兒讀取。兩種方案的對於旋轉延遲、和存取時間上表現的性能是同樣的,主要區別是在尋道時間的表現上:

假如採用第一種,那麼這樣磁頭就須要在3000多個磁道間不停地跳來跳去,這樣磁盤的尋道時間就降不下來。而對於方案二,假如對於磁盤C,只須要在磁頭在1-1000個磁道間移動就能夠了,大大下降了尋道時間。

因此全部的操做系統採用的都是方案二,沒有用方案一的。若是你在Linux下使用過fdisk進行過度區的話能夠注意到如下信息。

圖片

圖2 fdisk分區開始柱面選取

圖片圖3 fdisk分區結束柱面選取

分區的過程就是你輸入起始柱面號和截至柱面號的過程。不過在實際中,分區並不能從0號柱面開始的,由於磁盤的第一個磁道對應的柱面會被用來安裝引導加載程序以及磁盤分區表。

因此,操做系統經過按磁道對應的柱面劃分分區,來下降磁盤IO所花費的的尋道時間 ,最終提升磁盤的讀寫性能。

相關文章
相關標籤/搜索