LBA(Logical Block addressing)逻辑块寻址
宁道奇 发表于:11年06月17日 12:00 [转载] 小熊在线
LBA(Logical Block addressing)逻辑块寻址
在传统的硬盘中,我们通过寻道来找到硬盘上存储的内容。 在LBA模式下,我们知道硬盘上的一个数据区域由它所在的磁头、柱面(也就是磁道)和扇区所唯一确定。早期系统就是直接使用磁头柱面和扇区来对硬盘进行寻址(这称为CHS寻址),这需要分别存储每个区域的三个参数,使用时再分别读取三个参数,然后再在送到磁盘控制器去执行。
而NAND型闪存芯片则没有物理的LBA,芯片的结构也不是螺旋的磁道。在写入数据之前必须擦除才能进行写入。在SSD中擦除数据是以“块”为单位。所以SSD物理地址必须经过转换才能用在现在的文件系统上。这个转换层叫做FTL。
FTL(Flash translation layer) 闪存转换层
在传统硬盘中,我们的扇区容量一般为512个字节。近年来,为了超越2.1TB容量大关才更新为4KB容量扇区。而在SSD中,闪存的最基本的存储单位是“页”,其容量也是4KB。使用128至256个页则可以构成一个“块”。闪存芯片在写入数据前必须要先擦除,也就是说不能直接覆盖。这对于现有的文件系统来说,就产生了许多麻烦。
为了让闪存的物理结构与现有的操作系统相兼容,我们会在软件层,将闪存芯片的操作虚拟成512容量字节的扇区进行处理。这个过程就叫做FTL。将闪存的物理地址映射为操作系统可以支持的虚拟地址。
FLT的算法非常巧妙,如果要写入一个数据,SSD并不会先擦除某个页的数据,然后再进行写入。而是将需要写入的讯息写入不同的空闲的物理页中。然后再通过FTL映射,将闪存芯片上的这个页标记为无效。由此这个存储空间就被释放了。由此可见FTL的算法是否科学和精妙,直接决定着SSD的性能。