北航OS課程筆記--六、磁碟管理

qiuer0121發表於2024-07-25

磁碟管理

磁碟工作原理

基本概念:

  • 磁碟由許多盤面組成

  • 盤面:一個碟片有正反兩個盤面

  • 磁軌,距離軸心越遠編號越小;外道資料訪問速度更快。

  • 扇區:磁軌上有很多小的扇區,每個扇區儲存的資料量相同

  • 柱面:同一硬碟中不同碟片的相同半徑的磁軌組成的圓柱。

  • 磁頭:每個盤面有一個磁頭,所有磁頭只會在同一柱面上

可以用(柱面號,盤面號,扇區號)來定位一個磁碟塊。

image-20240525224439541

Flash Disk的兩種技術:

  • NAND的地址分為三部分:塊號、塊內頁號、頁內位元組號
  • NAND一次資料訪問一般經過三次定址,隨機位元組讀取速度慢
  • NOR的地址線足夠多,且儲存單元室並列排布,可以實現一次性的直接定址,資料定址時間基本是一個常量。
  • NOR成本較高,但資料傳輸速度比NAND快。
  • NAND的讀寫:
    • 讀:以頁為單位
    • 寫:先擦除整個塊,再寫入特定頁。

磁碟的組織與排程

CHS模式

磁頭數NH(=盤面數):表示硬碟總共有幾個磁頭,也就是有幾面碟片,最多為256個。

柱面數NC(=磁軌數):表示硬碟每一面碟片上有幾條磁軌,最大為1024

扇區數NS:表示每一條磁軌上有幾個扇區,所有0扇區用於存放韌體以及一些硬碟專用的檔案,最大為1024。

這個扇區之前所有的物理扇區包含的位元組數為8.46GB

LBA模式

將磁碟驅動器看做一個一維的邏輯塊的陣列,邏輯塊是最小的傳輸單位。

LBA與CHS的地址轉換

image-20240524153051021

磁碟空間管理

  • 點陣圖:用一串二進位制位反應磁碟空間中分配使用情況,每個物理塊對應1位,分配的物理塊為0,否則為1。
  • 空閒表:將所有空閒塊記錄在一個表中
  • 成組連結法

磁碟訪問時間

  • 尋道時間:啟動磁碟時間s+磁頭移動n條磁軌 所花費的時間之和

    \(Ts = s+m\times n\),m為常量

  • 旋轉延遲時間:透過旋轉磁碟,使磁頭定位到目標扇區所需要的時間。\(Tr = \frac{1}{2r}\),r是轉速,平均需要轉半圈。

  • 傳輸時間:把資料從磁碟讀出,或向磁碟寫入資料經歷的時間。

    \(Tt =\frac{b}{rN}\),b為每次讀寫的位元組數,r為旋轉速度,N為磁軌上的位元組數。

總訪問時間\(T= Ts+Tr+Tt\)

磁碟排程演算法

對於OS的磁碟IO驅動,可能收到IO請求的速度大於磁碟實際能夠執行的速度。

  • 先來先服務FCFS:按訪問請求到達的先後次序服務

    • 僅應用在磁碟IO較少的場合。
  • 最短尋道時間優先SSTF:優先考慮距離當前磁頭最近的訪問請求。可能產生飢餓。

  • 掃描演算法(SCAN)電梯排程:當有訪問請求的時候,磁頭按一個方向移動,在移動過程中對遇到的訪問請求進行服務,直到磁頭步進最外(內)側磁軌,調轉掃描方向。

    • 兩側磁軌被訪問頻率低於中間磁軌。
  • 迴圈掃描演算法(C–SCAN):按照所要訪問的柱面位置的次序去選擇訪問者;移動臂到達最後一個柱面後,立刻帶動讀寫磁頭快速返回到0號柱面,中途不為訪問者服務。

    • 可以避免SCAN演算法的問題。
  • LOOK和C–LOOK,到達最遠端的一個請求即可返回。

提高磁碟IO效能

  • 磁碟快取記憶體
  • 並行化(RAID)
  • 最佳化資料佈局
  • 提前讀延遲寫

RAID廉價冗餘磁碟陣列

一種把多塊獨立的硬碟(物理硬碟)按照不同方式組合起來形成一個硬碟組(邏輯硬碟),從而提供比單個硬碟更高的儲存效能和提供資料冗餘的技術。

組成磁碟陣列的不同方式稱為RAID級別。

資料冗餘的功能是:使用者資料一旦發生損壞後,利用冗餘資訊可以使損失資料得以恢復,從而保障了使用者資料的安全性。

  • RAID0:連續以位或位元組為單位分割資料,並行交叉讀寫多個磁碟,具有很高的資料傳輸率,但沒有資料冗餘。

  • RAID1:映象儲存,在成對的獨立磁碟上產生互為備份的資料。當原始資料繁忙時,可以直接從映象複製中讀取資料。

    讀效能好,寫效能由最差的硬碟決定;可靠性高,單位成本最高。

  • RAID 0+1 &RAID 1+0:先分塊後映象&先映象後分塊。10容錯性更好。

  • RAID2:海明碼奇偶校驗+條帶儲存。將資料條塊化地分佈在不同的硬碟上,條塊單位為位或位元組,使用海明碼來提供錯誤檢查及恢復。

    可以實現錯誤檢查和恢復,資料傳輸率高。

    海明碼長度:2r ≥𝑟+d+1,r是冗餘碼位數,d是資料位數。

    要能糾正資訊字中的單個錯誤,所需要的碼距最少為3。

  • RAID3:將磁碟分組,採用位元組級別的條帶,讀寫要訪問組中所有盤,每組中有一個盤作為校驗盤。

相關文章