关键问题:如何存储和访问磁盘上的数据
现代磁盘驱动器如何存储数据?接口是什么?数据是如何安排和访问的?磁盘调度如何提高性能?
1. 接口
驱动器制造商唯一保证的是单个512字节的写入是原子的,即它将完整地完成或者根本不会完成,因此,如果发生了不和时宜的掉电,则只能完成较大写入的一部分。
通常可以假设访问驱动器地址空间内两个彼此靠近的块将比访问两个相隔很远的块更快,人们通常可以假设访问连续块是最快的访问模式,并且通常比任何更随机的访问模式快得多。
2. 基本几何形状
3. 简单的磁盘驱动器
单磁道延迟——旋转延迟rotational delay, rotation delay:必须等待期待的扇区旋转到磁头下
多磁道延迟——寻道时间,驱动器将磁盘臂移动道正确的磁道的时间
完整的I/O时间图包括了:首先寻道,然后等待转动延迟,最后传输。
磁道偏斜,许多驱动器会采用这种方式,以确保即使在跨越磁道边界时,顺序读取也可以方便地服务
现代磁盘驱动器还有一个重要组成部分时缓存,也被称为磁道缓冲区
在写入数据时,驱动器面临一个选择:它应该将在数据放入其内存之后,还是写入实际写入磁盘之后回报写入完成?前者称为后写缓存(有时也称立即报告),后者则称为直写,前者往往更快,但可能有危险。
4. I/O时间:用数学
T_I/O = T_寻道 + T_旋转 + T_传输
I/O速率定义
R_I/O = 传输大小 / T_I/O
两种常见的负载:
- 随机工作负载,它向磁盘上随机位置发出小的读取请求
- 顺序工作负载,只是从磁盘连续读取大量扇区,不会跳过
随机和顺序工作负载之间的驱动性能差距很大
高端性能驱动器与低端容量驱动器之间的性能差异很大