PCEVA,PC绝对领域,探寻真正的电脑知识
开启左侧

请教到底啥是LBA地址

[复制链接]
haierccc 发表于 2019-6-17 22:27 | 显示全部楼层 |阅读模式
点击数:4478|回复数:2
本帖最后由 haierccc 于 2019-6-17 22:46 编辑

研究SSD,就不停地接触到“LBA地址”这个概念,特别是在研究FTL层的时候。
我百度了一下,在这里说说我的理解,如果不对欢迎指正。
从磁盘的角度看,数据的基本读写单位是“扇区”。
但从“文件系统”的角度看,数据的基本读写单位是“文件”

于是,必然存在“文件→扇区”的索引表,把“文件”与“扇区物理地址”一 一对应。
比如文件a.txt占用100、101、102这3个扇区,文件b.docx占用1004,1921,3501,5345这4个扇区。
这几个数字就是扇区的“物理地址(PBA)”。
这张索引表就是“文件系统”最重要的功能。
但这其实是简化的理解,并不准确,
因为这就把“文件系统”与底层的“磁盘扇区”结合到一起,文件系统明确的知道存在“扇区”这个概念,并且直接操作扇区。
但事实并非如此。
“文件系统”的这张索引表,其实“索引”的是抽象出来的地址,叫做LBA:逻辑块地址。
操作系统只是把数据存在LBA地址之上,至于这个LBA地址对应的是磁盘物理扇区的什么地址,这是由磁盘的主控决定的。
但对于机械磁盘来说,LBA与扇区物理地址恰恰有个一 一对应的关系,映射非常简单,所以我们才被误导,以为文件系统直接操作扇区。

有个名为“FAT32”的文件系统,FAT的中文翻译为“文件分配表”,意思就是:把文件分配给LBA地址(而不是扇区地址)的索引
对于FAT32系统,把存储空间分为了很多单位为512个字节的数据块,但基本读写单元是多个数据块的组合,称之为“簇”,如果1个簇包含8个数据块,那么基本的数据读写单元就是512BX8=4096KB。
但至始至终,这些计算都与“扇区”无关。文件系统不知有扇区,只知有LBA。
当LBA地址传入机械硬盘主控,就将LBA与扇区物理地址(PBA)做对应,因为是一对一的对应,速度很快,也很简单。
当LBA地址传入SSD主控,就将LBA地址与闪存的“页”地址做对应,这种对应就复杂了,这也是考验SSD主控固件开发团队实力的地方。

最近在存储界有个很火的概念:Open-Channel( 开放通道)。
其实就是直接针对闪存开发的文件系统,不再是之前的“文件→LBA→页地址”这样的2次转换,而是"文件→页地址"这样的一次转换。省去了LBA。这样一来,操作系统/文件系统就明确地知道自己在操作闪存,并针对其特点进行更加优化的操作,从而获得更低的读写延迟。





eikeime 发表于 2019-6-18 00:28 | 显示全部楼层
本帖最后由 eikeime 于 2019-6-18 00:39 编辑

LBA 是当初 开发 scsi 时候 搞出来 替代 CHS的东西,fat32 分区格式 也是 支持 CHS 寻址方式的,当时好像 fat32x 代表 LBA寻址方式。CHS 就是你说的按照 C H S 直接通过PBA寻址操作硬盘的方式。open-channel好像也可以 通过 LBA寻址吧。
haierccc  楼主| 发表于 2019-6-18 07:08 | 显示全部楼层
eikeime 发表于 2019-6-18 00:28
LBA 是当初 开发 scsi 时候 搞出来 替代 CHS的东西,fat32 分区格式 也是 支持 CHS 寻址方式的,当时好像 f ...

在BIOS的功能调用里,的确是有直接写入扇区的指令,就是CHS格式的,从这点看,确实是直写磁盘
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部