参考资料:
http://blog.chinaunix.net/uid-24203478-id-3409427.html
/>
LBA:
LBA(Logical Block Address)即 逻辑区块地址, 是描述电脑存储设备上数据所在区块的通用机制,一般用在像硬盘这样的辅助记忆设备。LBA可以意指某个数据区块的地址或是某个地址所指向的数据区块。LBA是非常单纯的一种寻址模式﹔从0开始编号来定位区块,第一区块LBA=0,第二区块LBA=1,依此类推。这种寻址模式抽象了存储设备硬件构造的方式, 为块设备提供了统一的寻址方式。
一个区块的大小通常是512,1024, 2048, 4096Byte。
PBA:
PBA(Physics Block Address)物理区块地址, 根据存储设备的硬件特点,来制定地址规则, 不同的物理存储设备,物理地址的编码是不同的,典型的如磁盘设备的CHS物理寻址模式,和ssd盘的Chip+Block+page的寻址模式
机械盘地址(CHS):
CHS(cylinders-heads-sectors,磁柱-磁头-扇区)寻址模式,区块必须以硬盘上某个磁柱、磁头、扇区的硬件位置所合成的地址来指定。CHS模式对硬盘以外的设备(如ssd盘)来说没什么作用。 CHS地址和LBA可以方便的进行转换:
CHS地址可用以下公式转成LBA,
#lba=(#c*H+#h)*S+#s-1
其中,
-
#c=#lba/(S*H)
-
#h=(#lba/S)%H
-
#s=(#lba%S)+1
其中,
其它公式:
-
#lba/S=q 余 r
-
#s=1+r
-
q/H=#c 余 #h
例如:
验算: (1*10+4)*84+59-1=14*84+58=1234[2]
SSD地址(Chip + Block + Page):
在HDD上,由于HDD的数据可以直接覆盖,所以LBA和PBA的关系是1:1对应,不会变更,即LBA=PBA。但在SSD上,这种关系 就变得复杂了,原因是SSD使用的存储介质NAND闪存有需要先擦除才能再写入,和读写以页为单位,擦除以块(多个页组成)为单位的特性,导致LBA和 PBA的关系不再是固定不变的。因此SSD就需要一层叫做FTL的东西来作转换,以配合现有的文件系统。
(闪存页大小一般为4KB或8KB,块一般有128至256页,详情请参考具体闪存颗粒数据手册)
由于NAND闪存的特性,SSD的主控制器是使用LBA和PBA的映射表来管理闪存的。当有需更新的数据要写入时,主控会把新数据写入到空 白的闪存空间(已擦除状态的)内,然后更新映射表数据,把LBA指向新的PBA。原来的PBA就成了无效数据,这个PBA若要再次写入数据就需先进行擦除 的操作。但这里会产生一个问题,闪存颗粒的寿命是按Program/Erase(编程/擦除,由于闪存不能覆盖,写入前必须擦除,所以习惯叫编程,不过为 方便大家阅读,后面我们依然叫写入)次数计算的,MLC(多阶存储单元闪存)的寿命一般在1000-10000次,SLC(单阶存储单元闪存)则在10万 次左右。(详情请参考具体闪存颗粒数据手册)。
阅读(4090) | 评论(0) | 转发(0) |