从硬盘到存储系统:一篇搞懂全闪、混闪、SSD、HDD和多级缓存

看到一套存储设备的介绍,经常会遇到这样的描述:

“全闪架构,采用NVMe SSD,配备多级缓存,支持冷热数据分层。”

这些词看起来都在说“存储很快”,实际上回答的是不同问题:

  • HDD、SSD:用什么设备存数据?
  • SATA、SAS、PCIe、NVMe:设备怎样连接、怎样通信?
  • 全闪、混闪:一套系统里怎样组合存储设备?
  • 缓存、分层:怎样让快设备和慢设备配合工作?

把这几个层次分清楚,存储领域的大部分名词就能串起来。

HDD与SSD:存数据的方式不同

可以把存储系统想象成一座仓库。HDD和SSD首先决定了:货物究竟放在什么样的仓库里。

HDD:靠机械运动寻找数据

HDD是机械硬盘。它把数据记录在磁性盘片上,通过盘片旋转和磁头移动完成读写。

它的特点是:适合用相对较低的单位容量成本保存大量数据,但访问分散数据时容易受到机械运动限制。

读一部连续存放的大电影,磁头可以顺着读取;读取散落在各处的大量小文件,磁头就要不断寻找位置。后者往往更慢。

因此,机械硬盘的短板不只是“大文件传得不够快”,更是面对大量零碎请求时,等待时间比较长。

SSD:用电子方式访问数据

SSD是固态硬盘。如今主流SSD使用NAND闪存保存数据,没有机械硬盘那样的旋转盘片和移动磁头。

省去机械寻址后,SSD通常能更快响应零碎读写,也更适合多个请求同时到来。因此,从机械硬盘换成SSD,开机、启动软件、加载大量小文件的改善,常常比单看连续传输速度更明显。参考:IBM对SSD与HDD的说明

但SSD也有自己的限制,例如闪存写入寿命、持续写入能力、温度以及主控和固件的管理效率。“是SSD”只说明大类,不能说明具体性能。

SATA、SAS、PCIe、NVMe:道路与通信规则

如果HDD、SSD是仓库,那么这些名词涉及仓库与外界之间的道路,以及运货时使用的通信规则。

这个比喻能帮助理解,但实际技术中,接口标准往往同时包含连接、电气和通信等多个方面。

名词 主要描述什么 常见关系
SATA 一套存储连接与通信接口标准 常见于机械硬盘和SATA SSD
SAS 企业存储常用的串行接口体系 既有SAS HDD,也有SAS SSD
PCIe 高速通用互连总线 SSD、显卡、网卡等都可以使用
NVMe 主机访问非易失性存储的协议体系 本地SSD通常通过PCIe使用NVMe
M.2、2.5英寸、EDSFF 外形、尺寸、连接器等规格 仅凭外形不能确定协议和速度

这里有三个特别容易混淆的地方。

第一,SSD不等于NVMe。

SSD可以采用SATA、SAS,也可以采用PCIe与NVMe。NVMe针对非易失性存储的并行访问设计,能够减少传统访问路径的一些开销,但实际性能还取决于设备本身和整个系统。参考:NVM Express官方说明

第二,M.2不等于NVMe。

M.2更多涉及模块形态和连接规格。常见M.2 SSD中,既有SATA产品,也有PCIe NVMe产品;主板插槽支持什么,还需要单独确认。

同样是2.5英寸外形,也可能采用SATA、SAS或PCIe/NVMe。参考:SNIA的SSD形态说明

第三,NVMe并不只用于本机内部连接。

NVMe还可以通过网络传输,这类技术称为NVMe over Fabrics,简称NVMe-oF,包括基于TCP、RDMA等方式的传输。因此,“采用NVMe”本身还不足以描述完整的数据路径。参考:NVMe官方规范概览

一句“M.2 2280、PCIe 4.0 ×4、NVMe、TLC SSD”,其实分别交代了外形尺寸、总线代际与通道数、访问协议、闪存类型和设备类别。

全闪与混闪:说的是整套系统如何搭配

全闪:持久数据存储全部采用闪存

全闪存储,通常指系统的持久数据存储介质全部采用闪存,例如全部使用SSD或专用闪存模块。

这里的“全”,不意味着系统内部只能有闪存。控制器依然可以配备DRAM内存、处理器和缓存。

全闪也不等于全NVMe。 采用SATA或SAS SSD的系统,同样可以是全闪系统。参考:IBM对全闪阵列的定义

全闪的一个重要价值,是减少业务数据访问机械盘的机会,让更多请求获得较低延迟。不过,网络、控制器、软件和数据保护机制仍然会影响最终表现。

混闪:闪存与机械盘配合

混闪通常指SSD与HDD共同组成存储系统:

  • SSD承担需要快速访问的数据或写入缓冲。
  • HDD承担更大规模的数据容量。
  • 软件决定哪些数据放在哪里,以及何时迁移。

它追求的是性能、容量和成本之间的平衡。参考:IBM对混合存储的说明

但“配了SSD”不代表所有数据都能获得SSD的速度。访问的数据如果仍在HDD上,又没有被缓存,就需要等待机械盘。

此外,一台电脑同时装一块SSD和一块HDD,只能说明两种设备共存。它们是否组成一个自动协同的混合存储系统,要看具体配置和软件。

缓存与分层:看起来相似,工作方式不同

SSD和HDD配合时,常见两种方法:缓存和分层存储。

缓存:在更快的位置准备数据,或暂时接住写入

读缓存可以理解为“把常用资料放在手边”。

第一次读取一份数据,系统可能需要去HDD获取,并把它放进SSD缓存;之后再次读取,如果缓存里还保留着,就可以直接返回。

找到所需数据,叫缓存命中;没有找到,叫缓存未命中。

写缓存则像仓库前面的收货区:先快速接住货物,再逐步整理到后方存储。此时缓存可能暂时持有尚未写到下层的最新数据,因此,写缓存不能一概理解为“丢了也没关系的副本”。

分层:决定数据长期放在哪一层

分层存储更像按使用频率安排货架:

  • 经常访问的热数据放在SSD层。
  • 较少访问的冷数据放在HDD层。
  • 访问规律变化后,再调整位置。

两者的核心区别是:

对比项 缓存 分层存储
主要目的 加速访问、吸收写入突发 优化数据在不同介质上的放置
典型动作 命中、填充、淘汰、回写 提升到快层、下沉到慢层
容量怎样理解 缓存盘通常不能直接当作新增业务容量 各层可以承载业务数据,具体取决于系统
能否同时存在 可以 可以

具体产品可能把缓存、日志和分层结合起来,判断时要看数据实际怎样流动。参考:SNIA对缓存与自动分层的定义

多级缓存:不同位置,各自解决一部分等待

“多级缓存”没有一个适用于所有存储产品的固定层数。

它通常表示:在应用程序与最终存储介质之间,有多个位置可以保存常用数据、缓冲写入或整理请求。

以一套可能的系统为例:

所在位置 可能存在的缓存 主要作用
应用程序中 数据库缓冲池等 复用应用经常访问的数据
操作系统中 文件页缓存 利用主机内存减少实际读盘
存储控制器中 DRAM读写缓存 缓冲请求、合并写入、加速读取
存储池中 SSD缓存 为较慢的容量盘提供加速
单块SSD内部 DRAM、SRAM、SLC缓存 管理映射、缓冲或加速写入
单块HDD内部 盘内缓存 缓冲和优化磁盘读写

这是一张“可能出现的位置清单”。实际系统可能没有其中某些层,也可能绕过某些层,每次读写不一定依次经过全部缓存。

CPU的L1、L2、L3缓存也属于多级缓存,但它们主要服务于处理器访问内存,和存储厂商所说的多级缓存属于不同语境。

多级缓存为什么有效?

因为数据访问通常有规律:

刚用过的数据,可能很快再次使用;正在访问的位置附近,也可能接着被访问。

系统利用这些规律,把更可能需要的数据放在更快的位置。

但缓存效果取决于工作负载。反复读取一小批数据,容易命中;一次性扫描远大于缓存的数据集,收益就可能有限。

而且,全闪系统一样可以使用缓存。微软的存储架构文档就列举了用更快的NVMe设备为其他SSD提供缓存的组合。缓存的作用对象不必是机械盘。参考:微软存储池缓存文档

SSD里的DRAM缓存和SLC缓存,又有什么区别?

这两个词经常一起出现,但不是同一种东西。

DRAM:快速工作的内存

SSD内部的DRAM,常用于保存地址映射表等管理信息,有些设计也会用于缓冲用户数据。

地址映射表可以理解为一份目录:电脑使用的是逻辑地址,SSD需要把它对应到闪存中的实际位置。

所以,“SSD配备1GB DRAM”,不代表一定有1GB空间专门用来暂存正在复制的文件。它如何分配,取决于设计。参考:Kingston对SSD内部缓存用途的说明

SLC缓存:让一部分闪存先按更快的方式写入

SLC、MLC、TLC、QLC,常见命名分别对应每个闪存单元保存1、2、3、4个比特。

在其他条件相近时,一个单元存得越多,通常越有利于容量密度,但写入速度、耐久性和控制复杂度也面临更多取舍。具体SSD表现仍要看整体设计。

许多TLC、QLC SSD会拿出部分闪存,以每单元保存一个比特的方式工作,形成常说的伪SLC缓存:

  1. 新数据先写入较快的SLC区域。
  2. 控制器随后将数据整理到TLC或QLC区域。
  3. 腾出的SLC空间继续接收写入。

这就解释了常见现象:复制文件一开始很快,写到一定量后明显降速。

原因之一可能是SLC缓存被用满,后续速度更多受到闪存本体写入能力和后台整理工作的限制。动态缓存还可能随着剩余空间变化而调整大小。参考:三星Intelligent TurboWrite技术白皮书

因此,SSD内部可以同时存在DRAM缓存和SLC缓存;没有独立DRAM,也不等于没有任何缓存。

缓存最关键的区别:何时告诉你“写好了”?

对于读缓存,未命中主要影响速度。对于写缓存,还要弄清楚:系统在什么阶段确认写入完成?

常见策略有两种:

策略 典型工作方式 主要特点
直写,Write-through 写入下层存储并达到要求后,再确认完成 响应更受下层速度影响
回写,Write-back 数据先进入写缓存,满足确认条件后就返回,再写到下层 可以降低突发写入的等待时间

企业存储采用回写,并不一定意味着最新数据只存在普通易失内存里。它可能先将缓存镜像到另一控制器,或使用电池、超级电容等保护机制。

SSD的掉电保护也可能利用储能元件,在供电中断后,把尚在易失缓存中的数据和必要管理信息写入闪存。具体保护范围取决于产品。参考:Kingston对SSD掉电保护的说明

理解这部分,只需抓住一个问题:

设备回复“写成功”时,最新数据在哪里,那个位置能承受哪些故障?

这比只问“缓存有多大”更有意义。

为什么缓存很大,持续写入还是会慢?

缓存可以吸收短时间的突发流量,但长期写入仍需要后方存储消化。

举一个简化例子,以下数字只用于说明原理:

  • 前端持续写入:每秒2GB。
  • 后方持续写出:每秒1GB。
  • 当前可用写缓存:100GB。

缓存每秒净增加1GB,约100秒后就会用满。之后,系统通常需要限制前端写入速度,或者让请求等待。

可以用一个简单关系理解:

缓存可撑时间 ≈ 可用缓存容量 ÷(持续写入速度-持续写出速度)

这个估算忽略了压缩、写入合并和后台任务等因素,但说明了核心问题:短时间跑得快,与长时间保持快,是两种能力。

读缓存也有类似限制。如果热点数据总量超过缓存容量,数据可能不断被淘汰、重新读取,命中率就会下降。

把所有概念放回一张图里

理解一套存储系统,可以按下面的顺序提问:

层次 要回答的问题 对应名词
存储介质与设备 数据靠什么保存? 磁性盘片、NAND闪存;HDD、SSD
连接与通信 设备怎样接入、怎样交换数据? SATA、SAS、PCIe、NVMe
外形规格 设备长什么样,怎样安装? 2.5英寸、M.2、U.2、EDSFF等
系统组合 一套系统用了哪些设备? 全闪、混闪、全机械盘
数据管理 数据放哪里,怎样加速? 缓存、回写、自动分层
实际表现 面对具体业务能做多快? 延迟、IOPS、吞吐量、持续性能

其中,延迟是一次请求要等多久;IOPS是每秒完成多少次读写;吞吐量是每秒传输多少数据。三者有关联,但不能相互替代。

现在再读开头那句话:

“全闪架构,采用NVMe SSD,配备多级缓存,支持冷热数据分层。”

就能理解为:系统使用闪存承载持久数据,通过NVMe访问相关设备,在多个位置实施缓存,并把不同活跃程度的数据安排到不同存储层。这里的冷热分层,也可能发生在不同性能或成本的闪存设备之间。

最终,HDD和SSD决定基础介质特性,接口与协议影响数据通路,全闪和混闪决定设备组合,缓存与分层决定如何利用这些设备。 实际体验则取决于这些部分面对具体业务时,能否一起高效工作。