计算机基础:存储系统(HDD vs SSD)

对比 HDD 与 SSD 工作原理、SATA vs NVMe 接口速度、SLC/MLC/TLC/QLC 寿命、SSD 优化(4K 对齐、TRIM)与 RAID 阵列配置。

为什么仅仅换一块 SSD 就能让一台五年前的笔记本"复活"?为什么 TLC 颗粒标称只有 1 000 次擦写,实际却能轻松撑过十年?为什么标称 3 500 MB/s 的新 SSD 用了几周后会突然掉到 50 MB/s?这是计算机基础深度解析系列的第三篇,我们从第一性原理出发回答这些问题:旋转磁盘片与 NAND 电荷阱在物理层面究竟差在哪里、接口(SATA、PCIe Gen 3/4/5)的带宽如何与协议(AHCI vs NVMe)的并行度相互作用、RAID 各级别如何在容量、性能、容错之间取舍、文件系统如何把字节组织成文件、以及如何在生产环境里把这一切跑得既快又安全。

系列导航

📚 计算机基础深度解析系列(共 6 篇)

  1. CPU 与计算核心
  2. 内存与高速缓存
  3. → 存储系统(HDD vs SSD、接口、RAID、文件系统、分层)← 当前位置
  4. 主板、显卡与扩展系统
  5. 网络、电源与故障排查
  6. 硬件深度专题

第一部分:HDD vs SSD —— 两种截然不同的物理学

机械硬盘和固态硬盘之间最本质的区别不在于"转或不转",而在于单个比特如何存储、以及读取它要付出多大代价。HDD 把每个比特存储为旋转盘片上一颗微小磁性颗粒的磁化方向,读它需要先做一次机械寻道(4–10 ms),然后等盘片把目标扇区转到磁头下方(7 200 RPM 平均 4 ms 旋转延迟)。SSD 把每个比特存储为 NAND 单元里浮栅或电荷阱晶体管的阈值电压,读它是纯电气操作,微秒级完成。

HDD 与 SSD 物理结构对比

结构差异决定一切。 图左 HDD 内部,每次随机读取至少要付出一次寻道 + 一次旋转延迟,合计约 10 ms。顺序吞吐受限于"每转盘片下方能扫过多少数据"——现代 24 TB 盘外圈大约 200 MB/s,内圈更低。图右 SSD 内部,控制器把同一个读请求并发分发到多颗 NAND die 上,所以驱动器的持续带宽取决于控制器能同时驱动多少颗 die,与任何机械部件无关。

属性HDD(7 200 RPM)SATA SSDNVMe Gen 4 SSD
比特存储介质盘片磁性颗粒NAND 电荷阱NAND 电荷阱
随机读延迟~10 ms~100 µs~30 µs
顺序读100–200 MB/s550 MB/s7 000 MB/s
4 KiB 随机 IOPS~120~95 000~1 000 000
待机/工作功耗5–10 W2–4 W4–7 W
抗冲击(运行中)~30 G~1 500 G~1 500 G
元/TB(2026)~110~430~790
主流单盘容量上限24 TB8 TB8 TB

HDD 还在两个维度上保持优势:单位容量成本故障后取证恢复的可能性(磁性编码可在主控烧毁后被读出)。除此之外,所有用户能"感受"到的指标——开机、应用启动、关卡加载、大文件复制、续航——SSD 都全面胜出。

为什么换 SSD 是感知最强的硬件升级

用户感受不到顺序带宽,能感受到的是随机读延迟队列深度。开 Windows 要触碰约 30 000 个小文件,启动 Chrome 再触碰 4 000 个。HDD 上每次都要付一次完整寻道;NVMe SSD 上这些请求并发塞进上千个在飞命令里同时处理。这就是为什么 HDD → SSD 的开机时间通常缩短 4–7×——比双倍内存或升级一代 CPU 带来的体感提升大得多。

第二部分:存储性能 —— 三个真正重要的数字

绝大多数存储决策可以靠吞吐IOPS延迟这三个数字(看正确的分位数)做出。平均值会骗人,长尾才是用户感受到的。

吞吐、IOPS 与延迟(对数坐标)

  • 吞吐(MB/s) 在你搬运大块连续数据时重要:视频剪辑、备份、游戏补丁。每代接口(SATA → PCIe 3 → 4 → 5)的天花板基本是上代的两倍。
  • IOPS 在其他几乎所有场景都重要:启动应用、编译代码、跑数据库、开机。HDD → SSD 这一跳是三个数量级——从 120 跳到 95 000——这就是为什么哪怕一块入门级 SATA SSD 都让人觉得脱胎换骨。
  • 延迟 在并发负载下重要。现代 NVMe Gen 4 一次 4 KiB 随机读 ~30 µs,HDD 同样的操作要 ~10 ms,差距 300×;而且 HDD 在高队列深度下会进一步恶化(请求排队、寻道抖动)。

经验法则:队列深度为 1 时延迟主导,队列深度大时 IOPS 与吞吐主导。消费者负载几乎永远是 QD1,所以 NVMe Gen 5(优势集中在 QD32+)对桌面用户提升边际,而对数据库服务器提升巨大。

怎么诚实地读规格表

厂商标称的"7 000 MB/s 读、100 万 IOPS"通常用 128 KiB 顺序QD256 在全新空盘、SLC 缓存空闲时测得。真实桌面负载大致:

  • 持续写入只能跑到标称顺序值的 50–70%(SLC 缓存写满之后)。
  • QD1 的 IOPS 只有标称的 5–15%。
  • 当盘用了超过 70% 时延迟会变成标称的 2–4×。

永远要看SLC 缓存写满后的持续写入速度QD1 延迟——这两个才决定盘"用起来"的感觉。

第三部分:SSD 内部 —— NAND、FTL,与 TLC"区区 1 000 次"为什么够你用一辈子

NAND 单元就是一个阈值电压可被编程的晶体管。SLC 一个单元存 1 bit(2 个电压等级),MLC 存 2 bit(4 级),TLC 存 3 bit(8 级),QLC 存 4 bit(16 级)。每多压一个比特,单位容量成本约腰斩,但寿命减为 1/4,读延迟翻倍

颗粒类型bit/单元电压等级P/E 次数相对成本/GB当前出货场景
SLC12~100 000工业 / SSD 缓存
MLC(eMLC)243 000–10 000企业级(消费几乎绝迹)
TLC381 000–3 0001.0×主流消费 + 数据中心
QLC416500–1 0000.7×仓库盘 / 入门级

让人意外的寿命算术

寿命数字看上去吓人,代入真实负载就会发现完全是杞人忧天。一块 1 TB TLC SSD、1 000 次擦写,可写入 1 PB;重度桌面用户每天写 ~50 GB,普通用户每天写 5–15 GB:

重度用户:1 PB ÷ (50 GB/天 × 365)  ≈ 55 年
普通用户:1 PB ÷ (15 GB/天 × 365)  ≈ 183 年

更利好的是,主控的磨损均衡会把擦写均匀分散到所有 NAND 块,健康盘上的写入放大只有 1.1–1.5 倍(不是早期 SSD 的 10 倍)。所以对绝大多数人来说,瓶颈是"还没用坏就先淘汰了"。例外是持续高写入场景——视频采集、日志服务器、区块链节点——这种场景请挑 TBW > 600 的 TLC 盘并每季度看一次 SMART 的 Wear Leveling Count

为什么新 SSD 飞快、装满之后就慢

主控会用一段 SLC 缓存(一块 TLC/QLC 区域以 1 bit/单元模式工作,速度更快)来吸收写入。缓存满了之后回落到原生 TLC/QLC 速度——QLC 可能慢 5–10×。盘越满两件事同时发生:SLC 缓存收缩(因为它本来就是从空闲 TLC 页里临时挪用),垃圾回收可整理的空块越来越少,写入放大上升。这就是为什么 SSD 至少留 15% 空闲不是可选建议——它同时保住了 SLC 缓存与垃圾回收的工作面。

第四部分:接口与协议 —— SATA AHCI vs NVMe over PCIe

吞吐由物理总线决定,延迟和 IOPS 由协议决定。SATA + AHCI 是 2003 年围绕"存储慢且串行"的假设设计的,NVMe 是 2011 年围绕"存储快且大规模并行"重新设计的,架构差距巨大。

NVMe vs SATA 架构

维度SATA + AHCINVMe over PCIe
命令队列数1最多 65 535
队列深度32每队列最多 65 536
MSI-X 中断1每个队列一个
单命令开销~6 µs< 3 µs
物理总线SATA III、6 Gb/s、半双工PCIe Gen 3/4/5 ×4、全双工
实际可用带宽~550 MB/s3.5 / 7 / 12 GB/s

NVMe 的并行能力(65 535 队列)就是百万 IOPS 的关键——每个 CPU 核心可以��占一个无锁队列驱动 SSD,AHCI 的单队列从结构上就做不到这一点。

存储接口演进,1986 → 2022

带宽对数图讲了一个干净的故事:从 PATA-133(1986)到 SATA III(2009),23 年只快了 4×;从 SATA III 到 NVMe Gen 5(2022),13 年快了 27×——一旦协议不再是瓶颈,每一代 PCIe 都直接转化成存储带宽。规律是:接口带宽大约每两代 PCIe(≈4 年)翻一倍,SSD 控制器在 12 个月内跟上。

NVMe 在什么场景真的赢 SATA

桌面 QD1 负载(开机、开应用),NVMe Gen 3 比 SATA 快 30–40%——可感知但不震撼。真正的差距出现在:

  • 队列深度 ≥ 4(编译、虚拟化、数据库、视频剪辑工程盘)。
  • 多个进程同时争用磁盘。
  • 单文件传输大于 SLC 缓存(通常 > 50 GB)。

预算装机做纯系统盘,SATA SSD 能吃下 NVMe 80% 的体感收益、只花 50% 的钱。

第五部分:RAID —— 用容量换容错

RAID 把多块物理盘组合成一个逻辑卷。不同的 RAID 级别在三个旋钮——容量利用率性能容错性——之间取舍。实际生产环境会遇到的五个级别:

RAID 各级别 —— 条带化、镜像、奇偶校验

级别最少盘数可用容量容错适用场景
RAID 0 —— 条带化2100%0 块(任意一块挂 = 全丢)临时缓存、视频剪辑暂存
RAID 1 —— 镜像250%1 块系统盘、小型 NAS、最简单的可靠性
RAID 5 —— 单奇偶3(n−1)/n1 块文件服务器、平衡型负载
RAID 6 —— 双奇偶4(n−2)/n2 块大阵列(≥ 6 盘),重建期间太危险
RAID 10 —— 镜像 + 条带450%每个镜像对 1 块(通常合计 2 块)数据库、虚拟机、关键业务

RAID 5 的"重建炸弹"

RAID 5 中一块盘挂掉后,剩下所有盘都要从头到尾全读一遍来重建丢失的数据。现代 16 TB HDD 重建一次要 18–30 小时持续重负载 I/O——而幸存盘恰恰最容易在这段时间里挂掉(同批次、同型号、同年龄)。七盘 16 TB 阵列重建期间发生第二次故障的实证概率为 1–3%。所以单盘容量 > 4 TB 的 HDD 阵列默认上 RAID 6(容忍两块同时挂)。SSD 阵列因为带宽高、重建快,RAID 5 仍可接受。

RAID 不是备份

RAID 防的是硬件故障,它不防:

  • 误删(阵列忠实地把删除复制一份)。
  • 勒索病毒(阵列忠实地把加密的块复制一份)。
  • 文件系统损坏、控制器烧毁、火灾、盗窃、雷击。

RAID 买的是可用性,备份买的是可恢复性——千万别混淆。

第六部分:文件系统怎样把"块"组织成"文件"

裸块设备只懂在 LBA 上读写定长扇区。文件系统这一层把人类概念(文件、目录、权限、时间戳)映射到这些扇区上。现代主流文件系统——ext4、XFS、NTFS、APFS、ZFS——都使用同样几块基础设施。

ext4 风格文件系统布局 —— inode、块、日志

图中的盘上布局有三块核心:

  1. 超级块 + 块组描述符:靠近 LBA 0 的小区域,记录"这是什么文件系统、多大、位图和 inode 表在哪"。
  2. inode 表:每个文件一条定长记录(ext4 通常 256 B),存放模式、属主、大小、时间戳,以及指向数据块的指针列表。经典 ext 家族用 12 个直接指针(4 KiB 块时覆盖文件前 48 KiB),1 个一级间接(一块全是指针,再加 4 MiB),1 个二级间接(再加 4 GiB),1 个三级间接(再加 4 TiB)。现代 ext4 改用 extent(起点, 长度) 区间),对大文件更友好。
  3. 数据块:文件内容本体,从块位图记录的空闲空间里分配。

ls -li 看到的那个数字就是 inode 号。目录就是一个特殊文件,内容是 (文件名, inode 号) 列表。硬链接就是两个目录项指向同一个 inode——这就是为什么删除文件并不立即释放数据块,只有 link count 归零才真正释放。

为什么需要日志(journaling)

假设你写一个 1 MiB 文件,写到一半断电。如果没有日志:可能 inode 已经标记 size = 1 MiB,但数据块还没写(块里是上一次释放后的垃圾);也可能位图已标记"占用",但 inode 还没指向它们(块永久泄漏)。重启后 fsck 必须扫描整个磁盘找出这些不一致——小盘几分钟,多 TB 盘几小时。

日志(write-ahead log) 把所有元数据修改先写到一小块专用区域、然后再应用到主体。图里的五步流程——开始 → 写元数据到日志 → 提交记录 → 检查点写到最终位置 → 释放日志空间——保证崩溃后只需"回放日志"就能把文件系统拉回一致状态,秒级完成。ext4、NTFS、XFS、APFS 都对元数据做日志;ZFS 与 Btrfs 进一步用 Copy-on-Write——每次写都写到新块、最后只原子地切换根指针——把"每次写都原子"做到极致。

第七部分:存储分层 —— 把热数据放在快字节上

存储成本横跨八个数量级——DRAM 5 美元/GB·月,S3 Glacier Deep Archive 0.001 美元/GB·月。任何真实负载的数据访问频率都不均匀,典型分布是"5% 的数据吃 80% 的请求"。分层(tiering) 就是把每个字节放在能满足它延迟要求的最便宜介质上。

存储分层 —— 热、温、凉、冷

分层典型介质读延迟成本(美元/GB·月)数据占比
热(Hot)DRAM、Optane、NVMe SSD< 100 µs0.05 – 5~5%
温(Warm)SATA SSD、15K SAS100 µs – 1 ms0.04 – 0.06~15%
凉(Cool)7.2K HDD(RAID 6)5 – 10 ms0.015~30%
冷(Cold)S3 Standard-IA、Glacier秒 – 小时0.004 – 0.023~50%

图右"延迟 vs 成本"双对数图里的散点几乎沿一条直线分布——延迟降低十倍,单位成本就上升约十倍。云厂商(AWS S3 Lifecycle、GCS Object Lifecycle、Azure Blob Tiers)会按访问时间规则在层之间自动搬运对象。在单台工作站上手动版同样适用:操作系统 + 当前项目放 NVMe,Steam 库放 SATA SSD 或 HDD,存档放 NAS 或云对象存储。

第八部分:把存储跑稳的运维要点

每块 SSD 都想要的四个优化

  1. 4 KiB 分区对齐。 Windows 7 / Linux 2008 之后创建的现代分区表起点都是扇区 2048(1 MiB 偏移),与任何合理的 NAND 页大小都对齐。未对齐会让小写入跨两个物理页,掉速 30–35%。
  2. 开启 TRIM。 OS 删除文件时,TRIM 告诉 SSD 哪些 LBA 现在是垃圾,主控可在空闲时主动擦除;否则主控不知道哪些页已作废,复用前必须 read-modify-write,几个月后持续写入会从 500 MB/s 崩到 150 MB/s。验证:Windows 用 fsutil behavior query DisableDeleteNotify(应返回 0),Linux 用 lsblk --discardDISC-MAX > 0)。
  3. 预留 10–15% 空间(OP)。 1 TB SSD 留 100 GB 不分区(或仅仅不写满),主控做后台垃圾回收的余地大幅增加,持续写入更稳,寿命提升 20–30%。
  4. 永远不要给 SSD 做碎片整理。 闪存上随机读和顺序读一样快,碎片整理只是无谓地烧写入次数。Windows 8+ 会自动识别 SSD、跳过 defrag 而改跑 Optimize-Volume -ReTrim

用 SMART 做监控

SMART(自监测、分析与报告技术)暴露每块盘的健康属性。值得告警的五个:

属性含义警告 / 严重
Reallocated_Sector_Ct已被备用块替换的坏扇区> 10 / > 100
Wear_Leveling_Count(SSD)剩余寿命百分比< 20% / < 10%
Current_Pending_Sector等待重映射的扇区> 0 / > 10
Reported_UncorrectECC 修不了的错误> 0 / > 5
Temperature_Celsius温度> 60 °C / > 70 °C
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# Linux
sudo apt install smartmontools
sudo smartctl -a /dev/nvme0n1            # 全部属性
sudo smartctl -H /dev/nvme0n1            # 快速 PASSED/FAILED

# macOS
diskutil info disk0 | grep "SMART Status"

# Windows(PowerShell)
Get-PhysicalDisk | Get-StorageReliabilityCounter

重映射扇区数每周稳步增加是最可靠的早期故障信号——只要看到上升趋势,就该"今晚备份、本月换盘"。

3-2-1 备份原则

对于无法重新生成的数据(照片、源代码、文档、数据库状态):

  • 3 份数据(1 份在线 + 2 份备份)。
  • 放在 2 种不同介质(如本地 SSD + 移动 HDD,或 NAS + 云)。
  • 1 份异地(云、或异地物理位置的硬盘)。

业务关键数据扩展为 3-2-1-1-0:再加 1 份离线副本(防勒索)+ 季度恢复演练做到 0 错误。任何备份方案都只是理论,直到你真的在时间压力下从中恢复出过一个文件。

决策速查表

怎么挑盘。

用途推荐理由
系统盘NVMe Gen 3 TLC,500 GB – 1 TB体感最大,缓存友好
游戏盘NVMe Gen 3 / 4 TLC,1–2 TB资源流式加载、关卡读取
视频剪辑NVMe Gen 4 TLC,2–4 TB + HDD 归档大文件持续写
照片 / 媒体仓库7.2K HDD,4–16 TB单 TB 成本
NAS / 文件服务器HDD RAID 6 + SSD 缓存容量 + 冗余
数据库 / 虚拟化宿主企业级 NVMe + RAID 10低延迟随机 I/O
笔记本NVMe(唯一合理选项)功耗、抗摔、静音

怎么挑 RAID。

要冗余吗?
├─ 不要 → RAID 0   (最快、零保护——只放暂存)
└─ 要   → 几块盘?
          ├─ 2        → RAID 1   (镜像,最简单)
          ├─ 3–5 SSD → RAID 5   (单奇偶,平衡)
          ├─ 4+ HDD  → RAID 6   (双奇偶,重建更安全)
          └─ 4+      → RAID 10  (性能 + 保护双高,50% 利用率)

怎么挑接口。

单盘要 > 4 TB?
├─ 是 → HDD(成本主导)
└─ 否 → SSD
        ├─ 老主板没 M.2     → SATA SSD
        ├─ 桌面 QD1 系统/游戏 → NVMe Gen 3(甜点)
        ├─ 工作站、深队列    → NVMe Gen 4
        └─ 服务器 / 面向未来 → NVMe Gen 5

记忆口诀

HDD 在转、SSD 在切——物理决定延迟,benchmark 跑前胜负已分。 总线给带宽、协议给并行——SATA 卡在 0.5 GB/s,NVMe 一直冲到 12。 TLC 对人类够一辈子——1 PB 寿命远大于任何消费写入速率。 对齐、TRIM、留余量——三项免费设置能把持续写入寿命翻倍。 RAID 给可用性、备份给可恢复性——永远不要混淆。 热字节上快介质,冷字节上廉价介质——分层,否则付钱。

下期预告: 主板、显卡与扩展系统 —— 芯片组、VRM、PCIe 通道分配、显卡架构与 BIOS 设置。

Liked this piece?

Follow on GitHub for the next one — usually one a week.

GitHub