[linux文件系统]磁盘硬件篇

前言

本系列磁盘管理,本周在学习磁盘管理的知识。本系列准备将磁盘以及文件系统都整理一遍。因为本渣渣不是计算机专业毕业的,所以最近在学习基础的计算机知识,如有不对的,望指正。

以下主要介绍机械式硬盘

硬盘分类

固态硬盘(SSD) 采用闪存颗粒来存储
机械硬盘(HDD) 采用磁性碟片来存储

机械式硬盘基础概念

机械式硬盘

  • 盘片和盘面 platter 硬盘中一般会有多个盘片组成,一个盘片有两个盘面,每个盘面都有对应的一个读/写磁头。,一般一个硬盘盘片在5片内,盘面编号自下向上从0开始,最大可以有255,表示总共256个盘面
  • 磁头 head 有几个磁头就有几个盘面,所以磁头数和盘面数一样
  • 磁道 track 盘面中一圈圈的同心圆为一条条磁道
  • 柱面 cylinder 每个盘面的相同磁道叠加起来,看起来像一个柱体。从0开始编号,最大1023,表示总共1024个磁道
  • 扇区 sector 每个磁道可以划分若干段,每一段称为一个扇区,扇区是磁盘最小存储单位,一般每个扇区存储512个字节数据,从1开始编号,最大63,表示63个扇区(ps:第0扇区是存放MBR的)
    扇区和磁道
  • 盘面中一圈圈灰色同心圆为一条条磁道,图中一个个灰色的同心圆部分
  • 从同心圆向外画直线,将磁道划分为若干个弧段,每个磁道上的一个弧段称为一个扇区,图中绿色部分
    磁头和柱面
  • 每个盘面都被划分为数目相等的磁道,从外援的’0’开始编号,具有相同编号的磁道形成一个圆柱,称为磁盘的柱面
  • 磁盘的柱面数与一个盘面的磁道数是相等的
  • 由于每个盘面都有自己的磁头,因此盘面数等于总的磁头数

磁盘容量计算

扇区,磁道(或柱面)和磁头数构成了硬盘结构的基本参数
存储容量 = 每个扇区字节数×每个磁道的扇区数×磁道数×磁头数
上图 算每个扇区的字节数为512字节,每个磁道划分12个扇区,每个盘面上有7个磁道,三个盘面(6个磁头数)
存储容量 512×12×7×6 = 258048

每个磁道的扇区数一样?

老的硬盘,外圈的密度小,内圈的密度大,每圈可存储的数据量是一样的,外围的扇区明显比内圈的扇区要宽,这就浪费了很多磁道长度

有了多多区记录技术,外围的磁道就可以划分为更多的扇区,新的磁盘数据的密度都一致,这样磁道的周长越长,扇区就越多,存储的数据量就越大

因此现在这里说的每个磁道扇区数一样是整个盘面平均算的

磁盘读取响应时间

如果要读取某个位置(盘面,磁道,扇区)的内容,首先,磁臂要移动磁头到响应的磁道位置,以及对应的盘面,这就是寻道时间。
但是这时,你的数据不一定当好就在这时的扇区,所以你得等,等转到所要读取的扇区后在进行数据读取,这要靠硬盘的转速

  • 寻道时间: 磁头从开始移动到数据所在磁道所需要的时间,寻道时间越短,I/O操作越快,目前磁盘的平均寻道时间一般在3-15ms,一般都在10ms左右。
  • 旋转延迟: 盘片旋转将请求数据所在扇区移至读写磁头下方所需要的时间,旋转延迟取决于磁盘转速。
    笔记本的硬盘 5400转/分
    台式机的硬盘 7200转/分
  • 数据传输时间: 完成传输所请求的数据所需要的时间。

小结一下:从上面的指标来看、其实最重要的、或者说、我们最关心的应该只有两个:寻道时间;旋转延迟。

cpu读写过程

cpu要从磁盘读入一份数据的过程

  1. cpu发送一条指令,读取数据
    这条指令通过系统总线,桥间总线,PCI总线传递到磁盘控制器。控制器收到指令后明白这次是一次读请求,且读完了是否要中断的信息。做好准备工作,等待读取数据

  2. cpu 再发送一条指令,读入内存地址
    这条指令还是通过一系列总线发给磁盘控制器之后,磁盘控制器就开始忙活,找到逻辑块对应的物理块地址,查找,寻道等工作,就开始读取数据

  3. cpu再发送一条指令说读取内存的地址
    当收到这条指令后,cpu就不管了,他告诉一个叫DMA的总线,说接下来就靠你了。DMA设备会接管总线,负责将磁盘数据通过PCI总线,桥间总线,内存总线同步到内存指定位置

注:对于磁盘控制器式如何管理各个磁盘的,在之后篇幅进行描述

读写过程

cpu要从磁盘读入一份数据的过程

  1. cpu发送一条指令,读取数据
    这条指令通过系统总线,桥间总线,PCI总线传递到磁盘控制器。控制器收到指令后明白这次是一次读请求,且读完了是否要中断的信息。做好准备工作,等待读取数据
  2. cpu 再发送一条指令,读入内存地址
    这条指令还是通过一系列总线发给磁盘控制器之后,磁盘控制器就开始忙活,找到逻辑块对应的物理块地址,查找,寻道等工作,就开始读取数据
  3. cpu再发送一条指令说读取内存的地址
    当收到这条指令后,cpu就不管了,他告诉一个叫DMA的总线,说接下来就靠你了。DMA设备会接管总线,负责将磁盘数据通过PCI总线,桥间总线,内存总线同步到内存指定位置

注:对于磁盘控制器式如何管理各个磁盘的,在之后篇幅进行描述

数据的读写过程

读写过程分两头,一头将数据从各个盘面中读取出来,一头将数据送给计算机

1.从盘面中读取数据
在磁盘中,顺序读取会比随机读取快很多。如果我们按顺序遍历磁盘的数据,那么读取顺序是这样的:
1.读取0盘面的0磁道(最下面的盘面的最外磁道),等盘面旋转完一圈后,这个磁道被读取完毕
2.切换到第二个盘面,读第二块盘面的最外面一个磁道,以此类推。
3.磁臂在向内移动一个磁道,重复刚刚过程,直到读到最里面的磁道

注:由于磁臂的移动要比盘面的切换要慢的多(一个是机械切换,一个是电子切换),所以为了减少磁臂的移动。如上的顺序读取是,先读取一个柱面,再读取下一个磁道

磁臂移动速度慢,刚刚是按顺序读取的时候,但往往在真实情况下,会有大量的随机访问的情况下,就需要考虑磁臂调度算法。例如RSS,FIFO,PRI,SSTF,SCAN/LOOK等

2.将数据送给计算机
从磁盘中读取到数据,接下来我们磁盘通过什么样的接口跟计算机做交互?这个接口也叫磁盘管理协议

磁盘管理协议的定义又分成两部分:软件和硬件。其中软件是指指令级,目前指令级就两个:ATA和SCSI;硬件代表数据传输方式,一般都是主板上的导线传输原理,但并不限制,数据甚至可以通过TCP/IP传输。定义一个协议需要同时定义了指令级以及硬件传输方式

总结

  1. 扇区,磁道(或柱面)和磁头数构成了硬盘结构的基本参数
  2. 读写一次磁盘信息所需的时间可分解为:寻道时间、延迟时间、传输时间。为提高磁盘传输效率,软件应着重考虑减少寻道时间和延迟时间。
  3. 比如讲常用的数据存放在0磁道(最外面的磁道),因为这个扇区在最外层,角速度一样,每秒走过的周长就越长,读的数据就多。

以上介绍的是磁盘的物理存储方式,接下来会有逻辑层面的数据管理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章