近期回顾了下HDD磁盘的结构知识点,重新又理下几个比较有意思的问题稍作整理记录分享下。
【背景信息】fdisk -l 命令返回(rhce 7以下) [root@VM_0_15_centos ~]# fdisk -l Disk /dev/vda: 53.7 GB, 53687091200 bytes 255 heads, 63 sectors/track, 6527 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00086547
写在前面 先翻译几个单词:
由上面的命令输出可以很直观的了解到这个分区的大小为:53687091200 bytes 即: 255 heads 63 sectors/track 6527 cylinders = 104856255(总sectors数)
104856255 * 512 = 53686402560 bytes数
【引出问题】这里开始抛几个小问题:
【分析要点】要解释这几个问题,我们还是一定要引出 磁盘寻址 这个知识点。 磁盘寻址,意思就是kernel 如何找到 PBA(物理块地址)的一种实现方式。 主要有两种 CHS(老式) 和 LBA CHS 由于早期磁盘的每个磁道的扇区数一样多(外圈磁颗粒稀疏,耐用性强), 整体磁盘空间大小也不大。所以在设计时用了24位来表示:10+8+6 C, (柱面数) 可编程数为 2^10 =1024 H, (磁头数) 可编程数为 2^8 =256 S, (扇区数) 可编程数为 2^6 =64 由于1位用于特殊作用,均需要减1 即最大寻址空间为: 1023 255 63 * 512 = 8414461440 bytes = 8G+ 很显然随着存储需求增加,单块磁盘的存储空间已经有了很大量级的发展。 其中物理特性里,主要的几个关键参数均有改变: 磁盘面的磁颗粒更高密+磁头更稳定更细(影响C) 磁盘面的磁颗粒均匀分布(影响S) 磁盘增加磁盘盘面(影响H) 改变后之前的算法就不在适用于现在的这种结构了。所以就出了新的寻址方式LBA 逻辑块地址(从0开始计,一直到最后一个扇区)。但为了兼容老式的计算方式以及更为立体的体现硬盘物理构造形态(个人理解),还是会体现出CHS的信息出来。
【输出结论】OK, 了解到这里 最上面的几个问题就很好解答了
End 2019.1.14
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。