磁盘结构简介

今天在学习《鸟哥的Linux私房菜》时,鸟哥讲到了磁盘结构,看得我云里雾里的。索性网上搜索,看到一篇比较好的博文,主要是图例比较精准,结合文字描述很快就搞明白了。 

这里讲的主要是网上所谓的老式磁盘,它是由一个个盘片组成的,我们先从个盘片结构讲起。如图1所示,图中的一圈圈灰色同心圆为一条条磁道,从圆心向外画直线,可以将磁道划分为若干个弧段,每个磁道上一个弧段被称之为一个扇区(图践绿色部分)。扇区是磁盘的最小组成单元,通常是512字节。磁盘结构简介

图1 老式磁盘一个盘片的结构 

 

图2展示了由一个个盘片组成的磁盘立体结构,一个盘片上下两面都是可读写的,图中蓝色部分叫柱面(cylinder)。

磁盘结构简介

 2 老式磁盘的整体结构

 

简简单介绍了磁盘结构后,下面我们将对磁盘的参数进行讲解。磁盘的常见参数如下:

  • 磁头(head)
  • 磁道(track)
  • 柱面(cylinder)
  • 扇区(sector)
  • 圆盘(platter)

图2中磁盘是一个 3个圆盘6个磁头,7个柱面(每个盘片7个磁道) 的磁盘,图2中每条磁道有12个扇区,所以此磁盘的容量为6*7*12*512字节。

即:

     存储容量 = 磁头数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节数

 

下面讲一下现代磁盘,在老式磁盘中,尽管磁道周长不同,但每个磁道上的扇区数是相等的,越往圆心扇区弧段越短,但其存储密度越高。不过这种方式显然比较浪费空间,因此现代磁盘则改为等密度结构,这意味着外围磁道上的扇区数量要大于内圈的磁道,寻址方式也改为以扇区为单位的线性寻址。为了兼容老式的3D寻址方式,现代磁盘控制器中都有一个地址翻译器将 3D 寻址参数翻译为线性参数。

 磁盘结构简介

 图3 一张Linux的分区表

 如图3所示,在Linux中是以柱面为单位来分区的。这里分区大小除以Blocks数的值约1024说明,在磁盘上读写时的最小单位是1024字节----这是我猜的。

 

参考资源:

http://home.51.com/sky511314520/diary/item/10019498.html

http://blog.****.net/csu_whm/archive/2009/09/14/4550429.aspx

http://book.51cto.com/art/201012/238190.htm

 

简单理解磁盘结构

2018年04月24日 22:40:18 刘小绪同学 阅读数:1017

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.****.net/heuguangxu/article/details/80072024

    偶然看到一道笔试题,所以简单整理了一下磁盘的结构。本文主要介绍传统的磁盘结构,包括盘面、磁道、扇区、柱面、读写数据过程的概念,最后给出所遇到的笔试题。

磁盘结构

    传统的硬盘盘结构是像下图样子的,它有一个或多个盘片,用于存储数据,盘片多采用铝合金材料;中间有一个主轴,所有的盘片都绕着这个主轴转动,一个组合臂上面有多个磁头臂,每个磁头臂上面都有一个磁头,负责读写数据。

磁盘结构简介

盘面

    硬盘一般有一个或多个盘片,每个盘片可以有两面,即第一个盘片的正面为0面,反面为1面;第二个盘片的正面为2面…….依次类推。磁头的编号也和盘面的编号是一样的,因此有多少个盘面就有多少个磁头。盘面正视图如下图,磁头的传动臂只能在盘片的内外磁道之间移动。因此不管开机还是开机,磁头总是在盘片上面。关机时,磁头停在盘片上面,抖动容易划伤盘面造成数据损失,为了避免这样的情况,所以磁头都是停留在起停区的,起停区是没有数据的。

磁盘结构简介

磁道

    每个盘片的盘面被划分成多个狭窄的同心圆环,数据就存储在这样的同心圆环上面,我们将这样的圆环称为 磁道 (Track),每个盘面可以划分多个磁道。最外圈的磁道是0号磁道,向圆心增长依次为1磁道、2磁道……磁盘的数据存放就是从最外圈开始的。

磁盘结构简介

扇区

    根据硬盘的规格不同,磁道数可以从几百到成千上万不等。每个磁道可以存储数Kb的数据,但是计算机不必要每次都读写这么多数据。因此,再把每个磁道划分为若干个弧段,每个弧段就是一个 扇区 (Sector)。扇区是硬盘上存储的物理单位,现在每个扇区可存储512字节数据已经成了业界的约定。也就是说,即使计算机只需要某一个字节的数据,但是也得把这个512个字节的数据全部读入内存,再选择所需要的那个字节。虽然扇区从里面到外面面积越来越大,但是它们的容量是一样的;貌似后来技术更加先进了,把外面的大面积扇区又劈成了更小的块。��没查抱歉。

磁盘结构简介

柱面

    柱面实际上就是我们抽象出来的一个逻辑概念,简单来说就是处于同一个垂直区域的磁道称为 柱面 ,即各盘面上面相同位置磁道的集合。需要注意的是,磁盘读写数据是按柱面进行的,磁头读写数据时首先在同一柱面内从0磁头开始进行操作,依次向下在同一柱面的不同盘面(即磁头上)进行操作,只有在同一柱面所有的磁头全部读写完毕后磁头才转移到下一柱面。因为选取磁头只需通过电子切换即可,而选取柱面则必须通过机械切换。数据的读写是按柱面进行的,而不是按盘面进行,所以把数据存到同一个柱面是很有价值的。

读写数据过程

    现代硬盘寻道都是采用CHS(Cylinder Head Sector)的方式,硬盘读取数据时,读写磁头沿径向移动,移到要读取的扇区所在磁道的上方,这段时间称为寻道时间(seek time)。因读写磁头的起始位置与目标位置之间的距离不同,寻道时间也不同。磁头到达指定磁道后,然后通过盘片的旋转,使得要读取的扇区转到读写磁头的下方,这段时间称为旋转延迟时间(rotational latencytime)。然后再读写数据,读写数据也需要时间。

硬盘容量计算公式

    硬盘容量=盘面数×柱面数×扇区数×512字节

腾讯笔试题

    数据存储在磁盘上的排列方式会影响I/O服务的性能,一个圆环磁道上有10个物理块,10个数据记录R1~R10存放在这个磁道上,记录的安排顺序如下表所示:

物理块 1 2 3 4 5 6 7 8 9 10
逻辑记录 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10

    假设磁盘的旋转速度为20ms,磁盘当前处在R1的开头处,若系统顺序扫描后将数据放入单缓冲区内,处理数据的时间为4ms(然后再读取下个记录),则处理这10个记录的最长时间是多少?

    磁盘会一直朝某个方向旋转,不会因为处理数据而停止。本题要求顺序处理R1到R10,起始位置在R1,一周是20ms,共10个记录,所以每个记录的读取时间为2ms。首先读R1并处理R1,读R1花2ms,读好后磁盘处于R1的末尾或R2的开头,此时处理R1,需要4ms,因为磁盘一直旋转,所以R1处理好了后磁盘已经转到R4的开始了,这时花的时间为2+4=6ms。这时候要处理R2,需要等待磁盘从R5一直转到R2的开始才行,磁盘转动不可反向,所以要经过8*2ms才能转到R1的末尾,读取R2需要2ms,再处理R2需要4ms,处理结束后磁盘已经转到R5的开头了,这时花的时间为2*8+2+4=22ms。等待磁盘再转到R3又要8*2ms,加上R3自身2ms的读取时间和4ms的处理时间,花的时间也为22ms,此时磁盘已经转到R6的开头了,写到这里,就可以看到规律了,读取并处理后序记录都为22ms,所以总时间为6+22*9=204ms。

两张硬盘结构示意图

1. 硬盘示意图 http://www.kongch.com/2011/09/why-b-tree/ 2. 磁道、扇区与柱面示意图 http://www.huifusoft.cn/news/20097...