固态硬盘
前三节讲的全是机械硬盘,它的一切特性——寻道、旋转延迟、调度算法——都建立在”有一个磁臂要移动”这个前提上。
固态硬盘取消了这个前提:它没有任何机械部件。因此本节的正确读法是问:前面那些结论,哪些还成立、哪些整个作废。
机制
组成结构

固态硬盘基于闪存技术,由闪存翻译层和存储介质两部分组成。
存储介质由若干闪存芯片组成,每个芯片包含若干块,每个块又包含若干页。
**闪存翻译层(FTL)**是一个软硬件结合的层,它的作用是把操作系统发来的逻辑块号翻译成实际的物理页地址。
FTL 的存在是理解 SSD 的钥匙:它对操作系统伪装成一块普通的磁盘,向上提供”读第 N 块、写第 N 块”这样的接口,而内部数据究竟放在哪个物理页、换过多少次位置,操作系统完全不知道。
这与 5.3.2 中”扇区备用对操作系统透明”是同一种思路的极致化。
读写的不对称性
这是固态硬盘最重要、也最反直觉的特性:
读和写都以”页”为单位,一页通常几 KB。
但擦除必须以”块”为单位,一块包含若干页。
而闪存的物理特性决定了:一个页只有在被擦除之后才能被写入。
三条合起来产生了一个严重的后果:要修改一页中的数据,不能就地改写,必须先把整个块读出来、擦除整个块、再把修改后的内容连同块中其他页一起写回。
这就是”写放大”现象——写入几 KB 的数据,实际引发了整块的擦写。 它解释了为什么固态硬盘的随机小块写入性能明显弱于顺序写入,也解释了下面的磨损问题。
磨损均衡
闪存块的擦除次数是有限的,超过次数后该块就会损坏。
若不加干预,问题会非常严重:文件系统的元数据区(如位示图、目录)会被极其频繁地改写,对应的那几个块很快就会被擦坏,而磁盘的其余部分几乎全新。
磨损均衡就是设法让所有块的擦除次数尽量接近,有两种策略:
动态磨损均衡——写入数据时,优先选择擦除次数少的空闲块。它只在”正要写”的时候起作用。
静态磨损均衡——在动态的基础上更进一步:系统会主动监测并迁移那些长期存放冷数据、很少被擦写的块,把冷数据搬到已经磨损较多的块上,从而把那些”一直很新”的块腾出来投入使用。
两者的差别在于处理对象:动态磨损均衡只能均衡”正在被写的那部分数据”所占的块;静态磨损均衡把那些从不被改写的冷数据块也拉进了均衡范围。
边界
关于固态硬盘的正确说法
疑问点:关于固态硬盘的正确表述
- 下列关于固态硬盘的说法中,正确的是( )。 A. 固态硬盘的写速度比较慢,性能甚至弱于常规硬盘 B. 相比常规硬盘,固态硬盘优势主要体现在连续存取的速度 C. 静态磨损均衡算法通常比动态磨损均衡算法的表现更优秀 D. 写入时,静态磨损均衡算法每次选择使用长期存放数据而很少擦写的存储块
答案 C。
C 对:如上所述,静态磨损均衡把冷数据块也纳入了均衡范围,覆盖面更广,因此整体磨损更均匀、寿命更长。
A 错:固态硬盘的写入虽然受写放大影响、不如读快,但总体性能仍远强于机械硬盘,尤其在随机访问上。
B 错在”主要体现在连续存取”。固态硬盘最大的优势恰恰是随机存取——机械硬盘的随机访问要付出寻道和旋转延迟,动辄数毫秒;固态硬盘没有机械部件,随机访问与顺序访问的延迟差距小得多。在连续大文件读写上,两者的差距反而没那么悬殊。
D 错在”每次”。静态磨损均衡不是每次写入都去挑冷数据块——那样反而会不停地搬运数据。它是周期性地检查并迁移冷数据,属于后台维护动作,不是每次写入时的选块策略。每次写入时选择擦除次数少的空闲块,那是动态磨损均衡的做法。
这道题的四个选项恰好覆盖了本节的四个要点,值得整题记住。
机械硬盘的哪些结论在固态硬盘上作废
这是本节最值得整理的一条,因为它把 5.3 前三节全部串了起来:
作废的:寻道时间、旋转延迟这两个概念在固态硬盘上根本不存在——没有磁臂也没有盘片。因此所有磁盘调度算法(SSTF、SCAN、C-SCAN)在固态硬盘上都失去意义,它们优化的那个东西不存在了。“磁臂黏着”自然也不存在。
仍然成立的:逻辑格式化那一套(根目录、空闲空间管理、引导块)完全不变——因为那属于文件系统层,FTL 已经把固态硬盘伪装成了一块普通磁盘。
新增的:擦除以块为单位、写前必须擦除、擦除次数有限、需要磨损均衡——这四条是机械硬盘完全没有的问题。
一句话概括:物理层的结论全变了,文件系统层的结论全没变——这正是 FTL 这一层抽象的价值所在。
固态硬盘与机械硬盘各自的”最小单位”
这组对照容易混,列出来一目了然:
机械硬盘:读写的最小单位是扇区,没有”擦除”这个动作——写入就是直接改写磁性方向。
固态硬盘:读写的最小单位是页,擦除的最小单位是块,且写之前必须先擦。
“读写单位与擦除单位不一致”是固态硬盘一切复杂性的根源:写放大、磨损均衡、FTL 的地址映射,全都是为了应付这一条。
对照速查
| 固态硬盘的组成 | 作用 |
|---|---|
| 闪存翻译层 FTL | 把逻辑块号翻译成物理页地址,对操作系统伪装成普通磁盘 |
| 存储介质 | 若干闪存芯片 → 若干块 → 若干页 |
| 操作 | 最小单位 | 约束 |
|---|---|---|
| 读 | 页 | — |
| 写 | 页 | 必须先擦除所在的块 |
| 擦除 | 块 | 次数有限 |
| 动态磨损均衡 | 静态磨损均衡 | |
|---|---|---|
| 何时起作用 | 写入时选块 | 周期性后台迁移 |
| 选什么 | 擦除次数少的空闲块 | 迁移冷数据块 |
| 覆盖范围 | 只覆盖被改写的数据 | 把冷数据块也纳入均衡 |
| 效果 | — | 通常更优 |
| 与机械硬盘对照 | 机械硬盘 | 固态硬盘 |
|---|---|---|
| 机械部件 | 有(磁臂、盘片) | 无 |
| 寻道 / 旋转延迟 | 有 | 不存在 |
| 磁盘调度算法 | 有意义 | 失去意义 |
| 随机访问 | 慢(毫秒级) | 快,与顺序访问差距小 |
| 擦除 | 无此动作 | 以块为单位,写前必擦 |
| 寿命限制 | 机械磨损 | 擦除次数有限 |
| 文件系统层结论 | 完全相同(FTL 屏蔽了差异) |
考点
- FTL 把逻辑块号翻译成物理页地址,对操作系统伪装成普通磁盘
- 读写以页为单位,擦除以块为单位,写前必须先擦除——一切复杂性的根源
- 静态磨损均衡通常优于动态,因为它把冷数据块也纳入均衡(真题答案 C)
- 静态磨损均衡是周期性迁移,不是”每次写入都选冷块”(选项 D 的错处)
- 固态硬盘的优势主要在随机存取,不是连续存取(选项 B 的错处)
- 磁盘调度算法在固态硬盘上失去意义;但文件系统层的结论完全不变
链接
- 🏠 返回总览:操作系统第 5 章:输入/输出管理总览
- ⬅️ 上一节:5.3.3 磁盘调度算法
- 🔗 被 FTL 屏蔽掉的那一层,见 5.3.1 磁盘
- 🔗 同样”对操作系统透明”的做法,见 5.3.2 磁盘的管理
- 📖 名词库:第 5 章名词库