構(gòu)與延遲時(shí)間優(yōu)化:從磁道扇區(qū)到交替編號)
磁盤物理結(jié)構(gòu)與延遲時(shí)間優(yōu)化從磁道扇區(qū)到交替編號核心要點(diǎn)磁盤讀寫時(shí)間 尋道時(shí)間Seek Time 旋轉(zhuǎn)延遲Rotational Latency 傳輸時(shí)間Transfer Time其中尋道時(shí)間占比最大、是調(diào)度優(yōu)化的核心目標(biāo)交替編號Interleaving的核心邏輯磁頭讀完一個(gè)扇區(qū)后需要一小段處理時(shí)間而盤片在持續(xù)旋轉(zhuǎn)——如果 0 號扇區(qū)緊挨 1 號等處理完 1 號已經(jīng)轉(zhuǎn)過去了必須等多轉(zhuǎn)一圈錯(cuò)位命名Cylinder Skew的原理類似但發(fā)生在多盤面之間磁頭切換盤面需要時(shí)間不同盤面的同名扇區(qū)故意錯(cuò)開一段距離從出廠到可用磁盤經(jīng)歷三步低級格式化劃分扇區(qū)→ 分區(qū)劃分 C/D/E 盤→ 邏輯格式化創(chuàng)建文件系統(tǒng)磁頭在一個(gè)圈上找數(shù)據(jù)磁盤到底長什么樣機(jī)械硬盤HDD的物理結(jié)構(gòu)像一個(gè)多層的旋轉(zhuǎn)蛋糕——多個(gè)圓形盤片Platter疊在一起每個(gè)盤面Surface上都有一個(gè)讀/寫磁頭Head磁頭固定在統(tǒng)一移動的磁頭臂Arm上。盤面被劃分為若干同心圓環(huán)——每個(gè)圓環(huán)稱為一個(gè)磁道Track。所有盤面上相同編號的磁道構(gòu)成了一個(gè)柱面Cylinder。每個(gè)磁道又被劃分為若干弧段——每個(gè)弧段稱為一個(gè)扇區(qū)Sector是磁盤讀/寫的最小單位通常 512 字節(jié)。[引用] 教材中的 CHS 地址Cylinder-Head-Sector格式就是通過柱面號、磁頭號盤面號、扇區(qū)號來定位一個(gè)扇區(qū)?,F(xiàn)代磁盤內(nèi)部已使用 LBALogical Block Addressing邏輯塊編址由磁盤控制器完成 LBA → CHS 的轉(zhuǎn)換但 CHS 模型在考研中仍然是考點(diǎn)。[經(jīng)驗(yàn)] 一個(gè)反直覺的事實(shí)最內(nèi)側(cè)磁道的扇區(qū)面積最小數(shù)據(jù)密度最大。因?yàn)橥蝗ι闲枰鎯Φ臄?shù)據(jù)量相同每個(gè)磁道的扇區(qū)數(shù)相等都是固定比特率寫入外側(cè)磁道有更大的周長物理空間更寬?!,F(xiàn)代磁盤使用區(qū)位記錄Zone Bit Recording, ZBR技術(shù)讓外側(cè)磁道擁有更多扇區(qū)但考研一般討論簡化模型。磁盤讀寫時(shí)間的三個(gè)組成部分要讀寫一個(gè)扇區(qū)磁頭需要完成三個(gè)動作。這個(gè)公式是磁盤性能分析的基礎(chǔ)讀寫時(shí)間 尋道時(shí)間 旋轉(zhuǎn)延遲 傳輸時(shí)間尋道時(shí)間Seek Time磁頭臂從當(dāng)前位置移動到目標(biāo)磁道所需的時(shí)間。包含啟動加速時(shí)間和勻速移動時(shí)間。這是三者中最慢的毫秒級也是磁盤調(diào)度算法FCFS / SSTF / SCAN優(yōu)化的主要對象。尋道時(shí)間不是線性增長的——移動 1 個(gè)磁道和移動 100 個(gè)磁道的時(shí)間差距遠(yuǎn)小于 100 倍因?yàn)閱蛹铀倬鸵呀?jīng)占了相當(dāng)比例。但考研計(jì)算題一般簡化為每移動一個(gè)磁道耗時(shí)固定。旋轉(zhuǎn)延遲Rotational Latency磁頭到達(dá)目標(biāo)磁道后等待目標(biāo)扇區(qū)旋轉(zhuǎn)到磁頭下方所需的時(shí)間。平均為旋轉(zhuǎn)半圈的時(shí)間。假設(shè)轉(zhuǎn)速 7200 rpm轉(zhuǎn)/分鐘旋轉(zhuǎn)一圈約 8.33ms平均旋轉(zhuǎn)延遲 ≈ 4.17ms。傳輸時(shí)間Transfer Time數(shù)據(jù)實(shí)際從扇區(qū)被磁頭讀取的時(shí)間。取決于轉(zhuǎn)速和每次讀取的扇區(qū)數(shù)。讀取一個(gè)扇區(qū)512 字節(jié)的傳輸時(shí)間通常在微秒級別遠(yuǎn)小于前兩者。[經(jīng)驗(yàn)] 408 題目一般會給磁盤轉(zhuǎn)速要求計(jì)算讀完一個(gè)扇區(qū)需要多長時(shí)間。標(biāo)準(zhǔn)計(jì)算公式單圈時(shí)間 60 / 轉(zhuǎn)速rpm平均延遲 單圈 / 2。如果題目給了尋道時(shí)間記得三者相加。交替編號為什么 0 號扇區(qū)旁邊不是 1 號[共識] 如果邏輯上相鄰的扇區(qū)如 0 號和 1 號在物理上也相鄰排列連續(xù)讀多個(gè)扇區(qū)時(shí)會遇到一個(gè)大問題。[引用] 教材的分析十分精到磁頭讀取完一個(gè)扇區(qū)的內(nèi)容后需要一小段時(shí)間處理——校驗(yàn)數(shù)據(jù)、放到緩沖區(qū)、通知控制器。但盤片在持續(xù)旋轉(zhuǎn)。當(dāng)磁頭處理完 0 號扇區(qū)準(zhǔn)備讀 1 號時(shí)1 號扇區(qū)已經(jīng)從磁頭下方轉(zhuǎn)過去了。必須等待盤片旋轉(zhuǎn)整整一圈1 號扇區(qū)才能再次回到磁頭下方。這就產(chǎn)生了巨大的延遲——本來旋轉(zhuǎn)半圈以內(nèi)就能讀完的連續(xù)扇區(qū)因?yàn)樘幚硌舆t變成每讀一個(gè)扇區(qū)就要多等一圈。交替編號Interleaving的解決方案將邏輯上連續(xù)的扇區(qū)在物理上隔開幾個(gè)位置排列。例如不使用交替 0 1 2 3 4 5 6 7 使用交替 0 4 1 5 2 6 3 7這樣讀 0 → 處理 → 讀 1 時(shí)1 號扇區(qū)剛好轉(zhuǎn)到磁頭下方不需要多等一整圈。交替的間隔取決于控制器處理速度和磁盤轉(zhuǎn)速的匹配。[經(jīng)驗(yàn)] 考研中如果出現(xiàn)交替編號題通常會給你處理時(shí)間和轉(zhuǎn)速讓你判斷交替間隔應(yīng)該設(shè)置為幾個(gè)扇區(qū)。實(shí)際計(jì)算邏輯是處理時(shí)間內(nèi)盤片轉(zhuǎn)過多少個(gè)扇區(qū)就隔開多少個(gè)扇區(qū)排列。錯(cuò)位命名不同盤面的扇區(qū)對齊是個(gè)陷阱[共識] 交替編號解決了同一磁道內(nèi)連續(xù)扇區(qū)的延遲問題。但還有一個(gè)類似的問題發(fā)生在不同盤面之間。當(dāng)一個(gè)磁道上的數(shù)據(jù)讀完、需要切換到另一個(gè)盤面繼續(xù)讀時(shí)磁頭需要切換切換電子開關(guān) 盤片仍在旋轉(zhuǎn)。如果兩個(gè)盤面的 0 號扇區(qū)在物理上完全對齊同一角度位置切換磁頭的時(shí)間會導(dǎo)致目標(biāo)盤面的 0 號扇區(qū)已經(jīng)轉(zhuǎn)過去了。[引用]錯(cuò)位命名Cylinder Skew技術(shù)正是為了解決這個(gè)問題不同盤面的同名扇區(qū)在物理上故意錯(cuò)開一段距離。例如盤面 0 的 0 號扇區(qū)在角度 0°盤面 1 的 0 號扇區(qū)在角度 30°。這樣磁頭切換的時(shí)間剛好讓盤面 1 的 0 號扇區(qū)旋轉(zhuǎn)到磁頭下方。[經(jīng)驗(yàn)] 交替編號和錯(cuò)位命名目標(biāo)相同減少延遲但作用域不同交替編號優(yōu)化同一磁道內(nèi)的連續(xù)讀錯(cuò)位命名優(yōu)化跨盤面的連續(xù)讀。磁盤初始化從低級格式化到邏輯格式化的三步走一塊嶄新的磁盤從出廠到能夠存放文件需要經(jīng)過三個(gè)步驟第一步低級格式化物理格式化。將每個(gè)磁道劃分為固定大小的扇區(qū)通常 512 字節(jié)。每個(gè)扇區(qū)分為頭Header、數(shù)據(jù)區(qū)Data Area、尾Trailer三部分。頭和尾包含扇區(qū)編號、校驗(yàn)碼奇偶校驗(yàn)/CRC等管理信息——這些信息由磁盤控制器使用OS 看不到。[引用] 教材指出低級格式化還會檢測并標(biāo)記壞扇區(qū)用備用扇區(qū)替換。這一步驟通常由磁盤制造商在出廠前完成普通用戶極少需要自己做。第二步磁盤分區(qū)。將物理磁盤劃分為若干個(gè)邏輯分區(qū)Partition / Volume就是我們熟悉的 C 盤、D 盤、E 盤。分區(qū)信息寫入 MBR主引導(dǎo)記錄或 GPTGUID 分區(qū)表中。每個(gè)分區(qū)的起始和結(jié)束柱面由分區(qū)表記錄。第三步邏輯格式化。在每個(gè)分區(qū)上創(chuàng)建文件系統(tǒng)——包括創(chuàng)建根目錄、初始化空閑空間管理用的數(shù)據(jù)結(jié)構(gòu)位示圖 / 空閑分區(qū)表、將 superblock 信息寫入磁盤。邏輯格式化之后分區(qū)才算真正可用——操作系統(tǒng)可以往里面寫文件了。請注意區(qū)分文件系統(tǒng)的邏輯格式化和低級格式化一個(gè)是 OS 層面的軟件初始化一個(gè)是硬件層面的扇區(qū)劃分。在 408 題目中“格式化通常指邏輯格式化除非題目明確寫了低級格式化”。引導(dǎo)塊開機(jī)后第一個(gè)被讀入內(nèi)存的東西每個(gè)分區(qū)的第一個(gè)扇區(qū)稱為引導(dǎo)塊Boot Block。計(jì)算機(jī)開機(jī)后BIOS 先讀取磁盤第一個(gè)扇區(qū)MBR由 MBR 中的代碼定位活動分區(qū)的引導(dǎo)塊引導(dǎo)塊中的引導(dǎo)程序再負(fù)責(zé)加載該分區(qū)中的操作系統(tǒng)內(nèi)核。提示引導(dǎo)塊的作用可以結(jié)合第一章操作系統(tǒng)引導(dǎo)小節(jié)來理解。引導(dǎo)塊 → 操作系統(tǒng)內(nèi)核加載器 → 內(nèi)核初始化 → 系統(tǒng)正常運(yùn)行這是一條完整的啟動鏈路。對于沒有安裝操作系統(tǒng)的分區(qū)如純數(shù)據(jù)盤引導(dǎo)塊可以置空。如果計(jì)算機(jī)裝了兩個(gè)操作系統(tǒng)如 Windows Linux各占一個(gè)分區(qū)MBR 的引導(dǎo)代碼會讓用戶選擇從哪個(gè)分區(qū)的引導(dǎo)塊啟動——這就是雙系統(tǒng)引導(dǎo)的基本原理。現(xiàn)代 UEFI 系統(tǒng)用 ESP 分區(qū)EFI System Partition替代了這一方案但原理類似。壞塊管理磁盤壞了怎么辦磁盤在使用過程中不可避免會產(chǎn)生壞塊Bad Block——物理上損壞、無法可靠讀寫的扇區(qū)。OS 和磁盤控制器協(xié)同處理壞塊硬件層面磁盤控制器在低級格式化時(shí)檢測壞塊用備用扇區(qū)替換對 OS 透明OS 根本不知道有扇區(qū)壞了軟件層面文件系統(tǒng)如 ext4可以維護(hù)一個(gè)壞塊列表在分配磁盤塊時(shí)跳過這些位置[經(jīng)驗(yàn)] 現(xiàn)代磁盤普遍使用 SMARTSelf-Monitoring, Analysis and Reporting Technology技術(shù)持續(xù)監(jiān)控磁盤健康狀態(tài)當(dāng)重映射扇區(qū)數(shù)Reallocated Sector Count持續(xù)增長時(shí)就是磁盤即將失效的預(yù)警信號。FAQ為什么尋道時(shí)間占磁盤讀寫時(shí)間的最大比例因?yàn)榇蓬^臂是機(jī)械部件移動需要克服慣性。一次尋道通常在 3-15ms而旋轉(zhuǎn)延遲平均 4ms 左右傳輸時(shí)間在微秒級。所以磁盤調(diào)度算法優(yōu)先優(yōu)化尋道路徑——寧可多轉(zhuǎn)半圈也不多移動一次磁頭臂。交替編號中的間隔怎么確定間隔 處理時(shí)間 / 一個(gè)扇區(qū)的通過時(shí)間。例如處理時(shí)間為 200μs盤速 7200rpm一圈 8.33ms每扇區(qū)約 100μs則間隔約為 2 個(gè)扇區(qū)。邏輯扇區(qū)排列可能是0, 3, 6, 1, 4, 7, 2, 5。SSD 也需要交替編號嗎不需要。SSD 沒有旋轉(zhuǎn)盤片和移動磁頭——它沒有尋道時(shí)間和旋轉(zhuǎn)延遲的概念。SSD 的讀寫延遲主要來自閃存芯片本身的訪問時(shí)間微秒級遠(yuǎn)低于 HDD 的機(jī)械延遲。低級格式化和邏輯格式化的區(qū)別考試中怎么區(qū)分低級格式化 劃分扇區(qū)硬件層面邏輯格式化 創(chuàng)建文件系統(tǒng)OS 層面。題目說新買的硬盤需要做……一般指邏輯格式化分區(qū) 建文件系統(tǒng)因?yàn)榈图壐袷交鰪S時(shí)已完成。為什么靠近軸心的磁道讀寫速度看起來和外側(cè)一樣簡化模型因?yàn)榇疟P是恒定角速度CAV, Constant Angular Velocity旋轉(zhuǎn)——不管在哪個(gè)磁道上磁頭掃過的扇區(qū)數(shù)相同每圈時(shí)間固定、扇區(qū)數(shù)固定。但現(xiàn)代磁盤用 ZBR 技術(shù)讓外側(cè)磁道有更多扇區(qū)外圈傳輸速度更快??佳幸话阌煤喕P图僭O(shè)各磁道扇區(qū)數(shù)相同。總結(jié)磁盤的性能瓶頸由三個(gè)時(shí)間分量疊加而成其中尋道時(shí)間占比最大。交替編號和錯(cuò)位命名是兩種巧妙的物理層面優(yōu)化——它們不改變磁盤的機(jī)械結(jié)構(gòu)只是改變了扇區(qū)編號在盤面上的排列方式就將旋轉(zhuǎn)延遲降到了最低。從低級格式化到邏輯格式化的三步走流程完整回答了一塊嶄新的磁盤如何變成能存文件的文件系統(tǒng)——扇區(qū)、分區(qū)、文件系統(tǒng)層層遞進(jìn)。