Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

4.3 存储设备

存储设备是计算机中用来保存数据的设备,我们的程序、文件、操作系统都存储在存储设备中。存储设备的性能对系统整体性能影响非常大,特别是对于IO密集型的应用,比如数据库、文件服务器等。

存储层次结构

计算机系统中的存储设备是按照层次结构组织的,从上到下速度越来越慢,容量越来越大,价格越来越便宜:

┌─────────────────────────┐  速度最快   容量最小   价格最高
│       CPU寄存器         │
├─────────────────────────┤
│       L1/L2/L3缓存      │
├─────────────────────────┤
│       主存(内存)      │
├─────────────────────────┤
│       SSD固态硬盘       │
├─────────────────────────┤
│       HDD机械硬盘       │
├─────────────────────────┤
│       外接存储          │ (U盘、移动硬盘等)
├─────────────────────────┤
│       离线存储          │ (磁带、光盘等)
└─────────────────────────┘  速度最慢   容量最大   价格最低

这种层次结构的设计思想是利用局部性原理,将常用的数据放在速度快的存储中,不常用的数据放在速度慢的大容量存储中,在性能和成本之间取得平衡。

机械硬盘(HDD)

机械硬盘(Hard Disk Drive,HDD)是使用了几十年的传统存储设备,现在仍然在大容量存储场景中广泛使用。

工作原理

HDD内部是一个密封的腔体,包含多个高速旋转的磁盘片,磁头悬浮在磁盘片上方,通过移动磁头来读写磁盘上的数据:

  1. 磁盘片:涂有磁性材料的圆形盘片,数据存储在盘片的磁道上
  2. 磁道:盘片上的同心圆,每个磁道分为多个扇区,每个扇区通常是512字节或4KB
  3. 磁头:负责读写磁道上的数据,每个盘面对应一个磁头
  4. 主轴电机:带动磁盘片高速旋转,常见的转速有5400转/分钟、7200转/分钟、10000转/分钟、15000转/分钟

HDD读写过程

  1. 寻道时间:磁头移动到对应磁道的时间,通常是5-10ms
  2. 旋转延迟:等待要访问的扇区旋转到磁头下方的时间,7200转的硬盘平均旋转延迟是4.17ms
  3. 传输时间:实际读写数据的时间,取决于磁盘的传输速率
  4. 总访问时间 = 寻道时间 + 旋转延迟 + 传输时间,通常在10-20ms左右

性能参数

  • 容量:通常是1TB-20TB
  • 转速:5400/7200/10000/15000 RPM,转速越高性能越好,噪音和功耗也越高
  • 平均寻道时间:5-10ms
  • 连续读写带宽:100-250MB/s
  • 随机IOPS:100-200,因为每次随机IO都需要寻道和旋转延迟,所以随机性能很差

优缺点

  • 优点:容量大,价格便宜,每TB成本低,数据保存时间长,适合冷存储
  • 缺点:随机性能差,延迟高,怕震动,噪音大,功耗高

固态硬盘(SSD)

固态硬盘(Solid State Drive,SSD)是使用闪存芯片作为存储介质的存储设备,没有机械结构,性能比HDD高很多。

工作原理

SSD的核心是NAND闪存芯片,数据存储在闪存单元中:

  1. 闪存单元:存储数据的基本单元,每个单元可以存储1bit(SLC)、2bit(MLC)、3bit(TLC)、4bit(QLC)数据
  2. 页(Page):读写的最小单位,通常是4KB/8KB/16KB
  3. 块(Block):擦除的最小单位,通常包含128-256个页,大小是512KB-2MB
  4. 闪存控制器:负责管理闪存芯片、实现磨损均衡、错误纠正、坏块管理等功能

SSD的关键特性

  1. 没有机械结构:不需要寻道和旋转延迟,随机访问延迟很低,通常是0.1ms左右
  2. 读写不对称:读速度比写速度快,擦除操作最慢,而且擦除必须按块进行
  3. 磨损均衡(Wear Leveling):闪存块有擦除次数限制(SLC约10万次,MLC约1万次,TLC约3000次,QLC约1000次),磨损均衡算法会平均分配擦除操作到各个块,延长SSD寿命
  4. 垃圾回收(Garbage Collection):修改数据时不能直接覆盖旧数据,需要先写到空闲页,旧页标记为无效,垃圾回收机制会回收无效页,整理出空闲块
  5. TRIM命令:操作系统通知SSD哪些页是已经删除的,可以提前回收,提升性能和寿命

性能参数

  • 接口类型
    • SATA 3.0:最大带宽6Gbps≈550MB/s
    • NVMe PCIe 3.0 x4:最大带宽32Gbps≈3.5GB/s
    • NVMe PCIe 4.0 x4:最大带宽64Gbps≈7GB/s
    • NVMe PCIe 5.0 x4:最大带宽128Gbps≈14GB/s
  • 连续读写带宽:SATA SSD约500MB/s,NVMe SSD可以达到3-7GB/s
  • 随机IOPS:普通SSD可以达到1万-10万IOPS,高端NVMe SSD可以达到百万级IOPS
  • 延迟:随机读延迟约0.1ms,比HDD快100倍
  • TBW(Total Bytes Written):总写入量,衡量SSD寿命的指标,例如500GB TLC SSD通常是300-600TBW

优缺点

  • 优点:性能极高,特别是随机性能,延迟低,不怕震动,噪音小,功耗低
  • 缺点:价格比HDD高,每TB成本是HDD的3-5倍,数据如果损坏恢复难度大,有写入寿命限制

SSD使用注意事项

  1. 不需要碎片整理,碎片整理会增加不必要的写入,缩短寿命,SSD的随机访问速度很快,碎片不影响性能
  2. 开启AHCI模式和TRIM命令,发挥SSD的最佳性能
  3. 不要满盘使用,保留10-20%的空闲空间,有利于垃圾回收和磨损均衡,提升性能和寿命
  4. 重要数据要备份,SSD一旦损坏,数据恢复难度比HDD大很多

其他存储设备

U盘/闪存盘

  • 使用NAND闪存作为存储介质,通过USB接口连接
  • 优点:体积小,便携,使用方便
  • 缺点:性能较低,寿命短,容易损坏
  • 适用场景:临时数据传输

光盘

  • CD/DVD/蓝光光盘,通过激光读写数据
  • 优点:成本低,保存时间长(理论上可以保存几十年)
  • 缺点:容量小,速度慢,容易划伤
  • 适用场景:数据归档、长期冷存储

磁带

  • 使用磁性磁带存储数据
  • 优点:容量极大(单盘可以达到几十TB),成本极低,保存时间长
  • 缺点:顺序访问,随机访问性能极差,速度慢
  • 适用场景:冷数据归档、备份,是大数据中心常用的冷存储介质

存储设备选型建议

系统盘/常用程序

  • 优先选择NVMe SSD,性能最好,系统和程序启动速度快
  • 容量建议512GB以上

数据盘/游戏盘

  • 常用数据和游戏选择SSD,加载速度快
  • 大文件、冷数据选择HDD,性价比高

服务器存储

  • 高性能场景(数据库、缓存):选择高端NVMe SSD,获得高IOPS和低延迟
  • 大容量存储(文件服务器、对象存储):选择HDD,性价比高
  • 混合场景:使用SSD做缓存,HDD做存储,兼顾性能和成本

备份/归档

  • 重要数据定期备份到HDD或者磁带,冷存储成本低,保存时间长

存储性能优化思路

  1. 缓存优化:利用内存、SSD作为缓存,将热点数据放在高速存储中,减少对慢速存储的访问
  2. 顺序IO优化:尽量将随机IO转换为顺序IO,提升HDD的性能,比如数据库的预写日志(WAL)就是顺序写
  3. 减少随机IO:合并小IO为大IO,减少IO次数
  4. 选择合适的RAID级别:RAID0提升性能,RAID1/RAID5/RAID6提升可靠性,RAID10兼顾性能和可靠性
  5. 分布式存储:大规模场景下使用分布式存储,将数据分散到多个节点,提升整体性能和容量

思考问题

  1. HDD和SSD的工作原理有什么不同?为什么SSD的随机性能比HDD高很多?
  2. 什么是磨损均衡和垃圾回收?它们对SSD的性能和寿命有什么影响?
  3. 存储层次结构的设计思想是什么?为什么需要多层存储?
  4. 如果你要搭建一个数据库服务器,你会怎么选择存储设备?为什么?