External Storage And Disk Basics
外存、辅存和外设
外存储器也叫辅助存储器,用于长期保存大量数据。磁盘、磁带、光盘、U 盘、SSD 都可以放在这一层理解。
外存同时也是一种 I/O 设备:主机可以从外存读入数据,也可以把数据写出到外存。
CPU 通常不能直接访问辅存中的指令和数据。辅存中的内容要调入主存后,才成为 CPU 可以直接取指、读写和处理的数据。
磁表面存储器是在载体表面涂覆磁性材料,用磁化状态记录二进制信息。磁盘、磁带、磁鼓都属于磁表面存储器。
磁表面存储器的优点:
- 容量大,单位容量成本低。
- 信息可以长期保存,断电后不丢失。
- 可以脱机保存和搬运。
- 非破坏性读出,读出后原信息仍然保留。
它的主要限制来自机械运动。磁头移动、盘片旋转都需要时间,因此磁盘访问速度通常慢于主存和 Cache 这类半导体存储器。
磁表面存储器还会涉及具体的磁记录方式。存储器把二进制信息变换为磁层中的磁化翻转状态序列,读写时由磁头和磁性记录介质的相对运动完成电磁转换。这个内部编码过程通常不作为外存管理的重点,只需要知道它解释了为什么磁盘属于机械-电磁结合的存储设备。
磁盘基本结构
磁盘的表面被划分为一个个同心圆,这些同心圆称为磁道。每个磁道又被划分为多个扇区,每个扇区可以存放固定大小的数据。
常见术语:
| 术语 | 含义 |
|---|---|
| 盘片 | 磁盘内部用于记录信息的圆形介质 |
| 盘面 | 盘片的一面,一个盘片通常有两个盘面 |
| 磁头 | 负责读写某个盘面上的数据 |
| 磁道 | 盘面上的同心圆轨迹 |
| 扇区 | 磁道上的一段区域,通常是磁盘读写的最小物理单位 |
| 磁盘块 | 操作系统管理外存空间的块单位,通常对应一个或多个扇区 |
| 柱面 | 多个盘面上半径相同的磁道组成的集合 |
同一个柱面内的多个磁道半径相同。访问同一柱面内不同盘面的数据时,只需要切换磁头,不需要移动磁臂,因此比跨柱面访问更快。
通常按“每条磁道存放相同数据量”理解。外侧磁道周长更长,但并不因此存放更多数据;内侧磁道周长短,所以位密度更高。
硬盘存储器通常由三部分组成:
- 盘片:真正保存磁化信息的介质。
- 磁盘驱动器:核心部件包括磁头组件和盘片组件,负责机械定位和读写动作。
- 磁盘控制器:主机和磁盘之间的接口,负责接收命令、控制磁盘读写并传输数据。
磁盘控制器是磁盘设备与主机之间的桥。主机不会直接操纵磁头和盘片,而是通过控制器发出读写命令。
从 I/O 系统角度看,磁盘控制器就是一种 I/O 控制器。CPU 或 DMA 控制器面对的是控制器中的寄存器和端口;寻道、选择磁头、等待扇区、校验和坏块替换等细节由磁盘控制器和磁盘驱动器配合完成。
磁盘分类
磁盘可以按磁头和盘片是否可移动来分类。
| 分类角度 | 类型 | 含义 |
|---|---|---|
| 磁头是否移动 | 活动头磁盘 | 磁头可以在磁臂带动下移动到不同磁道 |
| 磁头是否移动 | 固定头磁盘 | 每个磁道对应一个磁头,磁头本身不需要移动 |
| 盘片是否可更换 | 可换盘磁盘 | 盘片可以从驱动器中取出、更换 |
| 盘片是否可更换 | 固定盘磁盘 | 盘片固定在驱动器内部 |
现代硬盘通常按活动头、固定盘来理解。固定头磁盘可以减少寻道动作,但需要更多磁头,结构和成本不同。
磁盘地址
磁盘物理地址通常可表示为:
$$
(\text{柱面号},\ \text{盘面号},\ \text{扇区号})
$$
一次磁盘块读写大致经历以下过程。
- 根据柱面号移动磁臂,使磁头到达目标柱面。
- 根据盘面号选择对应磁头。
- 等待磁盘旋转,使目标扇区转到磁头下方。
- 完成数据读出或写入。
连续读取地址标号相邻的多个物理块,如果采用前者,盘面号会切换频繁但柱面号相对稳定。这样只需要切换磁头,而不需要移动磁臂,可以减少寻道时间。但如果采用后者,则会更为频繁地换柱面号,造成频繁移动磁臂。
磁盘容量和性能指标
磁盘容量
磁盘容量是磁盘能够存储的字节总数。
| 类型 | 含义 |
|---|---|
| 非格式化容量 | 磁记录表面理论上可以利用的磁化单元总量 |
| 格式化容量 | 按某种格式划分扇区、加入管理和校验信息后,实际可用于存放数据的容量 |
格式化后,磁盘需要保存扇区头、校验信息等管理内容,因此格式化容量通常小于非格式化容量。
记录密度
记录密度描述盘片单位面积可以记录多少二进制信息。
| 指标 | 含义 |
|---|---|
| 道密度 | 沿半径方向单位长度上的磁道数 |
| 位密度 | 磁道单位长度上能记录的二进制位数 |
| 面密度 | 位密度和道密度的综合效果 |
平均存取时间
磁盘访问时间主要由三部分组成:
$$
T_a=T_s+T_r+T_t
$$
| 符号 | 含义 |
|---|---|
| $T_s$ | 寻道时间,磁头移动到目标磁道所需时间 |
| $T_r$ | 旋转延迟,目标扇区转到磁头下方所需时间 |
| $T_t$ | 传输时间,真正读出或写入数据所需时间 |
机械硬盘之所以慢,关键是寻道时间和旋转延迟。
关于具体计算式与减少延迟的方法详见Disk-Scheduling-And-Management
数据传输率
数据传输率是磁盘存储器单位时间内向主机传送数据的字节数。单位B/s。它描述数据真正开始传输后的吞吐能力。
若磁盘转速为 $r$ 转/秒,每条磁道容量为 $N$ 字节,则连续读写时的最大数据传输率可近似为:
$$
D_r=rN
$$
这个公式只描述磁头已经定位到目标磁道后的连续传输能力,不包含寻道时间和旋转延迟。
磁盘阵列 RAID
RAID 把多个独立物理磁盘组织成一个逻辑磁盘。它通过数据分割、交叉存储和并行访问提高传输率,也可以通过镜像或校验提高可靠性。
常见 RAID 级别:
| 级别 | 核心做法 | 特点 |
|---|---|---|
| RAID 0 | 条带化存储,无冗余、无校验 | 读写速度和可用容量提高,但没有容错能力 |
| RAID 1 | 镜像存储,同一份数据写到两块盘 | 可靠性高,但有效容量约减半 |
| RAID 2 | 使用海明码纠错 | 以纠错码提供容错能力 |
| RAID 3 | 位交叉奇偶校验 | 多盘并行,设置校验信息 |
| RAID 4 | 块交叉奇偶校验 | 以块为单位分布数据,校验盘可能成为瓶颈 |
| RAID 5 | 分布式奇偶校验 | 没有独立固定校验盘,兼顾容量、性能和容错 |
RAID 0 可以类比低位交叉编址:逻辑上连续的数据块分散到不同磁盘上,从而并行访问。RAID 1 通过保存副本提高可靠性。带校验的 RAID 则用额外校验信息在磁盘故障时恢复数据。