Chinaunix首页 | 论坛 | 博客
  • 博客访问: 12249
  • 博文数量: 10
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 10
  • 用 户 组: 普通用户
  • 注册时间: 2019-07-21 10:18
文章分类

全部博文(10)

文章存档

2019年(10)

我的朋友
最近访客

分类: 服务器与存储

2019-07-21 10:24:22

 LBA,全称为Logical Block Address,是PC数据存储装置上用来表示数据所在位置的通用机制,我们最常见到使用它的装置就是硬盘。LBA可以指某个数据区块的地址或者某个地址 上所指向的数据区块。打个比方来说,LBA就等于我们平常使用的门牌地址(如:中华人民共和国广东省广州市中山四路26号)。而PBA全称为 Physics Block Address,相对于LBA来说,它就如GPS定位所使用的经纬度(如上面地址的经纬度为:东经:113°16′40.0621″,北纬:23°07′ 37.6129″)。
       在HDD上,由于HDD的数据可以直接覆盖,所以LBA和PBA的关系是1:1对应,不会变更,即LBA=PBA。但在SSD上,这种关系 就变得复杂了,原因是SSD使用的存储介质NAND闪存有需要先擦除才能再写入,和读写以页为单位,擦除以块(多个页组成)为单位的特性,导致LBA和 PBA的关系不再是固定不变的。因此SSD就需要一层叫做FTL的东西来作转换,以配合现有的文件系统。(FTL在后面将会独立介绍)
       NAND闪存的擦除/写入关系请参考下图:
       
       (闪存页大小一般为4KB或8KB,块一般有128至256页,详情请参考具体闪存颗粒数据手册)
       由于NAND闪存的特性,SSD的主控制器是使用LBA和PBA的映射表来管理闪存的。当有需更新的数据要写入时,主控会把新数据写入到空 白的闪存空间(已擦除状态的)内,然后更新映射表数据,把LBA指向新的PBA。原来的PBA就成了无效数据,这个PBA若要再次写入数据就需先进行擦除 的操作。但这里会产生一个问题,闪存颗粒的寿命是按Program/Erase(编程/擦除,由于闪存不能覆盖,写入前必须擦除,所以习惯叫编程,不过为 方便大家阅读,后面我们依然叫写入)次数计算的,MLC(多阶存储单元闪存)的寿命一般在1000-10000次,SLC(单阶存储单元闪存)则在10万 次左右。(详情请参考具体闪存颗粒数据手册)。
阅读(2262) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~