关于硬盘的碎碎念

写在前面

本文是我收集的关于硬盘的一些琐碎知识,包括硬盘的结构,分区,寻址相关的知识。

例外说明一下,文中的一些图片来自网络,在此感谢各位前辈的分享!

 

硬盘结构以及工作原理

关于硬盘的结构以及工作原理,我这里的描述比较简洁。如果想深入了解则可以参考网上别人的文章,文末我也会给出我认为很不错的文章的链接,以供参考。

硬盘结构

硬盘是根据电磁转换原理来存储数据的。

由上图看到,硬盘主要由若干盘片组成,它们被固定在中心的转抽上,由电动机带动着一起高速旋转。附着在盘片表面的扁平锥状物,就是用于在盘片上读写数据的磁头。

磁道(Track):当盘片高速旋转时,磁头每步进一次,都会从它所在的位置开始,绕着圆心“画”出一个看不见的圆圈,这就是磁道。

柱面(Cylinder):因为所有磁头都是联动的,就是一起步进或者后退,故每个盘片的同一个磁道又可以形成一个虚拟的圆柱,称为柱面。在硬盘上,数据的访问是以柱面来组织的。

扇区(Sector):磁道进一步划分为扇区。每条磁道能够划分为几个扇区,取决于硬盘的制造商,通常为63个扇区。

这里需要注意的是,磁道和柱面的编号从0开始,但是扇区的编号是从1开始的

 

两种不同的硬盘寻址方式

对于CPU来说,硬盘就像是一个黑盒子,CPU才不管你内部是如何组织的!那么CPU究竟如何定位硬盘上的数据呢? 这就是硬盘的寻址问题。

目前为止,主要有两种硬盘寻址方式,分别为CHS寻址和LBA寻址。

CHS寻址

CHS寻址又叫3D寻址,比较好理解,对硬盘做了简单的抽象,利用三个数字来定位数据。C(Cylinder)代表柱面,H(Head)代表磁头号,S(Sector)代表扇区号。根据前面我们对硬盘结构的描述,柱面从0开始,由外向内依次编号。磁头由上到下,从0开始依次编号。扇区从1开始编号。

柱面定位磁道,磁头号负责定位哪个盘面,扇区号定位对应的扇区,这样就可以唯一确定地址了。

LBA寻址

采用CHS寻址方式虽然简单,但是很不方便。想想看,如果有一大堆数据要写,还得注意柱面号、磁头号和扇区号不要超过界限,所以,后来引入了逻辑块寻址(Logical Block Address)的概念,即LBA。LBA是一种线性寻址方式,把硬盘想象成一种线性设备,因此LBA是比CHS更加高阶的一种抽象。LBA寻址模式是由硬盘控制器在硬件一级上提供支持,所有效率很高,兼容性很好。LBA模式下不考虑扇区的物理位置(柱面号、磁头号),而是把它们全部组织起来同一编号,在这种寻址方式下,原先的物理扇区被组织成逻辑扇区,且都有唯一的逻辑扇区号,唯一不同的是物理扇区编号从1开始,而逻辑扇区编号从0开始

  举个例子,某硬盘有6个磁头,每面有1000个磁道,每磁道有17个扇区。那么:

  LBA0对应着0柱面0磁头1扇区

  LBA1对应着0柱面0磁头2扇区

  ... ...

  LBA16对应着0柱面0磁头17扇区

  LBA17对应着0柱面1磁头1扇区

  LBA18对应这0柱面1磁头2扇区

  ... ...

  LBA33对应着0柱面1磁头17扇区
  LBA34对应着0柱面2磁头1扇区

  LBA35对应着0柱面2磁头2扇区

  ... ...

  LBA101999扇区对应这999柱面5磁头17扇区,这也是整个硬盘上最后一个物理扇区。

两种寻址方式的转换

从CHS到LBA应该比较简单,还是以上面的硬盘为里,CHS为(1,5,10)的话LBA多少呢?

首先柱面C为1,证明已经越过0柱面,那么0柱面总共多少扇区啊? 换句话问,就是一个柱面总有多少扇区呢? 很明显,6个面,每面17个扇区,即6x17个扇区。

磁头为5,证明在1柱面上已经个越过5个面,那么越过的扇区数为5x17

因此很容易得到LBA的值为6x17+5x17+(10 - 1)= 196。

CHS->LBA总结公式如下:

LBA = C * 磁头总数 * 每磁道扇区总数 + H *  每磁道扇区总数 + (S - 1)

公式中S之所以减一是因为LBA从0开始。

LBA->CHS总结公式如下:

C =  LBA / (磁头总数 * 每磁道扇区总数)

H = (LBA / 每磁道扇区总数) % 磁头总数

S = (LBA % 每磁道扇区总数) + 1

其中(磁头总数*每磁道扇区总数)就是一个柱面的总扇区数,

参考链接:

装系统不求人——硬盘的秘密深入

Linux 文件系统(一) - 磁盘分区物理结构

Linux virtual filesystem switch I 磁盘相干概念以及知识

存储基础知识 - 磁盘寻址(CHS寻址方式、LBA寻址方式)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值