热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

机械硬盘的存储结构及原理

硬盘是电脑主要的存储媒介之一。根据硬盘的读写方式和存储方式不同,当前主流的硬盘可以分为固态硬盘(SSD硬盘)、机械硬盘(HDD硬盘)两种。由于固态硬盘存在价格昂贵、容量较小和一旦损

硬盘是电脑主要的存储媒介之一。根据硬盘的读写方式和存储方式不同,当前主流的硬盘可以分为固态硬盘(SSD硬盘)、机械硬盘(HDD 硬盘)两种。由于固态硬盘存在价格昂贵、容量较小和一旦损坏难以修复等特点,当前市场主要流行的依然是机械硬盘。当然,在高端计算机中通常会结合两种硬盘来获取更好的性能,这里暂且不提。故而本博客主要对机械硬盘的结构和原理进行讲解。

《机械硬盘的存储结构及原理》

硬盘是由很多的盘片组成,而其存储信息的方式就是通过盘片表面的磁性物质来存储数据。把盘片放在显微镜下放大,可以看到盘片表面是凹凸不平的,凸起的地方被磁化,代表数字 1,凹的地方没有被磁化,代表数字 0,因此硬盘可以通过二进制的形式来存储表示文字、图片等的信息。

机械硬盘主要由磁盘、磁头、盘片主轴、控制电机、磁头控制器、数据转换器、接口、缓存等几个部分组成。

《机械硬盘的存储结构及原理》

所有的盘片都固定在一个旋转轴上,这个轴即盘片主轴。所有的盘片之间是绝对平行的,且在每个盘片的盘面上都有一个磁头来对磁盘上的数据进行读写操作。所有的磁头连在一个磁头控制器上,由磁头控制器负责各个磁头的运动,磁头可沿盘片的半径方向移动,实际上磁头是围绕固定点做圆周移动(如果有兴趣可以通过上面的磁盘结构图自己看,这里不加以解释),而且传统的硬盘中由于所有磁头都固定在同一个控制器上,所以每个磁头同一时刻是同轴的,即从正上方往下看,所有磁头任何时候都是重叠的,在这种情况下每一时刻只有一个磁头能够进行数据的读取。当硬盘启动时盘片在主轴的带动下以每分钟数千转到上万转的速度在高速运转,而磁头在控制器的控制下固定在某个位置上对经过其下方的磁盘区域进行信息的读写。

由前面的描述可知,硬盘的数据主要存储在许多盘片上的磁性物质上,而这些这些信息是通过磁头在某一点上对其下方的转动的磁片进行写入的,故而这些信息以一条条围绕主轴的同心圆细线的形式存在。为了方便描述与管理,我们把这些存储信息的同心圆细线称为磁道,将盘片中用于记录信息的面称为盘面(当前主流的硬盘一般每个盘片的两个面都会用于记录信息,所以每个盘片对应两个盘面。当然,也有部分只有一面用于记录信息的,在此暂不赘述),而多个盘片上半径相同的磁道称为柱面,为了更好的对磁盘资源进行过滤,我们有将每个磁道划分为均匀的几段称为扇区。

《机械硬盘的存储结构及原理》

下面对几个名词的定义是作用进行解析:

盘面:硬盘的盘片一般用铝合金材料做基片,硬盘的每一个盘片的两个面都可以用于记录信息,一般每个盘面都会得到利用,都可以存储数据,成为盘面。当然,也有的硬盘为了简化磁头结构或其他原因只利用其中一个面来记录信息,这样每个盘片就只对应一个盘面。每一个盘面都有一个盘面号,按顺序从上至下从 0 开始编号。在硬盘系统中,盘面号又叫磁头号,因为每一个盘面都有一个对应的读写磁头。

磁道:磁盘在格式化时被划分成许多用于记录信息的同心圆,这些同心圆轨迹叫做磁道。磁道从外向内从 0 开始顺序编号,硬盘的每一个盘面有 300-1024 个磁道,新式大容量硬盘每面的磁道数更多,信息以脉冲串的形式记录在这些轨迹中,这些同心圆不是连续记录数据,而是被划分成一段段的圆弧。这些圆弧的角速度一样,由于径向长度不一样,所以线速度也不一样,外圈的线速度较内圈的线速度大,所以同样的转速度下,外圈在同样时间段里,划过的圆弧长度要比内圈划过的圆弧长度大。磁道是看不见的,只是盘面上以特殊形式磁化了的一些磁化区,在磁盘格式化时就已规划完毕。

柱面:所有盘面上半径相同的磁道构成的一个圆柱面,即在磁盘上所有与主轴距离相同的磁道成为柱面。之所以给出柱面这一概念主要是为了提高磁盘的读写速率。在机械硬盘中数据的读取是依靠磁头来进行的,每个盘面对应一个磁头,而这些磁头通常被固定在同一转轴上,同时这些磁头从磁盘的上方看是重合的,也就是说所有磁头同一时间处于同一半径的磁道上。而由哪个磁头进行数据的读取则由对应的控制系统来进行电子切换,这个过程相对于将磁头移动的相邻的磁道是一个极快的过程,为了提高数据的读/写速率,数据的存储一般是按照柱面的顺序来的,具体的做法就是数据先存储在某一柱面的第一个磁道上,之后建数据存储到同一柱面的第二个磁道上,一直到同一柱面的所有磁道都使用完后才转到下一柱面进行读/写操作。

扇区:扇区是磁盘读写的基本单位,每个扇区包括 512 个字节的数据和一些其他信息,这些信息包含存储数据地址的标识符(盘面号,柱面号,扇区号等)和用于保护数据的纠错码(ECC)。在传统磁盘上,一般盘面上每一个磁道所对应的扇区是相同的,由于盘面上的磁道大小是不均匀的,其中越靠近主轴的磁道长度越小,越远离主轴的磁道长度越大,所以这样的分配方式会造成“大面积小数据”的浪费情况,为了避免这种情况很多硬盘采用同密度盘片,所以半径不同的磁道划分成出来的扇区数量也是不同的,磁道越长所包含的扇区也也就也多。关于扇区号,目前主要有两种定义规则,其中一种是每个磁道拥有自己的扇区号,在每个磁道中扇区号都是从0开始增加的,之后通过CHS(也称3D)寻址方式来对对应扇区进行访问,而另一种则是对硬盘上所有的扇区进行统一编号,其编号规则为:LBA(逻辑扇区号)=磁头数 × 每磁道扇区数 × 当前所在柱面号 + 每磁道扇区数 × 当前所在磁头号 + 当前所在扇区号 – 1 。这两种方式中,前者适合对每个磁道所拥有的磁道相同的传统磁盘,而后者时候采用同密度盘片的磁盘。


推荐阅读
author-avatar
上善若水纯_310
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有