前言

本文介绍磁盘驱动器(hard disk drive,HDD)的工作原理、结构、性能分析以及操作系统如何通过磁盘调度来优化性能

磁盘接口与基本几何结构

基本接口与存储单元:现代磁盘驱动器的基本接口简单,将其视为由大量扇区(512 字节块)组成的地址空间,扇区从 0 到 n−1 编号。

原子性:驱动器制造商唯一保证的是单个 512 字节的写入是原子的,但较大的写入可能会因掉电而导致不完整写入(torn write)。

性能假设:磁盘客户端通常假设访问彼此靠近的块比访问相隔很远的块更快,并且访问连续块(顺序读取或写入)是最快的访问模式

磁盘物理组件

结构优化

I/O时间与性能分析

I/O 时间组成:磁盘 I/O 时间由三个主要部分组成:TI/O​=T寻道​+T旋转​+T传输​。

寻道时间(Seek Time):将磁盘臂移动到正确的磁道所需的时间,是最昂贵的磁盘操作之一。寻道涉及加速、惯性滑动、减速和停放时间。
image.png

旋转延迟(Rotational Delay):等待期望的扇区旋转到磁头下所需的时间,是 I/O 服务时间的重要组成部分。平均旋转延迟大约为单次旋转所需时间的一半。

传输时间(Transfer Time):数据从表面读取或写入表面的时间。

I/O 速率:RI/O​=TI/O​传输大小​。

工作负载性能对比

磁盘调度策略

调度目标:操作系统通过磁盘调度程序来决定 I/O 请求的顺序,目标是遵循 SJF(最短任务优先) 的原则,通过估计寻道和旋转延迟,优先服务花费最少时间的请求。

SSTF(最短寻道时间优先,Shortest-Seek-Time-First):按磁道对 I/O 请求队列排序,选择在最近磁道上的请求先完成,SSTF 的主要问题是可能导致饥饿(starvation),即稳定对当前磁道的请求会完全忽略对其他磁道的请求。

电梯算法(Elevator Algorithm,SCAN/C-SCAN):通过以跨越磁道的顺序服务请求来避免饥饿,。**C-SCAN(循环 SCAN)**是一种常见变体。

SPTF(最短定位时间优先,Shortest Positioning Time First)/ SATF(最短接入时间优先):这是一种更优化的算法,它同时考虑寻道时间和旋转延迟,更接近真正的 SJF。由于现代驱动器中寻道和旋转时间大致相当,SPTF 提高了性能。但SPTF 通常在驱动器内部执行,因为操作系统难以准确知道磁头当前的旋转位置和磁道布局。