1. LBA(Logical Block Address,逻辑块地址)
定义与作用
- LBA 是操作系统和应用程序访问存储设备时使用的逻辑地址。它抽象了物理存储的复杂性,提供连续的地址空间(如 0, 1, 2, …),无需关心底层存储的物理位置(例如机械硬盘的柱面、磁头、扇区)。
- SSD 的 LBA:由于 SSD 以页(Page)和块(Block)为单位存储数据,LBA 会被 SSD 内部的 FTL(Flash Translation Layer,闪存转换层) 转换为物理地址。
示例
- 假设一个文件被分割为多个逻辑块:
- 文件起始地址:LBA 1000
- 文件大小:4 个逻辑块(LBA 1000-1003)
- 操作系统通过 LBA 1000-1003 读写数据,而 SSD 的 FTL 会将这些逻辑地址映射到实际的物理页(例如物理页 2048、2049、2050、2051)。
2. L2P(Logical to Physical Mapping,逻辑到物理映射表)
定义与作用
- L2P 表 是 SSD 控制器维护的核心数据结构,记录了每个 LBA 对应的物理存储位置(如 NAND 闪存中的页或块)。
- 动态更新:由于 SSD 不支持原地覆写(需先擦除再写入),当数据更新时,SSD 会将新数据写入空闲页,并更新 L2P 表指向新位置,旧页会被标记为无效。
- 作用:确保逻辑地址的连续性对上层透明,同时管理物理存储的磨损均衡(Wear Leveling)和垃圾回收(Garbage Collection)。
示例
- 初始写入:
- LBA 1000 → 物理页 2048
- 更新数据:
- 新数据写入物理页 3072
- L2P 表更新为 LBA 1000 → 物理页 3072
- 物理页 2048 被标记为“无效”,等待垃圾回收。
3. TRIM 命令
定义与作用
- TRIM 是操作系统向 SSD 发送的指令,用于通知哪些 LBA 对应的数据已被删除(即不再有效),允许 SSD 提前回收这些空间。
- 解决的问题:
- 传统机械硬盘删除数据时仅标记逻辑删除,但 SSD 无法感知哪些物理页无效,导致垃圾回收效率低下(需搬运大量无效数据)。
- 优势:
- 减少写入放大(Write Amplification)
- 提升垃圾回收效率,延长 SSD 寿命。
示例
- 删除文件:
- 用户删除文件,操作系统在文件系统中标记 LBA 1000-1003 为“已删除”。
- 操作系统发送 TRIM 命令,告知 SSD 这些 LBA 已无效。
- SSD 将 LBA 1000-1003 对应的物理页(如 3072-3075)标记为“无效”,后续垃圾回收时直接擦除这些块,无需保留旧数据。
三者关系总结
概念 | 作用 | 示例场景 |
---|---|---|
LBA | 提供逻辑地址接口,隐藏物理细节 | 操作系统通过 LBA 1000 读取数据 |
L2P | 动态映射逻辑地址到物理位置 | 更新数据时更新 LBA 到新物理页 |
TRIM | 优化无效数据回收,提升性能和寿命 | 删除文件后通知 SSD 清理无效数据 |