磁碟管理
磁碟工作原理
基本概念:
-
磁碟由許多盤面組成
-
盤面:一個碟片有正反兩個盤面
-
磁軌,距離軸心越遠編號越小;外道資料訪問速度更快。
-
扇區:磁軌上有很多小的扇區,每個扇區儲存的資料量相同
-
柱面:同一硬碟中不同碟片的相同半徑的磁軌組成的圓柱。
-
磁頭:每個盤面有一個磁頭,所有磁頭只會在同一柱面上
可以用(柱面號,盤面號,扇區號)來定位一個磁碟塊。
Flash Disk的兩種技術:
- NAND的地址分為三部分:塊號、塊內頁號、頁內位元組號
- NAND一次資料訪問一般經過三次定址,隨機位元組讀取速度慢
- NOR的地址線足夠多,且儲存單元室並列排布,可以實現一次性的直接定址,資料定址時間基本是一個常量。
- NOR成本較高,但資料傳輸速度比NAND快。
- NAND的讀寫:
- 讀:以頁為單位
- 寫:先擦除整個塊,再寫入特定頁。
磁碟的組織與排程
CHS模式
磁頭數NH(=盤面數):表示硬碟總共有幾個磁頭,也就是有幾面碟片,最多為256個。
柱面數NC(=磁軌數):表示硬碟每一面碟片上有幾條磁軌,最大為1024
扇區數NS:表示每一條磁軌上有幾個扇區,所有0扇區用於存放韌體以及一些硬碟專用的檔案,最大為1024。
這個扇區之前所有的物理扇區包含的位元組數為8.46GB
LBA模式
將磁碟驅動器看做一個一維的邏輯塊的陣列,邏輯塊是最小的傳輸單位。
LBA與CHS的地址轉換
磁碟空間管理
- 點陣圖:用一串二進位制位反應磁碟空間中分配使用情況,每個物理塊對應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:將磁碟分組,採用位元組級別的條帶,讀寫要訪問組中所有盤,每組中有一個盤作為校驗盤。