作者:乐骐科技(深圳)有限公司
固态硬盘(SSD)因其高速、静音、抗冲击等优点,已成为现代计算机的主流存储设备。然而,在光鲜的性能背后,SSD依赖一种名为“垃圾回收”(Garbage Collection, GC)的后台机制,来持续、高效地工作。理解这一机制,是理解SSD性能、寿命和写入放大等关键概念的核心。
![]()
一、为什么需要垃圾回收?—— 闪存的物理限制
要理解GC,首先必须了解NAND闪存的基本物理特性:
- 写入的最小单位是“页”: 通常为4KB、8KB或16KB。数据可以按页编程(写入)。
- 擦除的最小单位是“块”: 一个块由数十到数百个页组成(例如,256个4KB页构成1MB的块)。数据不能被直接覆盖,必须先擦除整个块,然后才能重新写入
- 擦除操作缓慢且损耗寿命: 每个存储单元(Cell)的擦除次数有限,这是SSD寿命(TBW)的根本决定因素。
这就带来了一个根本矛盾:操作系统和文件系统以为可以“覆盖写入”一个逻辑地址(LBA),但在物理层面,SSD无法直接覆盖旧数据。它只能将新数据写入到新的、空闲的物理页,并将旧数据所在的页标记为“无效”。
久而久之,一个块里就会混杂着有效的(当前数据)和无效的(已被更新的旧数据)页。这些无效页占据了宝贵的空间,但却无法被直接使用,因为块没有被整体擦除。
垃圾回收的核心任务,就是回收这些无效页占用的空间,将其转变为可以接收新写入数据的空闲块。
二、垃圾回收如何工作?—— 四步核心流程
垃圾回收是一个后台进程,通常由SSD主控芯片内的固件(Firmware)管理和执行。其工作流程可以概括为以下四步:
第一步:选择候选块
SSD主控的GC算法会评估所有存储块,选择一个或几个“脏页”(无效数据)比例较高的块作为回收候选。通常,无效页越多,回收效率越高,因为需要搬迁的有效数据越少。
第二步:搬迁有效数据
将候选块中所有有效的页,读取出来,并写入到其他空闲块(通常是空闲块池中的“空闲块”)的新页中。同时,更新FTL(闪存转换层)的映射表,将数据的逻辑地址指向这些新的物理位置。
第三步:擦除候选块
此时,候选块中的所有数据(包括原来的有效数据和无效数据)都已成为“过期”数据,因为有效数据已被搬走。主控随即对这个块执行擦除操作,将其恢复为全新的、所有页都可写入的“空闲块”。
第四步:将块加入空闲池
被擦除干净的块被放入空闲块池,等待接收来自主机(你的电脑)的新数据写入。
![]()
这个过程循环往复,确保SSD始终有足够的空闲块来响应主机的高速写入请求。
三、垃圾回收带来的挑战与优化
GC虽然是必需的,但也带来了两个直接影响用户体验的挑战:
- 写入放大(Write Amplification, WA)
- 定义: 主机写入1单位数据,实际导致NAND闪存发生大于1单位的写入。
- 原因: GC过程中,搬迁有效数据需要进行额外的读写操作。例如,主机要写4KB新数据,但GC为了腾出空间,可能被迫先搬移16KB的有效数据,那么闪存实际写入量就是20KB,写入放大系数就是5。
- 影响: 放大写入量,消耗SSD的P/E寿命,并可能占用带宽,影响性能。
- 性能波动
- 当主机持续高强度写入,占满所有空闲块时,SSD会进入“稳态”。
- 此时,主机每写入一笔新数据,都必须同步地、即时地执行一次GC流程(即“写入时GC”)。这会带来显著的写入延迟飙升,性能从较高的“SLC缓存速度”跌至较低的“稳态速度”。
关键技术优化
为了缓解GC的负面影响,现代SSD采用了多项关键技术:
- TRIM / Deallocate指令
- 操作系统在删除文件时,会主动通知SSD哪些逻辑地址的数据已经无效。
- 这使得SSD主控能提前、批量地将相关页标记为无效,让GC算法能更高效地选择回收块,显著降低写入放大。
- 空闲时间GC(Idle-Time GC)
- 当SSD检测到主机空闲时(如电脑待机),主动在后台执行GC。
- 提前准备好干净的空闲块,以应对下一次主机写入高峰,避免“写入时GC”造成的性能骤降。
- 智能磨损均衡(Wear Leveling)
- GC算法与磨损均衡算法紧密协作,在选择回收块时,不仅考虑无效页比例,也考虑块的擦写次数,避免对少数块进行集中擦写,从而延长整体寿命。
- 预留空间(OP, Over-Provisioning)
- SSD的物理容量大于对外宣称的可用容量(如240GB、480GB),这部分额外空间(如256GB->240GB)就是OP。
- OP提供了更多的空闲块缓冲区,给GC留出更充裕的操作空间,能有效降低写入放大、提升GC效率和稳态性能。
总结
垃圾回收机制是SSD架构中至关重要的一环,它巧妙地解决了NAND闪存“需先擦后写”的物理限制与操作系统“可覆盖写入”的逻辑预期之间的矛盾。本质上,GC是一场持续的后台“空间整理”运动。
通过搬迁数据、擦除块,GC不断回收碎片化的无效空间,为高速写入提供弹药。与此同时,其带来的写入放大和性能波动问题,也驱动了TRIM、预留空间、空闲回收等关键技术的诞生与发展。一个优秀的SSD主控和固件,其核心能力就体现在如何以更智能、更高效、对用户影响更小的方式,来执行垃圾回收,从而在速度、寿命和容量之间取得最佳平衡。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.