4.3 存储设备
存储设备是计算机中用来保存数据的设备,我们的程序、文件、操作系统都存储在存储设备中。存储设备的性能对系统整体性能影响非常大,特别是对于IO密集型的应用,比如数据库、文件服务器等。
存储层次结构
计算机系统中的存储设备是按照层次结构组织的,从上到下速度越来越慢,容量越来越大,价格越来越便宜:
┌─────────────────────────┐ 速度最快 容量最小 价格最高
│ CPU寄存器 │
├─────────────────────────┤
│ L1/L2/L3缓存 │
├─────────────────────────┤
│ 主存(内存) │
├─────────────────────────┤
│ SSD固态硬盘 │
├─────────────────────────┤
│ HDD机械硬盘 │
├─────────────────────────┤
│ 外接存储 │ (U盘、移动硬盘等)
├─────────────────────────┤
│ 离线存储 │ (磁带、光盘等)
└─────────────────────────┘ 速度最慢 容量最大 价格最低
这种层次结构的设计思想是利用局部性原理,将常用的数据放在速度快的存储中,不常用的数据放在速度慢的大容量存储中,在性能和成本之间取得平衡。
机械硬盘(HDD)
机械硬盘(Hard Disk Drive,HDD)是使用了几十年的传统存储设备,现在仍然在大容量存储场景中广泛使用。
工作原理
HDD内部是一个密封的腔体,包含多个高速旋转的磁盘片,磁头悬浮在磁盘片上方,通过移动磁头来读写磁盘上的数据:
- 磁盘片:涂有磁性材料的圆形盘片,数据存储在盘片的磁道上
- 磁道:盘片上的同心圆,每个磁道分为多个扇区,每个扇区通常是512字节或4KB
- 磁头:负责读写磁道上的数据,每个盘面对应一个磁头
- 主轴电机:带动磁盘片高速旋转,常见的转速有5400转/分钟、7200转/分钟、10000转/分钟、15000转/分钟
HDD读写过程
- 寻道时间:磁头移动到对应磁道的时间,通常是5-10ms
- 旋转延迟:等待要访问的扇区旋转到磁头下方的时间,7200转的硬盘平均旋转延迟是4.17ms
- 传输时间:实际读写数据的时间,取决于磁盘的传输速率
- 总访问时间 = 寻道时间 + 旋转延迟 + 传输时间,通常在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闪存芯片,数据存储在闪存单元中:
- 闪存单元:存储数据的基本单元,每个单元可以存储1bit(SLC)、2bit(MLC)、3bit(TLC)、4bit(QLC)数据
- 页(Page):读写的最小单位,通常是4KB/8KB/16KB
- 块(Block):擦除的最小单位,通常包含128-256个页,大小是512KB-2MB
- 闪存控制器:负责管理闪存芯片、实现磨损均衡、错误纠正、坏块管理等功能
SSD的关键特性
- 没有机械结构:不需要寻道和旋转延迟,随机访问延迟很低,通常是0.1ms左右
- 读写不对称:读速度比写速度快,擦除操作最慢,而且擦除必须按块进行
- 磨损均衡(Wear Leveling):闪存块有擦除次数限制(SLC约10万次,MLC约1万次,TLC约3000次,QLC约1000次),磨损均衡算法会平均分配擦除操作到各个块,延长SSD寿命
- 垃圾回收(Garbage Collection):修改数据时不能直接覆盖旧数据,需要先写到空闲页,旧页标记为无效,垃圾回收机制会回收无效页,整理出空闲块
- 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使用注意事项
- 不需要碎片整理,碎片整理会增加不必要的写入,缩短寿命,SSD的随机访问速度很快,碎片不影响性能
- 开启AHCI模式和TRIM命令,发挥SSD的最佳性能
- 不要满盘使用,保留10-20%的空闲空间,有利于垃圾回收和磨损均衡,提升性能和寿命
- 重要数据要备份,SSD一旦损坏,数据恢复难度比HDD大很多
其他存储设备
U盘/闪存盘
- 使用NAND闪存作为存储介质,通过USB接口连接
- 优点:体积小,便携,使用方便
- 缺点:性能较低,寿命短,容易损坏
- 适用场景:临时数据传输
光盘
- CD/DVD/蓝光光盘,通过激光读写数据
- 优点:成本低,保存时间长(理论上可以保存几十年)
- 缺点:容量小,速度慢,容易划伤
- 适用场景:数据归档、长期冷存储
磁带
- 使用磁性磁带存储数据
- 优点:容量极大(单盘可以达到几十TB),成本极低,保存时间长
- 缺点:顺序访问,随机访问性能极差,速度慢
- 适用场景:冷数据归档、备份,是大数据中心常用的冷存储介质
存储设备选型建议
系统盘/常用程序
- 优先选择NVMe SSD,性能最好,系统和程序启动速度快
- 容量建议512GB以上
数据盘/游戏盘
- 常用数据和游戏选择SSD,加载速度快
- 大文件、冷数据选择HDD,性价比高
服务器存储
- 高性能场景(数据库、缓存):选择高端NVMe SSD,获得高IOPS和低延迟
- 大容量存储(文件服务器、对象存储):选择HDD,性价比高
- 混合场景:使用SSD做缓存,HDD做存储,兼顾性能和成本
备份/归档
- 重要数据定期备份到HDD或者磁带,冷存储成本低,保存时间长
存储性能优化思路
- 缓存优化:利用内存、SSD作为缓存,将热点数据放在高速存储中,减少对慢速存储的访问
- 顺序IO优化:尽量将随机IO转换为顺序IO,提升HDD的性能,比如数据库的预写日志(WAL)就是顺序写
- 减少随机IO:合并小IO为大IO,减少IO次数
- 选择合适的RAID级别:RAID0提升性能,RAID1/RAID5/RAID6提升可靠性,RAID10兼顾性能和可靠性
- 分布式存储:大规模场景下使用分布式存储,将数据分散到多个节点,提升整体性能和容量
思考问题
- HDD和SSD的工作原理有什么不同?为什么SSD的随机性能比HDD高很多?
- 什么是磨损均衡和垃圾回收?它们对SSD的性能和寿命有什么影响?
- 存储层次结构的设计思想是什么?为什么需要多层存储?
- 如果你要搭建一个数据库服务器,你会怎么选择存储设备?为什么?