SSD And Flash Storage
Flash 与 SSD
Flash Memory 是一种非易失性半导体存储器,断电后仍能保存信息。U 盘、SD 卡、SSD 都基于 Flash。
SSD 是固态硬盘,通常可以理解为:
$$
\text{SSD} = \text{控制单元} + \text{Flash 存储单元}
$$
SSD 与普通 Flash 存储芯片使用的存储介质类似,但 SSD 的控制单元更复杂,要负责地址映射、磨损均衡、坏块管理、垃圾回收等工作。
页和块
SSD 内部常以页和块组织数据。
| 单位 | 描述 |
|---|---|
| 页 | 读写的基本单位,常见大小为 512 B 到 4 KB |
| 块 | 擦除的基本单位,常见大小为 16 KB 到 512 KB;即一块包含多页 |
==SSD 通常按页读写,但按块擦除==。
这意味着 SSD 不能像 RAM 那样随意覆盖一个已有数据的位置。若要改写旧数据,控制器可能需要搬移同块内仍有效的页,擦除整个块,再写入新数据。
SSD 读快写慢
SSD 读数据时,可以直接按页读取;写数据时却受到擦除单位限制。
写入旧位置时,可能经历:
- 读取原块中仍然有效的页。
- 擦除整个块。
- 把有效页和新页写入新的位置。
- 更新地址映射关系。
因此 SSD 的写操作往往比读操作复杂,也可能出现写放大:用户看似只写入少量数据,SSD 内部却移动和写入了更多数据。
SSD 与机械硬盘
| 项目 | 机械硬盘 HDD | 固态硬盘 SSD |
|---|---|---|
| 存储介质 | 磁表面介质 | Flash 芯片 |
| 访问方式 | 依赖磁头移动和盘片旋转 | 电子访问,无机械寻道 |
| 随机访问 | 受寻道和旋转延迟影响大 | 随机访问性能好 |
| 顺序访问 | 适合连续块传输 | 顺序读写也快 |
| 写入特点 | 可直接改写目标位置 | 常受擦除单位限制 |
| 典型问题 | 机械延迟、抗震性差 | 擦写寿命、写放大、价格 |
Note
SSD 没有磁臂移动和盘片旋转,因此随机访问性能远好于机械硬盘。但这不意味着 SSD 写入完全没有代价,Flash 的擦除限制仍然是核心问题。
Flash 块的擦除次数有限。如果总是反复擦写同一批块,这些块会先达到寿命上限。
磨损均衡让 SSD 控制器尽量把擦除次数分散到不同块上,使各块老化程度更接近,从而延长整体寿命。
常见策略可以分为两类:
| 策略 | 做法 | 解决的问题 | 性能代价 |
|---|---|---|---|
| 动态磨损均衡 | 新写入的数据尽量写到擦除次数较少的空闲块上 | 避免少数空闲块被频繁擦写 | 只在写入时选择空闲块,额外开销较小 |
| 静态磨损均衡 | 把长期不变的冷数据从擦除次数少的块搬走,让这些块也参与后续写入 | 避免存放冷数据的块长期闲置,导致其余块承担过多擦写 | 需要主动搬移冷数据,会增加内部读写和写放大 |
动态磨损均衡通常对性能影响较小。静态磨损均衡还会主动搬移冷数据,因此会占用控制器和 Flash 带宽,短期性能代价更高,但能让全盘块的擦除次数更接近,长期寿命更均匀。
但对于普通用户,实际上并不是很需要担心寿命问题
一个简化估算:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Elian's blog page!