专业术语解释-逻辑区块地址(Logical Block Address, LBA) ... ...
逻辑区块地址(LBA)是一种描述电脑存储设备上资料所在区块的通用机制,一般用在像硬盘这样的辅助储存装置上。LBA可以指某个资料区块的地址或者某个地址上所指向的资料区块。如非特别说明,一般硬盘上所谓一个逻辑区块的大小通常为512字节(Byte)。对于机械硬盘来说,一个数据区域由它所在的磁头(C)、柱面(即磁道 H)和扇区(S)三个数据所唯一确定。逻辑块寻址模式把硬盘所有的物理扇区的C/H/S编号通过一定的规则转变为一线性编号,在访问硬盘时由硬盘控制器内的地址翻译模块将这种逻辑地址转换为真正的物理地址。因为机械硬盘旧数据可以直接被覆盖,所以逻辑<->物理地址是固定的。到了固态硬盘(SSD)就没那么简单了,因为闪存(NANDFLASH)具有必须先擦除才能再次写入的工作特性(写入以页(Page),擦除则以块(Block)为单位),所以固态硬盘的逻辑<->物理地址是不固定的,需要经过转换才能应用在如今的文件系统上,做这工作的转换层就叫做FTL。(后面有关于FTL的说明)
由于闪存的工作特性,数据不能像普通机械硬盘那样被直接覆盖。当数据第一次写入SSD的时候,由于SSD内所有的NAND颗粒都为已擦除状态,所以数据能够以页为最小单位直接写入(页大小一般是4K,详情参考具体颗粒数据手册),SSD上的主控制器,使用了逻辑地址和物理地址的映射表来管理闪存。(逻辑地址我们一般指操作系统所记录的地址即LBA,而物理地址则是闪存上数据实际存在的地址即PBA)。当有新的数据写入,需替换旧数据时,SSD主控制器会把新数据写入到另外空白的闪存空间上(状态为已擦除的),然后更新地址映射表把逻辑地址指向新的物理地址。而旧地址的内容就成了无效的数据,但是若要在上面再次写入数据,就需要首先擦除掉这个无效数据(闪存的工作特性,1个块一般含128~256个页)。那么问题来了,闪存有编程的次数限制(由于闪存不能覆盖,写前必须擦除,所以习惯叫编程),这样每次的编程/擦除就叫做1个P/E(program/erase cycles)周期,大家应该都知道MLC一般是5000~10000次,而SLC是10万次左右(详情参考具体闪存颗粒数据手册)。
|