大话存储 2 - 磁盘原理与技术详解

磁盘大致由盘片、读写头、马达、底座、电路板等几大项组合而成。

磁头运行时距离磁盘表面的高度由下图可以随意感受一下:

1 磁盘上的数据组织

磁盘在逻辑上被划分为磁道、柱面以及扇区。

启停区:每个盘片的每个面都有一个读写磁头,磁头期初停在盘片的最内圈,即线速度最小的地方。这是一个特殊区域,它不存放任何数据。

0磁道:在最外圈,离主轴最远的地方是0磁道,硬盘数据的存放就是从最外圈开始的。有一个0磁道检测器,由它来完成硬盘的初始定位。

0磁道存放着用于操作系统启动所必需的程序代码,因为PC启动后BIOS程序在加载任何操作系统或其他程序,总是默认从磁盘的0磁道读取程序代码来运行。

?

扇区

扇区的结构如下图所示

?

扇区:将每个环形磁道等距离切割,形成等长度的圆弧,每个圆弧就是一个扇区。

每个扇区可以存放512B的数据和一些其他信息。

一个扇区有两个主要部分:存储数据地点的标识符和存储数据的数据段。

扇区头标:扇区头标包括组成扇区三级地址的三个数字

  • 扇区所在的柱面(磁道)
  • 磁头编号
  • 扇区在磁道上的位置,即扇区号

柱面、磁头和扇区三者简称CHS,所以扇区的地址又称为CHS地址。

现在CHS编址方式已经不再使用,而转为LBA编址方式。

LBA地址:LBA编址方式不再划分柱面和磁头号,这些数据由磁盘自身保留,而磁盘对外提供的地址全部为线性的地址,即LBA地址。

所谓线性,指的是把磁盘想象成只有一个磁道,这个磁道是无限长的直线,扇区为这条直线上的等长线段,从1开始顺序编号,直到无限远。这种方式屏蔽了柱面、磁头这些复杂的东西。

某个LBA地址到底对应着哪个磁道上的哪个扇区,这种对应关系保存在磁盘控制电路的ROM芯片中,磁盘初始化的时候载入缓存汇总以便随时查询。

磁盘的IO单位

单位:磁盘读写都是以扇区为最小寻址单位的。也就是说不可能往某某扇区的前半部分写入某某数据。

一次IO:对于磁盘来说,一次磁头的连续读或者写叫做一次IO。

性能瓶颈:磁盘的读写是通过盘片的转动实现的,相对于盘片的转动而言,步进(换道速度)的速度就慢多了,所以制约磁盘性能的主要因素就是这个步进速度,也就是寻道速度。

目前磁盘的平均寻道速度最高可以达到5ms多,不同磁盘的寻道速度不同,普通IDE磁盘可能会超过10ms。

SCSI接口协议:专门用于计算机和其外设交互数据的一套接口系统。

2 磁盘相关技术

2.1 无序传输技术

目的:提高磁盘性能

无序传输:控制器发出一条指令要求读取某些扇区中的内容,磁盘可以不从数据所在的初始扇区开始读,而是采取就近原则。比如,磁盘恰好处于待读取数据的尾部几个扇区,磁盘按照能读多少就读多少的原则,在尾部时就先读取尾部的数据,然后立即发给控制器,控制器立即通过DMA数据放到内存,等磁盘旋转到数据块头部扇区时再读取剩余的部分。这样做避免了“旋转延迟”。

通过指令排队和无序传输可以最大化利用磁盘资源。

?

2.2 磁头扫描方式

  1. FCFS:First Come First Serve,磁头完全按照IO进入的先后顺序执行寻道操作。
  2. SSTF:Shortest Seek Time First,控制器会优先让磁头跳到离当前磁头位置最近的一个IO磁道去读写。
  3. SCAN:回旋扫描模式,类似于电梯模型,从一端到另一端,然后折返,如果当前队列中有某个磁道的IO在等待,就停下处理,否则不再该磁道停留。优点是不会饿死任何IO。
  4. C-SCAN:单向扫描模式,磁头总是从内圈向外圈扫描,达到外圈之后迅速返回内圈,返回途中不接受任何IO。
  5. LOOK:智能监察扫描模式,相对于SCAN模式的区别在于,磁头不必达到内外圈终点后才折返,而只要完成最两端的IO即可折返。
  6. C-LOOK:智能监察单向扫描模式。

?扫描模式的选择:

?1 负载不高的情况下,SSTF模式可以获得最佳的性能

?2 高负载条件下,SCAN或者C-SCAN,C-LOOK模式更为合适,可以防止造成某些较远的IO饿死的问题。

?

2.3 磁盘缓存

缓存的作用:用于接收指令和数据,还被用来进行预读。

磁盘缓存时刻处于打开状态。

“禁用”缓存:并非真的关闭缓存,而是磁盘收到写入指令和数据后,必须先将其写入盘片,然后才向控制器返回成功信号,这样就相当于禁用了缓存,但是实际上,指令和数据首先到达的一定是缓存。

强制盘片访问:FUA指令,Force Unit Access,对于写操作,磁盘必须将受到的数据写入盘片才返回成功信号,也就是进行write through。对于读操作,磁盘受到指令后,直接去盘片上读数据,不搜索缓存。

?

2.4 影响磁盘性能的因素

影响磁盘性能的因素包括以下几种:

  1. 转速:影响磁盘连续IO时吞吐性能的首要因素。
  2. 寻到速度:影响磁盘随机IO性能的首要因素。
  3. 单碟容量:间接因素。
  4. 接口速度:最不重要的因素。目前的接口速度在理论上都已经满足了磁盘所能达到的最高外部传输带宽。

?

3 SCSI磁盘接口

凡是作为一个通信协议,就可以按照OSI模型来将其划分层次。

划分了层次之后,我们可以把这个协议进行分解,提取每个层次的功能和各个层次之间的接口,从而可以将这个协议融合到其他协议之中,来适应各种不同的环境。

SCSI的全称是Small Computer System Interface,即小型计算机系统接口,具备多种类型的外设通信能力。?

需要:一块相当于CPU的SCSI的控制器,对SCSI设备进行控制,减少了对CPU的负担。

4 磁盘控制器、磁盘驱动器和他们的驱动程序(控制电路)

磁盘控制器

  • 参与底层的总线初始化,仲裁等过程,以及指令传输过程、指令传输状态机、重传、ACK确认等,将这些泰国底层的机制过滤掉,从而向驱动程序提供一种简洁的几口。
  • 驱动程序只要将要读写的设备号、起始地址等信息,也就是指令描述块传递给控制器即可,控制器接收指令并做相应动作,将执行后的结果信号返回给驱动程序。

磁盘驱动器控制电路

磁盘驱动器控制电路位于磁盘驱动器上,专门负责直接驱动磁头臂做运动来读写数据

磁盘控制器位于主板上,专门用来向磁盘驱动器控制电路发送指令,从而控制磁盘驱动器读写数据。

整个流程如下:

  1. SCSI或者ATA执行指令(即CDB),是由OS内核的磁盘控制器驱动程序生成的
  2. CPU将CDB通过主板导线发送给同样处于主板上的磁盘控制器
  3. 磁盘控制器继而通过线缆将指令发送给磁盘驱动器
  4. 磁盘驱动器解析收到的指令从而根据指令的要求来控制磁头臂

下图表示了磁盘空气驱动程序、磁盘控制器和磁盘驱动器控制电路三者之间的关系

操作系统初始化过程中,和磁盘相关的流程

操作系统还没有启动起来加载磁盘控制器驱动的时候,是怎么访问磁盘的呢?

因为,CPU必须执行磁盘控制器驱动程序才能产生指令,进而才能读写磁盘数据。

所以,系统BIOS可以加载一个简化版的磁盘控制器驱动程序。

操作系统初始化时,通过执行这个驱动程序,会向系统BIOS报告控制器所掌管的磁盘设备的情况。

最后BIOS通过执行驱动程序,使得CPU可以发送对应的读指令,提取磁盘的0磁道的第一个扇区中的代码载入内存执行,从而加载OS。

Queue Depth

再介绍一个影响磁盘性能的概念,叫做Queue Depth

在上面的介绍中,我们会默认理解,磁盘控制器向存储设备发起的指令,是一条一条顺序发送的。

而实际上,这些指令是一批一批地发送的,存储目标设备批量执行IO。

在IO比较少的时候,处理一条指令和同时处理多条指令将会耗费几乎相同的时间。

Queue Depth决定了批量指令处理的最大条数。

随着Queue Depth的增加,IO延迟也会随机增加。

?

5 小结

这一章,主要介绍了磁盘原理,影响磁盘性能的一些因素。

通过对这些基本原理和概念的理解,不仅了解了磁盘是如何工作的,在遇到底层应用程序的性能问题时,也提供了另外一种思路来定位问题,即对IO读写性能的分析,来定位性能问题。

再啰嗦几句,虽然目前存储这个工作方向很有意思,也很有挑战,但是存储这个方向,更多偏向的是稳定,没有很多fancy的功能开发,所以个人觉得对新人来说,并不是很好的锻炼方向。

最近也愈发对工作分配不满意,更多做的是支持、调查问题之类的没有挑战又费时的工作,可能会考虑换个方向试试吧。

?

参考资料

《大话存储2-存储系统架构与底层原理极限剖析》?

4 磁盘控制器、磁盘驱动器和他们的驱动程序(控制电路)

时间: 2024-10-08 20:30:26

大话存储 2 - 磁盘原理与技术详解的相关文章

CDN技术详解及实现原理

CDN技术详解 一本好的入门书是带你进入陌生领域的明灯,<CDN技术详解>绝对是带你进入CDN行业的那盏最亮的明灯.因此,虽然只是纯粹的重点抄录,我也要把<CDN技术详解>的精华放上网.公诸同好. 第一章    引言    “第一公里”是指万维网流量向用户传送的第一个出口,是网站服务器接入互联网的链路所能提供的带宽.这个带宽决定了一个 网站能为用户提供的访问速度和并发访问量.如果业务繁忙,用户的访问数越多,拥塞越严重,网站会在最需要向用户提供服务时失去用户.(还有“中间一公里” 和

【H.264/AVC视频编解码技术详解】十三、熵编码算法(3):CAVLC原理

<H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行解析和实现,欢迎观看! "纸上得来终觉浅,绝知此事要躬行",只有自己按照标准文档以代码的形式操作一遍,才能对视频压缩编码标准的思想和方法有足够深刻的理解和体会! 链接地址:H.264/AVC视频编解码技术详解 GitHub代码地址:点击这里 上下文自适应的变长编码(Context-base

实现高性能纠删码引擎 | 纠删码技术详解(下)

作者介绍: 徐祥曦,七牛云工程师,独立开发了多套高性能纠删码/再生码编码引擎.柳青,华中科技大学博士,研究方向为基于纠删码的分布式存储系统. 前言: 在上篇<如何选择纠删码编码引擎>中,我们简单了解了 Reed-Solomon Codes(RS 码)的编/解码过程,以及编码引擎的评判标准.但并没有就具体实现进行展开,本篇作为<纠删码技术详解>的下篇,我们将主要探讨工程实现的问题. 这里先简单提炼一下实现高性能纠删码引擎的要点:首先,根据编码理论将矩阵以及有限域的运算工程化,接下来主

Mysql主从数据库架构的复制原理及配置详解

1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置.从服务器接收

Linux磁盘阵列技术详解(二)--raid 1创建

我在Linux磁盘阵列技术详解(一)里已经详细介绍了几种RAID磁盘阵列方式,原理以及创建raid 0 的详细步骤.那么这篇文档就着重讲解如何创建raid 1的技术: 步骤如下: ① 分区 同样我们还是以一块硬盘的不同分区为例,实际工作中应该是不同的硬盘才对. 具体分区步骤不再赘述! 分区后结果如下图所示: ② 创建raid 1 mdadm -C -v /dev/md1 -l 1 -n 2 -x 1 /dev/sdc1 /dev/sdc2 /dev/sdc3 或者 mdadm -C -v /de

hadoop应用开发技术详解

<大 数据技术丛书:Hadoop应用开发技术详解>共12章.第1-2章详细地介绍了Hadoop的生态系统.关键技术以及安装和配置:第3章是 MapReduce的使用入门,让读者了解整个开发过程:第4-5章详细讲解了分布式文件系统HDFS和Hadoop的文件I/O:第6章分析了 MapReduce的工作原理:第7章讲解了如何利用Eclipse来编译Hadoop的源代码,以及如何对Hadoop应用进行测试和调试:第8-9章 细致地讲解了MapReduce的开发方法和高级应用:第10-12章系统地讲

腾讯技术分享:GIF动图技术详解及手机QQ动态表情压缩技术实践

本文来自腾讯前端开发工程师" wendygogogo"的技术分享,作者自评:"在Web前端摸爬滚打的码农一枚,对技术充满热情的菜鸟,致力为手Q的建设添砖加瓦." 1.GIF格式的历史 GIF ( Graphics Interchange Format )原义是"图像互换格式",是 CompuServe 公司在1987年开发出的图像文件格式,可以说是互联网界的老古董了. GIF 格式可以存储多幅彩色图像,如果将这些图像((https://www.q

红帽Linux故障定位技术详解与实例(2)

红帽Linux故障定位技术详解与实例(2) 2011-09-28 14:26 圈儿 BEAREYES.COM 我要评论(0) 字号:T | T 在线故障定位就是在故障发生时, 故障所处的操作系统环境仍然可以访问,故障处理人员可通过console, ssh等方式登录到操作系统上,在shell上执行各种操作命令或测试程序的方式对故障环境进行观察,分析,测试,以定位出故障发生的原因. AD:2014WOT全球软件技术峰会北京站 课程视频发布 3.内核故障情形及处理 (1)内核panic panic是内

磁盘及文件系统管理详解---急需加强

磁盘管理: 机械式硬盘 U盘.光盘.软盘.硬件.磁带 MBR:Master Boot Record 主引导记录 ln [-s -v] SRC DEST:创建链接文件,默认硬链接 -s:创建软连接 -v:显示过程 硬链接: 1.只能对文件创建,不能应用于目录 2.不能跨文件系统 3.创建硬链接会增加文件被链接的次数 符号链接(软连接): 1.可以应用于目录 2.可以跨文件系统 3.不会增加被链接文件的链接次数 4.其大小为指定的路径所包含的字符个数 du -s -h df:显示整个磁盘分区使用情况