频道栏目
首页 > 网络 > 其他 > 正文

硬盘寻址 CHS LBA

2019-01-14 09:14:40           
收藏   我要投稿

近期回顾了下HDD磁盘的结构原理,重新又发现几个比较有意思的问题稍作整理记录一下。

【背景信息】fdisk -l 命令返回(rhce 7以下)[root@VM_0_15_centos ~]# fdisk -lDisk /dev/vda: 53.7 GB, 53687091200 bytes255 heads, 63 sectors/track, 6527 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00086547

写在前面 先翻译几个单词:

heads: 头部 --->这里理解为磁头数(PS,HDD中读写磁头是分开的,写+读为一组,这里表示磁头组数,即盘面数 , 一个盘有两个面)

sectors / track:扇形 / 小道 --->这里理解为磁道 cylinders :圆柱 --->这里理解为柱面

由上面的命令输出可以很直观的了解到这个分区的大小为:53687091200 bytes即: 255 heads 63 sectors/track 6527 cylinders = 104856255(总sectors数)

104856255 * 512 = 53686402560 bytes数

这里开始抛几个小问题:

为什么磁头数为单数? 另外数值为什么有255这么“巨”大? 磁道外圈与内圈周长 相差巨大,为什么扇区数一样? 且为什么是 63 ?

为什么我们实际计算的53686402560 bytes数 与 53687091200 bytes不相等?

要解释这几个问题,我们还是一定要引出 磁盘寻址 这个知识点。

磁盘寻址,意思就是kernel 如何找到 PBA(物理块地址)的一种实现方式。主要有两种 CHS(老式) 和 LBA

CHS由于早期磁盘的每个磁道的扇区数一样多(外圈磁颗粒稀疏,耐用性强),整体磁盘空间大小也不大。所以在设计时用了24位来表示:10+8+6C, (柱面数) 可编程数为 2^10 =1024 H, (磁头数) 可编程数为 2^8 =256S, (扇区数) 可编程数为 2^6 =64由于1位用于特殊作用,均需要减1 即最大寻址空间为:1023 255 63 * 512 = 8414461440 bytes = 8G+

很显然随着存储需求增加,单块磁盘的存储空间已经有了很大量级的发展。

其中物理特性里,主要的几个关键参数均有改变:

磁盘面的磁颗粒更高密+磁头更稳定更细(影响C) 磁盘面的磁颗粒均匀分布(影响S) 磁盘增加磁盘盘面(影响H)改变后之前的算法就不在适用于现在的这种结构了。所以就出了新的寻址方式LBA 逻辑块地址(从0开始计,一直到最后一个扇区)。

但为了兼容老式的计算方式以及更为立体的体现硬盘物理构造形态(个人理解),还是会体现出CHS的信息出来。

OK, 了解到这里 最上面的几个问题就很好解答了:

硬盘寻址 CHS LBA

为什么磁头数为单数? 另外数值为什么有255这么“巨”大?这里不是真实的磁头数,只是为了在LBA换算成CHS时均用了CHS的最大值来转换运算而已。如上面截图一块东芝3T的盘就是 8个盘面 16个磁头数

磁道外圈与内圈周长 相差巨大,为什么扇区数一样? 且为什么是 63 ?同理63也不是真实是这样,真实情况肯定是外圈扇区数比内圈大 为什么我们实际计算的53686402560 bytes数 与 53687091200 bytes不相等? 这个个人是这样理解:Units = cylinders of 16065 512 = 8225280 bytesCHS的一个最小计算单元,即一1个柱面所拥有的扇区数: 255 63 = 16065那么在LBA上表示出CHS时肯定以LBA为准,CHS作为参考。为此当有零头数时,就直接去掉不在CHS上做显示处理。实际情况中LBA总扇区数几乎一定不是 16065的倍数,所以我们用CHS去计算总大小时会比LBA的值稍小一点。范围是在(1~16064) * 512

end.

相关TAG标签 硬盘 寻址 CHS LBA
上一篇:RAID解析
下一篇:最后一页
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站