存储相关知识①---通用NAND Flash 基础
存储核心底层原理(通用Flash根基)
NAND Flash 原理
一、 宏观结构:
NAND Flash的内部,
由大到小可以分为以下几个层级:
①Die(裸片) :一颗NAND芯片内部可能包含一个或多个Die,每个Die是一个独立的存储矩阵。
②Plane(平面) :一个Die包含多个Plane,它们是并行操作的基本单元。
③Block(块) :这是擦除(Erase)的最小单位。一个Block通常包含几十到几百个Page。你可以把一个Block想象成一本书。
④Page(页) :这是写入(Program)和读取(Read)的最小单位。通常大小为4KB、8KB或16KB。一页就像书里的一张纸。
⑤Cell(存储单元):Page由成千上万个Cell组成,真正用来存放1或0数据的地方。

NAND Flash 主要物理痛点:只能按页读写(写数据只能由 1 ---> 0),按块擦除(擦除由 0 ---> 1),而且每次擦除会影响Nand寿命(物理氧化),所以为了延长使用寿命才引入多种算法提高效率
存储算法介绍------目的:提升 SSD 可靠性、寿命与性能
FTL地址映射:(提高Nand寿命和提高访存效率)
FTL(Flash Translation Layer,闪存转换层) 是SSD的主控固件,它充当主机(操作系统)与物理闪存之间的"翻译官"。主机看到的地址是连续的,但FTL会将其巧妙映射到物理闪存上。
(个人认为在映射算法这块和计算机组成原理中CPU Cache映射非常相似)
SSD的三种映射方式:
页映射(Page Mapping) :以"页"(通常是4KB或16KB)为单位进行映射。
特点:灵活高效,随机写入性能极佳,但需要庞大的内存来存放映射表(每1GB物理空间就需要约1MB内存存表)。
(类比Cache映射:全相联映射(Full Associative):主存(主机地址)的任意一块,可以放入Cache(物理闪存)的任意一页。最灵活,命中率最高,但查找起来最费劲(需要遍历或复杂的CAM电路))
块映射(Block Mapping) :以"块"(通常包含数十到上百个页)为单位进行映射。
特点:映射表极小,但写入时必须整块操作,效率低,极易造成写放大。
(类比Cache映射:直接映射(Direct Mapped):主存的每一块,只能放入Cache的唯一固定位置。硬件实现最简单,但容易产生冲突(就算其他地方空着,也只能死磕那一个位置)。)
混合映射(Hybrid Mapping) :将数据块与元数据/映射表分开存储,结合两者优点。
特点:兼顾了性能与内存占用,是很多中高端SSD的折中方案。
(类比Cache映射:组相联映射(Set Associative):主存的块可以先分组,组内再使用页映射(全相联)。既避免了频繁冲突,又控制了查找复杂度。)

GC 垃圾回收:(提高空间利用率)
GC(Garbage Collection,垃圾回收):回收无效页、整理空闲块,解决 "写放大 + 空间碎片化"。
背景 :NAND 不能原地覆盖;更新数据时,新数据写入新页,旧页变成 "无效页"。
问题 :长期运行后,块里混杂有效 / 无效页,空闲块变少、写入变慢。
做法 :
①选一个 "脏块"(无效页多);
②搬移有效页到新空闲块;
③擦除原脏块,变成可再次写入的空闲块。
关键指标 :写放大 WAF(主控写入量 / 主机写入量),越小越好 ;GC 会带来额外读写,影响性能。

WL 磨损均衡:(延长整体寿命)
WL(Wear Leveling,磨损均衡):让所有块 P/E 次数尽量一致,避免局部块提前写坏,延长整体寿命。
背景:NAND 块擦写(P/E)有上限:
SLC ≈ 10 万
MLC ≈ 3k--1 万
TLC ≈ 500--1500
QLC ≈ 100--500
问题 :热点数据(如文件系统元数据)反复写同一块,很快写坏;冷块几乎不用,整体寿命由最先坏的块决定。
做法 (FTL 映射):
①动态 WL:写数据时,优先选 P/E 最少的空闲块;同一逻辑地址反复写,映射到不同物理块。
②静态 WL:定期把 冷数据从年轻块搬到年老块,抹平块间磨损差异。

BBM 坏块管理:(硬件故障隔离,可靠性兜底)
BBM(Bad Block Management,坏块管理):识别 / 标记 / 隔离坏块,把写入重定向到好块,保证数据可靠、不写入坏块。
坏块来源 :
①出厂坏块:NAND 出厂就有(不可避免);
②运行坏块:P/E 超限、擦写错误、硬件失效。
核心机制 :
①坏块表 BBT:记录所有坏块地址,出厂扫描 + 运行时动态更新;
②地址重定向:写入时若命中坏块,自动映射到备用好块;
③隔离 + 屏蔽:坏块不再分配,避免数据丢失 / 错误。

可靠性算法
1. ECC 错误校验纠错
作用:修正 NAND 电荷漂移导致的位错误
等级:SLC 轻量 ECC,TLC/QLC 强制 LDPC 硬纠错
场景:读干扰、编程干扰、电荷漏电纠错
2. RAID 磁盘冗余
RAID0:条带分片,极速无冗余
RAID1:镜像备份,高可靠双倍空间
RAID5:奇偶校验,兼顾容量与容错
RAID6:双校验,双盘容错,企业级通用
3. 掉电保护
硬件:钽电容 / 超级电容,断电缓存落盘
软件:日志日志块、元数据预存,防止断电分区损坏、数据错乱
4. 数据恢复
逻辑恢复:FTL 映射表重建、无效页回溯
硬件恢复:NAND 原始数据读取、ECC 硬解码、坏块跳过重组
性能指标
1.顺序读写 :大文件连续吞吐,视频 / 拷贝场景
2.4K 随机读写 :小文件高频访问,系统、数据库核心指标
3.IO 延迟 :单请求响应耗时,越低系统越流畅
4.带宽 :单位时间最大数据传输量
5.IOPS :每秒最大读写请求数,随机性能核心
6.写入放大 :实际写入 / 主机写入比值,越小越省寿命
7.功耗模型 :
①活跃功耗:全速读写功耗
②休眠功耗:待机低功耗
③动态调压:闲时降频降压省电