[linux文件系統]磁盤硬件篇

前言

本系列磁盤管理,本週在學習磁盤管理的知識。本系列準備將磁盤以及文件系統都整理一遍。因爲本渣渣不是計算機專業畢業的,所以最近在學習基礎的計算機知識,如有不對的,望指正。

以下主要介紹機械式硬盤

硬盤分類

固態硬盤(SSD) 採用閃存顆粒來存儲
機械硬盤(HDD) 採用磁性碟片來存儲

機械式硬盤基礎概念

機械式硬盤

  • 盤片和盤面 platter 硬盤中一般會有多個盤片組成,一個盤片有兩個盤面,每個盤面都有對應的一個讀/寫磁頭。,一般一個硬盤盤片在5片內,盤面編號自下向上從0開始,最大可以有255,表示總共256個盤面
  • 磁頭 head 有幾個磁頭就有幾個盤面,所以磁頭數和盤面數一樣
  • 磁道 track 盤面中一圈圈的同心圓爲一條條磁道
  • 柱面 cylinder 每個盤面的相同磁道疊加起來,看起來像一個柱體。從0開始編號,最大1023,表示總共1024個磁道
  • 扇區 sector 每個磁道可以劃分若干段,每一段稱爲一個扇區,扇區是磁盤最小存儲單位,一般每個扇區存儲512個字節數據,從1開始編號,最大63,表示63個扇區(ps:第0扇區是存放MBR的)
    扇區和磁道
  • 盤面中一圈圈灰色同心圓爲一條條磁道,圖中一個個灰色的同心圓部分
  • 從同心圓向外畫直線,將磁道劃分爲若干個弧段,每個磁道上的一個弧段稱爲一個扇區,圖中綠色部分
    磁頭和柱面
  • 每個盤面都被劃分爲數目相等的磁道,從外援的’0’開始編號,具有相同編號的磁道形成一個圓柱,稱爲磁盤的柱面
  • 磁盤的柱面數與一個盤面的磁道數是相等的
  • 由於每個盤面都有自己的磁頭,因此盤面數等於總的磁頭數

磁盤容量計算

扇區,磁道(或柱面)和磁頭數構成了硬盤結構的基本參數
存儲容量 = 每個扇區字節數×每個磁道的扇區數×磁道數×磁頭數
上圖 算每個扇區的字節數爲512字節,每個磁道劃分12個扇區,每個盤面上有7個磁道,三個盤面(6個磁頭數)
存儲容量 512×12×7×6 = 258048

每個磁道的扇區數一樣?

老的硬盤,外圈的密度小,內圈的密度大,每圈可存儲的數據量是一樣的,外圍的扇區明顯比內圈的扇區要寬,這就浪費了很多磁道長度

有了多多區記錄技術,外圍的磁道就可以劃分爲更多的扇區,新的磁盤數據的密度都一致,這樣磁道的周長越長,扇區就越多,存儲的數據量就越大

因此現在這裏說的每個磁道扇區數一樣是整個盤面平均算的

磁盤讀取響應時間

如果要讀取某個位置(盤面,磁道,扇區)的內容,首先,磁臂要移動磁頭到響應的磁道位置,以及對應的盤面,這就是尋道時間。
但是這時,你的數據不一定當好就在這時的扇區,所以你得等,等轉到所要讀取的扇區後在進行數據讀取,這要靠硬盤的轉速

  • 尋道時間: 磁頭從開始移動到數據所在磁道所需要的時間,尋道時間越短,I/O操作越快,目前磁盤的平均尋道時間一般在3-15ms,一般都在10ms左右。
  • 旋轉延遲: 盤片旋轉將請求數據所在扇區移至讀寫磁頭下方所需要的時間,旋轉延遲取決於磁盤轉速。
    筆記本的硬盤 5400轉/分
    臺式機的硬盤 7200轉/分
  • 數據傳輸時間: 完成傳輸所請求的數據所需要的時間。

小結一下:從上面的指標來看、其實最重要的、或者說、我們最關心的應該只有兩個:尋道時間;旋轉延遲。

cpu讀寫過程

cpu要從磁盤讀入一份數據的過程

  1. cpu發送一條指令,讀取數據
    這條指令通過系統總線,橋間總線,PCI總線傳遞到磁盤控制器。控制器收到指令後明白這次是一次讀請求,且讀完了是否要中斷的信息。做好準備工作,等待讀取數據

  2. cpu 再發送一條指令,讀入內存地址
    這條指令還是通過一系列總線發給磁盤控制器之後,磁盤控制器就開始忙活,找到邏輯塊對應的物理塊地址,查找,尋道等工作,就開始讀取數據

  3. cpu再發送一條指令說讀取內存的地址
    當收到這條指令後,cpu就不管了,他告訴一個叫DMA的總線,說接下來就靠你了。DMA設備會接管總線,負責將磁盤數據通過PCI總線,橋間總線,內存總線同步到內存指定位置

注:對於磁盤控制器式如何管理各個磁盤的,在之後篇幅進行描述

讀寫過程

cpu要從磁盤讀入一份數據的過程

  1. cpu發送一條指令,讀取數據
    這條指令通過系統總線,橋間總線,PCI總線傳遞到磁盤控制器。控制器收到指令後明白這次是一次讀請求,且讀完了是否要中斷的信息。做好準備工作,等待讀取數據
  2. cpu 再發送一條指令,讀入內存地址
    這條指令還是通過一系列總線發給磁盤控制器之後,磁盤控制器就開始忙活,找到邏輯塊對應的物理塊地址,查找,尋道等工作,就開始讀取數據
  3. cpu再發送一條指令說讀取內存的地址
    當收到這條指令後,cpu就不管了,他告訴一個叫DMA的總線,說接下來就靠你了。DMA設備會接管總線,負責將磁盤數據通過PCI總線,橋間總線,內存總線同步到內存指定位置

注:對於磁盤控制器式如何管理各個磁盤的,在之後篇幅進行描述

數據的讀寫過程

讀寫過程分兩頭,一頭將數據從各個盤面中讀取出來,一頭將數據送給計算機

1.從盤面中讀取數據
在磁盤中,順序讀取會比隨機讀取快很多。如果我們按順序遍歷磁盤的數據,那麼讀取順序是這樣的:
1.讀取0盤面的0磁道(最下面的盤面的最外磁道),等盤面旋轉完一圈後,這個磁道被讀取完畢
2.切換到第二個盤面,讀第二塊盤面的最外面一個磁道,以此類推。
3.磁臂在向內移動一個磁道,重複剛剛過程,直到讀到最裏面的磁道

注:由於磁臂的移動要比盤面的切換要慢的多(一個是機械切換,一個是電子切換),所以爲了減少磁臂的移動。如上的順序讀取是,先讀取一個柱面,再讀取下一個磁道

磁臂移動速度慢,剛剛是按順序讀取的時候,但往往在真實情況下,會有大量的隨機訪問的情況下,就需要考慮磁臂調度算法。例如RSS,FIFO,PRI,SSTF,SCAN/LOOK等

2.將數據送給計算機
從磁盤中讀取到數據,接下來我們磁盤通過什麼樣的接口跟計算機做交互?這個接口也叫磁盤管理協議

磁盤管理協議的定義又分成兩部分:軟件和硬件。其中軟件是指指令級,目前指令級就兩個:ATA和SCSI;硬件代表數據傳輸方式,一般都是主板上的導線傳輸原理,但並不限制,數據甚至可以通過TCP/IP傳輸。定義一個協議需要同時定義了指令級以及硬件傳輸方式

總結

  1. 扇區,磁道(或柱面)和磁頭數構成了硬盤結構的基本參數
  2. 讀寫一次磁盤信息所需的時間可分解爲:尋道時間、延遲時間、傳輸時間。爲提高磁盤傳輸效率,軟件應着重考慮減少尋道時間和延遲時間。
  3. 比如講常用的數據存放在0磁道(最外面的磁道),因爲這個扇區在最外層,角速度一樣,每秒走過的周長就越長,讀的數據就多。

以上介紹的是磁盤的物理存儲方式,接下來會有邏輯層面的數據管理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章