CHS 到 LBA 的映射 -(磁盘存储)
Posted
技术标签:
【中文标题】CHS 到 LBA 的映射 -(磁盘存储)【英文标题】:CHS to LBA mapping - (Disk Storage) 【发布时间】:2015-12-15 00:18:09 【问题描述】:在 LBA 之前,您只需拥有磁盘的物理映射,它最初在一台旧的 IBM-PC 兼容机器上看起来如下所示:
气缸数:(10 位) 0-1024 (1024 = 2^10) 磁头编号:(8 位) 0-256 (256 = 2^8) 扇区号:(6 位) 0 通常为“boot sector”保留(c-0,h-0,s-0) 1-64 (63 = 2^6 - 1) *0 保留总 CHS 地址位: 24 位
过去平均(文件|块|扇区)大小为 512B。
来自wikipedia的示例:
512(bytes) × 63(sectors) x 256(heads) × 1024(cylinders) = 8064 MiB (yields what is known as 8 GiB limit)
当我在 LBA 公式中称为 heads-per-cylinder
时,我对 head 的实际含义感到困惑。这对我来说没有意义,因为据我所知,头部是 head,除非它是可移动媒体,否则每个 盘子 都有两个(顶部,底部)对于它的每个表面。
在我看来,将它们称为heads-per-disk
或heads-per-surface
会更有意义,因为圆柱体穿过整个磁盘(多个盘片)。
逻辑块寻址:
公式:A = (c ⋅ Nheads + h) ⋅ Nsectors + (s − 1)
A
- 逻辑块地址
Nheads
- 磁盘上的磁头数 heads-per-disk
Nsectors
- 磁道上的扇区数 sectors-per-track
c,h,s
- 是气缸、气缸盖、扇区号 24-bits total (10+8+6)
看here上的第一个例子:
For geometry 1020 16 63 of a disk with 1028160 sectors CHS 3 2 1 is LBA 3150=(3× 16+2)× 63
几何:
气缸编号 - 1020 (0-1024) 头数 - 16 (0-256) 扇区号 - 63 (1-64)这些几何如何将 CHS 编号映射到要在此公式中使用的 CHS 元组 (3,2,1)?
【问题讨论】:
【参考方案1】:我不认为正面是一个字面意义上的数字。我拆开几个来打捞钕磁铁,只见过一个磁盘,除了大的 5-1/4 英寸驱动器。和2个头。柱面从 0 开始,但磁头和扇区从 1 开始。一些早期的 Windows 版本只能处理 255 个磁头,因此数字会被玩弄。
简答:将柱面 # 乘以磁头 # 乘以扇区 #,它接近 LBA。我尝试在此处粘贴一个 OpenBSD fdisk 列表,但它有 80 个字符宽,网页不会接受它。
【讨论】:
【参考方案2】:“头”这个词通常不是指实际的物理头,而是指盘子的两侧。所以 C,H,S 可以被认为是 P,T,S(盘片、磁道、扇区)。首先它现在缩小到一个特定的层,从磁盘中心到外部的径向磁道,然后是单个扇区。在软盘上是类似的,但没有盘片,所以你只需使用 T.S(磁道,扇区)
【讨论】:
以上是关于CHS 到 LBA 的映射 -(磁盘存储)的主要内容,如果未能解决你的问题,请参考以下文章
为啥Linux的fdisk分区时First Sector是63或2048