逻辑区块地址是描述电脑存储设备上资料所在区块的通用机制,一般用在像硬盘这样的辅助记忆设备。LBA可以意指某个资料区块的地址或是某个地址所指向的资料区块。现今电脑上所谓一个逻辑区块通常是512或1024位组。ISO-9660格式的标准CD则以2048位组为一个逻辑区块大小。

逻辑区块地址 Logical Block Address,LBA)是描述电脑存储设备上资料所在区块的通用机制,一般用在像硬盘这样的辅助记忆设备。LBA 可以意指某个资料区块的地址或是某个地址所指向的资料区块。现今电脑上所谓一个逻辑区块通常是 512 或 1024 位组。ISO-9660 格式的标准 CD 则以 2048 位组为一个逻辑区块大小。

Disk 硬盘

LBA 寻址机制

LBA 是非常单纯的一种寻址模式﹔从 0 开始编号来定位区块,第一区块 LBA=0,第二区块 LBA=1,依此类推。这种寻址模式取代了原先操作系统必须面对存储设备硬件构造的方式。最具代表性的首推 CHS(cylinders-heads-sectors,磁柱-磁头-扇区)寻址模式,区块必须以硬盘上某个磁柱、磁头、扇区的硬件位置所合成的地址来指定。

CHS 模式对硬盘以外的设备来说没什么作用(例如磁带或是网络存储设备),所以通常也不会用在这些地方。过去 MFM(Modified Frequency Modulation, 改良调频式)和 RLL(Run Length Limited)存储设备都曾使用 CHS 模式,ATA-1 设备更将延伸 CHS(Extended Cylinders-Heads-Sectors, ECHS)也派上了用场。

SCSI 采用 LBA 抽象寻址。实际上硬件控制器还是以 CHS 来寻址区块,但无论驱动程序还是任何以低端访问磁盘的应用程序(例如数据库软件)通常都不再需要这个参数。各种要求区块低端访问的系统调用把定义好的 LBA 传给驱动程序﹔最直接的情况下(逻辑器件与实体设备单一对应)驱动程序只是将 LBA 再传给硬件控制器。

LBA 对应与逻辑器件虚拟化

当逻辑器件是经由虚拟化或是集合所构成的,像是 RAID(磁盘阵列)和 SANs(Storage Area Network)这种复杂的情况,就得把应用程序根据其观点中的磁盘来指定的 LBA 转换成每个实体存储设备上的 LBA。在复杂的分布式存储结构下,从发出要求的应用程序到实体甚至是远程设备之间,会有太多这样的 LBA 转换。

LBA、ATA 设备以及 Enhanced BIOS

ATA-1 规范中定义了 28 位寻址模式,当成 LBA 或是 CHS 都可以。如果用 CHS 这 28 位拆成: 磁柱 16 位、磁头 4 位、扇区 8 位。注意 CHS 模式扇区是从 1 开始算,所以在这个规范中扇区数最多只有 255 个,最大扇区编号为 254(0xFE)。

规范采用当时,CHS 的 BIOS 规范只有 24 位: 磁柱 10 比特、磁头 8 位、扇区 6 比特,定义在 BIOS 的 INT 13H 软件中断里,而且已经用在 DOS 的 MBR(Master Boot Record,主要引导记录)。这造成了 BIOS CHS 跟 ATA CHS 之间必须经过转换,否则各参数只能用到两者的最大公因数即 CHS 比特数={10, 4, 6},也就是 1024×16×63 个扇区,以每扇区 512 位组计算得 504 MiB。转换方式其一是 Large 模式或称 Enhanced BIOS 模式(又名 Bit Shift Translation, 位移转换),此方式会重新对应侦测到的磁柱和磁头数而扇区数不变﹔方式其二是将头一种 CHS 对应到 LBA 之后再换算成另一种 CHS 机制,称为 LBA-assist。

即使利用这些转址方式,BIOS 定给 MS-DOS 逻辑扇区(以及 Windows NT 4.0 硬盘分区)的 CHS 比特数={10, 8, 6}机制顶多也只能达到 7.84 GiB。以每扇区 512 位组来计算,ATA-1 所定义的 28 位 LBA 上限达到 128 GiB。2002 年 ATA-6 规范采用 48 位 LBA,同样以每扇区 512 位组计算容量上限可达 128 Petabytes。

0个人收藏 收藏

评论交流

泪雪默认头像 请「登录」后参与评论
  1. 加载中..