磁盘存储原理:从电与磁说起

一、磁盘的电磁原理:

1、电磁效应:

电流通过导体时,会在导体的周围会产生感应磁场。感应磁场的磁极随电流方向的改变而改变。

电磁效应.png

2、电磁感应:

当闭合电路内的磁场发生变化(磁通量变化)时,闭合电路内会产生感应电动势。即闭合电路内磁场的变化会使电路内产生感应电流。 电流的方向与磁极方向有关。

电磁感应.jpg

3、磁盘的写过程:

磁头的结构:

磁头.png

磁头是一个外面被线圈缠绕着的U型磁芯,可以看出当磁头通电时便会产生磁场,磁场的方向随电流方向的变化而变化。

磁盘的结构:

磁盘的表面涂有一层磁性物质,在未受到外部磁场影响的情况下磁盘表面的磁性粒子的磁极方向是不会改变的。一般从未受到外部干扰的磁性粒子磁极方向是随机的,于是出现互相抵消的情况,这时磁盘的表现出无磁极显现。

磁盘写的过程:

写数据时磁头移到到磁盘要写入的位置,输入电流产生感应磁场。受磁场的影响,磁头下磁性粒子的磁极方向变为与磁场同向。如此通过给磁头不同的电流方向,使得磁盘局部产生不同的磁极,产生的磁极在未受到外部磁场干扰下是不会改变的。如此便将电信号持久化到磁盘上(当然并不是一个磁极方向代表1另一个代表0).

4、磁盘读取过程:

磁盘2.png

读取磁盘信息时,不通电的磁头在写入数据的位置上移动,上面可知数据在磁盘上就是一些磁极方向不同的微小局部区域,由于各个域的磁极方向不完全同,所以磁头在通过这些不同方向的区域时会产生不同方向的感应电流,这些微弱正负脉冲经过驱动的去噪扩大成为内存中的二进制数据。

在硬盘读写时,读操作是远快于写操作的,而且读/写操作具有完全不同的特性,所以目前的硬盘一般都分离出读和写两个磁头,但原理还是不变的。

绝命毒师第五季第一季中,记录着老白制毒过程的笔记本电脑被警方获得并放到了物证室里。老白利用电磁效应,在物证室外弄了一个大‘磁铁’破坏了笔记本里面的数据,就是上面的原理。

二、磁盘结构

磁盘.png

 硬盘主要由碟片、磁头、电机马达、接口和控制电路控制芯片组成。

1、碟片与磁头:

碟片的表面涂有磁性材料,厚度一般在0.5mm左右。碟片安装在主轴马达的转轴上,工作时碟片在主轴马达的带动下高速旋转。

每个碟片都有正反两面,每一面称为盘面,第1个碟片的正面称为0面,反面称为1面,第2个碟片的正面称为2面,反面称为3面...依次类推。每个盘面都有一个对应磁头负责读写该该盘面上的数据。盘面数和磁头数是相等的。

磁头.jpg

关机时,磁头停留在硬盘的停泊区。当磁盘工作时,磁头移动到盘面上分,依靠磁盘的高速旋转引起的空气动力效应悬浮在盘面上,与盘面的距离不到1微米。磁头在副轴马达的带动下可以在极短的时间内精确的切换到数据所在的磁道。

可以看出磁盘工作是一个极其细致活,哪怕一个灰尘都会造成磁盘的损坏,所以磁盘都是密封的,我们最好不要自行拆装硬盘。 #### 2、磁道

在碟片高速旋转时磁头保持不变,那么就会形成一个圆形的轨迹,这些同心的圆行轨迹就是磁道(Track)。数据保存在磁道上面。每个盘面有多个磁道,磁道之间并不是紧挨着的,因为磁化的单元挨的太近会互相影响。

磁道.jpg

在每个盘面的最外圈的磁道是“0”磁道,向盘心方向依次增长为1磁道,2磁...。数据从最外面的磁道开始存放。

3、扇区

盘面上可以划分出很多的磁道,每条磁道容量从100多到300多kb不等,但我们读写并不会每次都读写这么多数据,所以又将磁道划分为若干更小的弧段,每段称为一个扇区(Sector)。扇区是磁盘进行读写操作的最小单位。

一般磁盘的一个扇区大小为512字节,这也就意味着哪怕我们只存放1字节的数据也会占用磁盘的一个扇区512个字节,读取时也会读取整个扇区的512个字节然后选择需要的哪个字节。

2010年为了提升磁盘的效率和使用率又推出了4k大小的的扇区标准,这样又出现了一个4k对齐问题,后面再讲。

查看磁盘扇区大小:

cat /sys/block/sda/queue/physical_block_size
512

扇区是硬盘的最小操作单位,但扇区对于操作系统来说还是太小了,一般操作系统有自己的硬盘操作最小单位,在linux下一般为4k

查看操作系统IO大小:

tune2fs -l /dev/sda1|grep "Block size"
Block size:               4096

交叉因子 扇区是从1开始编号的而不是0,且扇区号是按照某个间隔交叉着编排,1扇区的后面并不是2号扇区。若1号扇区后面第八个扇区为2号扇区,这个“八”就称为交叉因子。

数据是存放在连续的扇区里(编号连续),系统对磁盘的io操作往往也是落在在连续的扇区。磁盘的旋转速度非常快,如果扇区按物理顺序进行编号,那么当磁头读取完一个扇区后完全来不及定位到下一个连续的下扇区,盘面就已经旋转过了,这时只能等盘片旋转完一圈,这极大浪费了时间,所以用交叉编排来解决这个问题。

交叉因子为1的扇区划分:

扇区.jpg

4、柱面:

 柱面是抽象出来的一个逻辑概念,盘面被划分为1磁道,2磁道,3磁道....,不同盘面上相同编号的磁道组成了一个圆柱面,即柱面(Cylinder)。

柱面.jpg

磁盘读写数据是按柱面进行,即在读写时磁头先寻找到数据所在的柱面(寻找磁道),然后再判断数据所在的盘面。这样大大提升了磁盘的读写效率,因为盘面的确定是电子操作速度非常快,但磁道的寻找需要电动马达带动磁头移到到指定磁道上,是机械操作。

5、磁盘读写耗时:

磁盘读写时耗 = 寻道时间 + 旋转延迟时间 + 操作时耗

寻道时间:读写数据时磁头首先要移到到指定磁道(柱面),这段时间称为寻道时间

旋转延迟时间:当磁头移动到指定磁道后,需要等待要操作的扇区旋转到磁头的下方,这段时间称为转延迟时间

操作时耗:磁头进行读写操作花费的时间

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏WOLFRAM

制作一个云端的小应用

1014
来自专栏点点滴滴

引物设计

1903
来自专栏AI研习社

百度开源移动端深度学习框架 MDL,可在苹果安卓系统自由切换

AI研习社消息,日前,百度在 GitHub 上开源了移动端深度学习框架 mobile-deep-learning(MDL)的全部代码以及脚本,这项研究旨在让卷积...

3436
来自专栏小小詹同学

知乎大神爬取高颜值美女(Python爬虫+人脸检测+颜值检测)

这是一篇来自知乎大神的技术文章

93410
来自专栏云计算教程系列

Python3 如何使用NLTK处理语言数据

文本已成为最常见的表达形式之一。我们每天都要发送电子邮件、短信、推文、更新状态。因此,非结构化文本数据变得非常普遍,分析大量文本数据现在是了解人们的想法的关键方...

2674
来自专栏日常学python

我爬取了37000条球迷评论,知道了这场比赛的重要信息

这两天看恰好有nba决赛,是球迷的你肯定不会错过的,更何况今年的西部决赛是火箭对战勇士,今年的火箭是很强的,因为没到关键时候总会有人站出来。当然,勇士也是挺强的...

1142
来自专栏我爱编程

电磁兼容

1324
来自专栏liuchengxu

以太坊分片:overview and finality

在 Ethereum Casper 101[1] 中,Jon Choi 对 Casper 做了一个很棒很清晰的综述,并解释了为什么显式最终确定性(explici...

902
来自专栏开源FPGA

基于FPGA的HDMI高清显示接口驱动

  本站点博客将逐步迁移至http://ninghechuanblogs.cn/   HDMI是(High Definition Multimedia Inte...

59910
来自专栏BGP专栏

BGP电路详解(上)

1.把匹配器件相互靠近放置  (共OD/Poly/OD space/Poly space一致)

2630

扫码关注云+社区

领取腾讯云代金券