第九章 磁盤存儲(chǔ)器管理
一、核心概念
磁盤存儲(chǔ)器是現(xiàn)代計(jì)算機(jī)系統(tǒng)的核心外部存儲(chǔ)設(shè)備,其管理效率直接影響到系統(tǒng)的整體性能和可靠性。操作系統(tǒng)通過(guò)磁盤存儲(chǔ)器管理,實(shí)現(xiàn)了對(duì)海量數(shù)據(jù)的持久化存儲(chǔ)與高效訪問(wèn)。
1.1 磁盤結(jié)構(gòu)
典型的磁盤由多個(gè)盤片組成,每個(gè)盤片有兩個(gè)磁面,每個(gè)磁面劃分為多個(gè)同心圓的磁道,磁道又進(jìn)一步劃分為扇區(qū)。數(shù)據(jù)讀寫的基本單位是扇區(qū)(通常為512字節(jié)或4KB)。磁盤訪問(wèn)時(shí)間主要包括:尋道時(shí)間(磁頭移動(dòng)到目標(biāo)磁道)、旋轉(zhuǎn)延遲(目標(biāo)扇區(qū)旋轉(zhuǎn)到磁頭下)和傳輸時(shí)間。
1.2 磁盤調(diào)度算法
為減少尋道時(shí)間,提高磁盤I/O效率,操作系統(tǒng)采用多種磁盤調(diào)度算法:
- 先來(lái)先服務(wù)(FCFS):按請(qǐng)求順序處理,公平但效率低。
- 最短尋道時(shí)間優(yōu)先(SSTF):選擇離當(dāng)前磁頭位置最近的請(qǐng)求,可能導(dǎo)致饑餓現(xiàn)象。
- 掃描算法(SCAN,電梯算法):磁頭單向移動(dòng),處理途中的請(qǐng)求,到達(dá)一端后反向。
- 循環(huán)掃描算法(C-SCAN):?jiǎn)蜗蛱峁┓?wù),返回時(shí)快速移動(dòng)不處理請(qǐng)求,提供更均勻的等待時(shí)間。
- LOOK與C-LOOK算法:SCAN與C-SCAN的改進(jìn)版,只需移動(dòng)到最遠(yuǎn)的請(qǐng)求位置即折返,而非磁盤端點(diǎn)。
二、磁盤格式化與管理
2.1 低級(jí)與高級(jí)格式化
- 低級(jí)格式化:在物理層面劃分磁道和扇區(qū),設(shè)置扇區(qū)標(biāo)識(shí)信息。通常由制造商完成。
- 高級(jí)格式化:在分區(qū)上創(chuàng)建文件系統(tǒng),包括建立引導(dǎo)塊、空閑空間管理結(jié)構(gòu)(如位圖)、根目錄等。由操作系統(tǒng)完成。
2.2 磁盤分區(qū)與引導(dǎo)
磁盤可劃分為多個(gè)分區(qū),每個(gè)分區(qū)可安裝不同的操作系統(tǒng)或存儲(chǔ)不同類型的數(shù)據(jù)。主引導(dǎo)記錄(MBR)或GUID分區(qū)表(GPT)存儲(chǔ)分區(qū)信息。系統(tǒng)啟動(dòng)時(shí),BIOS/UEFI讀取引導(dǎo)扇區(qū),加載操作系統(tǒng)的引導(dǎo)程序。
三、提高磁盤性能與可靠性的技術(shù)
3.1 磁盤緩存與緩沖
操作系統(tǒng)在內(nèi)存中開辟磁盤緩存(頁(yè)緩存/緩沖區(qū)緩存),暫存頻繁訪問(wèn)的磁盤數(shù)據(jù),減少實(shí)際I/O操作。寫操作也常通過(guò)緩存延遲寫入(寫回策略),提升響應(yīng)速度,但需注意數(shù)據(jù)一致性與斷電保護(hù)。
3.2 獨(dú)立磁盤冗余陣列(RAID)
通過(guò)將多個(gè)物理磁盤組合成一個(gè)邏輯單元,實(shí)現(xiàn)性能提升和/或數(shù)據(jù)冗余:
- RAID 0(條帶化):數(shù)據(jù)分塊并行寫入多個(gè)磁盤,提高吞吐量,無(wú)冗余。
- RAID 1(鏡像):數(shù)據(jù)同時(shí)寫入兩個(gè)磁盤,提供完全冗余,讀性能提升。
- RAID 5(帶分布式奇偶校驗(yàn)的條帶化):數(shù)據(jù)與奇偶校驗(yàn)信息分布在所有磁盤上,兼顧性能、容量與冗余,允許一塊磁盤故障。
- RAID 10(先鏡像再條帶化):RAID 1與RAID 0的結(jié)合,高性能高可靠,但成本較高。
3.3 穩(wěn)定存儲(chǔ)與數(shù)據(jù)一致性
為確保關(guān)鍵數(shù)據(jù)(如元數(shù)據(jù))不因系統(tǒng)崩潰而損壞,需采用穩(wěn)定存儲(chǔ)技術(shù),如寫前日志(預(yù)寫式日志,WAL)。文件系統(tǒng)(如ext4、NTFS)或數(shù)據(jù)庫(kù)系統(tǒng)常利用日志記錄即將進(jìn)行的修改,先寫日志再寫實(shí)際數(shù)據(jù),崩潰后可根據(jù)日志恢復(fù)一致性狀態(tài)。
四、磁盤空間管理
操作系統(tǒng)需高效管理磁盤的存儲(chǔ)空間:
- 連續(xù)分配:文件占據(jù)連續(xù)的磁盤塊,訪問(wèn)快但易產(chǎn)生外部碎片。
- 鏈接分配:文件數(shù)據(jù)塊通過(guò)指針鏈接,無(wú)外部碎片,但隨機(jī)訪問(wèn)效率低。
- 索引分配:為每個(gè)文件建立索引塊,存放所有數(shù)據(jù)塊指針,支持直接訪問(wèn)。UNIX的inode是經(jīng)典實(shí)現(xiàn)。
- 空閑空間管理:常用位圖(bitmap)或鏈表記錄空閑磁盤塊。位圖更節(jié)省空間且便于查找連續(xù)空閑塊。
五、與計(jì)算機(jī)系統(tǒng)服務(wù)的關(guān)聯(lián)
磁盤存儲(chǔ)器管理并非孤立模塊,它與操作系統(tǒng)的其他核心服務(wù)緊密協(xié)同,構(gòu)成了完整的存儲(chǔ)棧:
- 與內(nèi)存管理協(xié)同:通過(guò)虛擬內(nèi)存和頁(yè)面置換,磁盤作為內(nèi)存的擴(kuò)展(交換空間)。當(dāng)物理內(nèi)存不足時(shí),不常用的頁(yè)面被換出到磁盤的交換分區(qū)/文件;需要時(shí)再換入。
- 與文件系統(tǒng)協(xié)同:文件系統(tǒng)是磁盤管理的高級(jí)抽象。磁盤調(diào)度、空間分配策略由文件系統(tǒng)驅(qū)動(dòng),最終轉(zhuǎn)化為對(duì)具體磁盤塊的讀寫請(qǐng)求。文件系統(tǒng)緩存(頁(yè)緩存)直接依賴于磁盤緩存機(jī)制。
- 與I/O系統(tǒng)協(xié)同:磁盤作為塊設(shè)備,其讀寫請(qǐng)求通過(guò)I/O子系統(tǒng)(包括設(shè)備驅(qū)動(dòng)程序、中斷處理)提交和執(zhí)行。I/O調(diào)度器可能對(duì)請(qǐng)求進(jìn)行合并和重排序,進(jìn)一步優(yōu)化性能。
- 與系統(tǒng)啟動(dòng)和恢復(fù)服務(wù):磁盤上的引導(dǎo)扇區(qū)、操作系統(tǒng)內(nèi)核映像、初始化內(nèi)存磁盤(initrd)是系統(tǒng)啟動(dòng)的基礎(chǔ)。日志和RAID等技術(shù)為系統(tǒng)崩潰后的數(shù)據(jù)恢復(fù)提供了保障。
###
第九章“磁盤存儲(chǔ)器管理”深入闡述了操作系統(tǒng)如何高效、可靠地管理這一關(guān)鍵硬件資源。從底層的物理結(jié)構(gòu)、訪問(wèn)調(diào)度,到高級(jí)的RAID、緩存和空間分配策略,構(gòu)成了一個(gè)多層次的優(yōu)化體系。理解這些機(jī)制,對(duì)于分析系統(tǒng)I/O瓶頸、設(shè)計(jì)高性能存儲(chǔ)方案、保障數(shù)據(jù)安全至關(guān)重要。它作為“計(jì)算機(jī)系統(tǒng)服務(wù)”的核心組成部分,與內(nèi)存、文件、I/O管理等模塊無(wú)縫集成,共同支撐著上層所有應(yīng)用程序的數(shù)據(jù)持久化需求。