磁盘与固态硬盘:外部存储设备工作原理
前面已经知道,主存解决的是程序运行时的工作空间问题,但它通常掉电易失,容量成本也不适合无限做大。于是计算机还必须依赖另一类更慢、但更大且可持久保存数据的存储设备。
这就引出了外部存储,也就是平时最常接触的机械硬盘和固态硬盘。
如果要继续往下问,一个很自然的问题就是:
它们都叫“存储设备”,但为什么性能表现差别这么大?底层工作方式到底有什么不同?
这正是这一篇要解决的问题。
一、为什么外部存储是必须存在的
主存虽然速度比外存快很多,但它并不适合作为长期数据归宿:
- 通常掉电后内容丢失;
- 容量扩展成本较高;
- 系统关机后程序和数据不能只靠主存保存。
所以计算机必须有一种:
- 容量更大;
- 成本更低;
- 掉电不丢;
- 能长期保存文件与程序镜像;
的存储层。这就是外部存储设备存在的根本原因。
二、外部存储为什么通常比主存慢很多
因为它们面向的目标不同。
主存更重视:
- 随机访问速度;
- 与 CPU 的高频协作;
- 运行时读写效率。
而外部存储更重视:
- 大容量;
- 成本;
- 持久性;
- 长期保存。
所以外存不是“慢一点的内存”,而是服务于完全不同设计目标的一层。它在速度上做出了妥协,换来容量和持久性优势。
三、机械硬盘的基本工作思路是什么
机械硬盘 HDD 的核心是磁记录。
可以先这样理解:
- 里面有高速旋转的盘片;
- 盘片表面存储磁信号;
- 磁头负责在盘片上方读写信息;
- 访问某个数据时,需要把磁头移动到对应磁道,并等待盘片旋转到目标位置。
这就意味着一次磁盘访问通常不是立刻完成的,而会包含多个时间开销。
四、为什么机械硬盘随机访问比较慢
因为它存在明显的机械动作成本,主要包括:
- 寻道时间:磁头移动到目标磁道;
- 旋转延迟:等待盘片转到目标扇区;
- 传输时间:真正把数据读出来或写进去。
其中前两项都属于“找到目标”的时间,而不是“传数据本身”的时间。
所以对于小块随机访问来说,真正的数据量可能不大,但等待位置对齐的成本却很高。
这也是为什么机械硬盘非常偏爱顺序访问:
一旦位置找到了,连续读写就能大幅摊薄机械寻位成本。
五、固态硬盘为什么看起来快很多
固态硬盘 SSD 的核心是闪存存储,不依赖机械旋转和磁头移动。
这意味着:
- 没有机械寻道;
- 没有旋转等待;
- 随机访问延迟显著低于 HDD;
- 并发访问和内部调度空间更大。
所以 SSD 相比 HDD 最大的变化,不只是“带宽更高”,更重要的是:
随机访问成本被大幅降低。
这对操作系统、数据库、缓存系统和现代应用性能都有非常直接的影响。
六、SSD 是不是就完全没有复杂性
也不是。
虽然 SSD 没有机械结构,但闪存也有自己的物理特性和限制,例如:
- 写入和擦除粒度不完全一致;
- 某些写入前需要先擦除;
- 单元寿命有限;
- 需要做磨损均衡和垃圾回收。
所以 SSD 的快,并不是“存储介质变简单了”,而是:
- 机械延迟被消除了;
- 复杂性转移到了控制器和管理策略中。
这也是为什么现代 SSD 控制器本身就很像一个小型复杂系统。
七、为什么块设备和文件系统会特别关心访问模式
因为外部存储设备通常不是按一个字节一个字节最优工作的,而更适合按块传输。
这意味着:
- 顺序访问更容易高效;
- 批量读写通常比分散小请求更友好;
- 数据布局会直接影响实际吞吐;
- 文件系统和数据库页管理策略会受到底层设备特性影响。
所以硬盘和 SSD 的底层差异,会一路传导到文件系统、数据库、日志系统和缓存设计中。
八、为什么“顺序 I/O”和“随机 I/O”差别这么大
这是理解外存性能的关键。
对于 HDD:
- 顺序 I/O 可以连续读写,机械动作少;
- 随机 I/O 不断跳位置,寻道和旋转延迟会反复出现。
对于 SSD:
- 随机 I/O 代价比 HDD 小很多;
- 但顺序 I/O 通常仍然更容易获得更高带宽和更好内部调度效率。
所以“访问模式”不是软件层面的细枝末节,而会直接决定底层设备能否被高效利用。
九、从工程和后端视角,这部分为什么重要
理解 HDD 和 SSD 的差异,会帮助你更自然地理解很多系统实践:
- 为什么数据库特别重视顺序日志写入;
- 为什么随机小 I/O 对机械盘伤害很大;
- 为什么 SSD 改善了大量随机读场景的体验;
- 为什么文件系统、对象存储和缓存层会根据介质特性做不同设计;
- 为什么存储系统性能分析总会关注 IOPS、吞吐和延迟分布。
所以这部分内容和现实系统设计是直接相连的。
十、为什么外存仍然是性能瓶颈的重要来源
即使 SSD 已经很快,它和主存、Cache 相比仍然慢很多个量级。
这意味着:
- 一旦程序频繁落到外存;
- 或者发生大量缺页、磁盘读写、随机小 I/O;
- 系统整体延迟就可能被迅速拉高。
所以现代系统中大量优化的目标,其实都是:
- 尽量减少真正落盘次数;
- 尽量把热点数据留在更高层存储;
- 尽量让 I/O 变得更顺序、更批量、更可预测。
十一、学习这一部分最容易踩的坑
1. 把 HDD 和 SSD 只看成“一个慢一个快”
更关键的是它们的物理机制完全不同。
2. 忽略随机访问和顺序访问的差异
这会让很多真实性能现象无法解释。
3. 以为 SSD 没有管理复杂性
它只是把复杂性从机械动作转移到了闪存控制和调度逻辑中。
总结
磁盘和固态硬盘是计算机持久化存储体系中的核心设备。真正值得先抓住的,是这些认识:
- 外部存储存在的根本原因是容量大、成本低且可持久保存;
- HDD 依赖机械运动,因此随机访问代价高;
- SSD 去掉了机械延迟,随机访问性能显著提升;
- 访问模式会深刻影响外部存储设备的实际表现;
- 文件系统、数据库和高性能服务的很多设计,都在响应这些底层介质特性。
把这一篇理解透之后,下一步再看并行与多核时,就会更容易意识到:计算平台的整体性能,从来不只是 CPU 一颗芯片的事,而是计算、内存和存储整条链路协同出来的结果。
参考资源:
- 《深入理解计算机系统》
- 《计算机组成与设计:硬件/软件接口》
- Wikipedia - Hard disk drive
- Wikipedia - Solid-state drive