计算机硬盘结构+管理与优化简写

本来想详细的写但还是偷个懒看图就大概了解计算机大概结构了哈!后期再补。
这里先简单讲硬盘(磁盘)得一些知识。
什么是硬盘?(顺便插播百度百科讲解)
通常会将磁盘也叫硬盘,硬盘是永久存储数据得外部存储器,硬盘上也是有缓存的(芯片)
在挑选硬盘的时候,除了接口之外很多人关心的就是缓存容量。有朋友应该已经发现,怎么现在的硬盘都不显示缓存容量了?这里面会有奸商的阴谋诡计吗?大家一定会好奇,硬盘缓存的作用是什么呢?读完本文你将会有一个全新的认识!

  最近几年购买的硬盘,不管是机械硬盘还是固态硬盘,在新版检测软件中都是查不到缓存容量的,下图为CrystalDiskInfo检测2TB机械硬盘,HDTune中干脆将它的缓存标注为n/a(不存在)。这是ATA标准的一个局限,当时规划时只预留到32MB的代码,而现在硬盘的容量全都超过了32MB,无法正确识别。

  机械硬盘的缓存:运气爆发可以提升读取

  通常来说,机械硬盘的读取和写入速度基本一样。但如果在ATTO测验中运用较小的测验区块(64K),你会发现读取的速度显著比写入更快,甚至会发生读取400MB/s以上现象:正常是不可能有这么快的。

  在机械硬盘中,缓存主要发挥了加速读取的作用。如果一个数据刚刚被读取过,将临近它位置的数据保留在DRAM缓存中,就有机会被下一次读取命中——直接从DRAM缓存读出的速度远比从机械盘片读取快的多。

  缓存命中意味着性能大幅提升,这就是机械硬盘缓存的主要作用。理论上大缓存的确有助于提升机械硬盘的读取性能,但是提升幅度是非常有限的:它对于最重要的随机读取速度没有帮助。

  大缓存不一定意味着高性能,当前很多采用128M以上大缓存规划的机械硬盘采用了SMR叠瓦磁记录技术,增大缓存容量是为了降低SMR带来的性能衰减幅度。
磁盘缓存
三:存储器&硬盘
0
 
0
 
世界上第一台计算机是1946年在美国诞生的ENIAC,当时CPU还是使用笨重的电子管,后面的故事依次是贝尔实验室发明了晶体管,TI的工程师又发明了集成晶体管,IBM研发成功首款使用集成电路的计算机,IBM360, 后面 就是仙童八叛徒与intel,AMD的故事了。这段很著名的IT故事,我们不再累述了。伴随着世界上第一款商用处理器:Intel4004的出现,波澜壮阔的摩尔定律开始了。
当时负责IBM 360 操作系统开发的那个项目经理,根据该项目经验, 写了一本经典著作《人月神话》,也有其他参与者根据该项目经验,立传出书了,所以当时那批人都是大牛。
摩尔定律:当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。
半导体行业开始腾飞了。CPU上集成的晶体管数量越来越多。 intel i9的制程工艺已经到了14nm。所以CPU的执行速度也越来越快。
当然,摩尔定律也快到尽头了,根据量子力学,2nm是理论极限值。线宽不能再细了,低于2nm,隧穿效应就会产生干扰。
闲扯了一段CPU的发展历史,想说明的是,现在的CPU集成度越来越高,速度也越来越快。每秒钟能执行的指令也越来越多。(如果不知道指令,汇编之类的啥意思,看一下我的的另一篇文章关于跨平台的一些认识,否则下面的内容看着也有难度)。
CPU的作用就是去执行指令(当然,也包括输出结果等,本文只讨论和存储器相关,所以不扯其他的),并且尽可能的以它的极限最高速度去执行指令,至于具体的执行过程,做过单片机或者学过微机原理的应该比较清楚。就是伴随着时钟周期滴滴答答的节奏,CPU踏着拍子来执行指令。
至于CPU的指令集,那就是Intel的架构师们的工作,总之,CPU认识这些指令,并且能执行运算。(别忘记了冯诺依曼体系结构那张图)。对于这些指令,但是CPU采取了各种措施来加快执行过程(也可以理解为加快它的计算速度)。比如有以下几种常见的措施:
流水线(pipeline)技术:有电子厂打工经历的读者肯定很熟悉这个流水线模式。CPU的流水线工作方式和工业生产上的流水线概念一样。就是将一个指令的执行过程也分解为多个步骤,CPU中的每个电路只执行其中一个步骤,这样前赴后继加快执行速度。CPU中多个不同功能的电路单元组成一条指令处理流水线,然后将一条指令分成几个步骤后再由这些电路单元分别执行。在执行过程中,指令源源不断的送往CPU。让每个电路单元都不闲着,这样就大大的加快了执行速度。
超线程(Hyper-Threading)技术:对于超线程,百度百科的解释我都没看懂,但是大概原理就是这样的。CPU在进行线程切换的时候,要执行 切换各种寄存器状态等一些操作。把第一个线程的各种寄存器状态写回缓存中保存,然后把第二个线程的相关内容送到各种寄存器上。该过程必不可少,否则待会再将第一个线程切换回来时,不知道该线程的各个状态, 那还怎么接着继续执行呢?也正因为如此,所以这个过程比较慢,大概需要几万个时钟周期。所以后来做了这样的设计,把每个寄存器等都多做一个,就是多做一组寄存器(也包括一些其他相关电路等),,CPU在执行A线程时,使用的第一组寄存器,切换到B线程,直接使用第二组寄存器,然后再切换A线程时,再使用第一组寄存器。,CPU就不用再傻傻的等着寄存器值的切换,线程切换只需要几个时钟周期就够了。对于普通的执行多任务的计算机,CPU线程切换是个非常频繁的操作,所以使用该技术就会节省大量的时钟周期。也就是相当于加快了CPU的执行速度。这就是CPU宣传参数中所谓的四核八线程的由来,其实就是超线程技术。(每个核多做一组寄存器等电路固然会占用宝贵的空间,但是它带来的优点远远大于缺点)。
超标量技术:CPU可以在每个时钟周期内执行多个操作,可以实行指令的并行运算。
乱序执行: 我们认为程序都是顺序执行的。但是在CPU层面上,指令的执行顺序并不一定与它们在机器级程序(汇编)中的顺序一样。比如 a = b+c; d++;这两个语句 不按照顺序执行也不会影响最终结果。当然这只是在CPU执行指令的层面,在程序员们看来,依旧认为程序是顺序执行的。
cpu闲扯
前面扯了那么多,就是为了说明CPU的执行速度很快。每条指令的执行时间需要几个时钟周期到几十个时钟周期不等。但是CPU采用了种种技术来加快执行过程。所以平均执行一条指令只需要一个周期。而现在CPU主频都那么高。比如i7 7700K主频达到了 4.2G。这也就意味着,每个core每秒钟大约可以执行4.2亿条指令。那四个core呢?
CPU每秒钟可以执行几亿(甚至十几亿)条指令,所以它的执行速度真丫的的快啊
我们讨论完CPU如此快的执行速度,我们再来说我们常见的存储设备-机械硬盘。
不同种类的硬盘,打开背面后,你看到的东西可能不同,这里的种类分为三种:
(1)SSD硬盘,既固态硬盘。(2)HDD硬盘,即机械硬盘。(3)HHD混合硬盘。
他们的区别先不讲,后面会慢慢提到。我们先打开我们目前最常用,也相对最便宜的硬盘HDD机械硬盘
 内部结构讲解:
(1)盘面:箭头所指“磁盘”的地方,看着它是不是长的像光盘一样,这个盘就是来存储数据的,它不仅仅只有一张,而且是上下好几张在一起的。
(2)磁头(Head):我们知道盘面是存储数据的,那么它的数据怎么读写的呢,就是通过磁头来读写的。磁头有电感应式的,也有MR磁阻式的,这个磁头就是能够把盘面上存储的磁信息转换为电信号,进而能够读取信息了。这里注意,一个盘面有正反两面,因此也对应正反两个头,分别对着盘面的正反两面;盘面是多个上下叠放,因此也有多个磁头与之对应,所以一般情况下:盘面数量=磁头数量。(目前有些多磁头技术的应用,一个盘面可能对应多个磁头,这里先不考虑这种情况)。
(3)主轴马达:盘面和磁头如果是固定不动的,那么磁头是无法读到盘面其他地方的数据的,因此有一个主轴马达,带动着盘面高速旋转,这个就是转速,也就是我们平时看到的磁盘转速,或者硬盘转速,一般有5400,7200,10000以上的等等,速度越快,数据读写的越快,但是那么快转速,自然发热和功耗也多了。
(4)音圈马达和磁头臂:如果仅仅是盘面在主轴马达带动下转还不够,那样的话磁头仅仅能够读盘面的一圈数据,因此还需要磁头也能运动,就是在音圈马达和磁头臂共同作用下,沿着盘面半径方向运动,这样就能够读整个盘面的内容了。磁头在盘面高速旋转下,在空气流的作用下,会抬起很微小的高度,来读写数据。所以如果在硬盘正在读写数据的时候,去震动硬盘,那么很有可能使磁头和盘面相碰,进而损耗硬盘,因此,硬盘读写过程中要减少震动。
机械磁盘
磁道(Track):我们让磁头固定住,然后让盘面旋转,那么磁头所划出的同心圆,就称为一个磁道,如果再加上磁头的运动,那么磁盘上就形成了从外到里的一圈圈的磁道。
磁盘低速的原因是因为它一种机械装置,在磁盘中有一个或多个金属盘片,它们以5400,7200或10800rpm(RPM =revolutions per minute 每分钟多少转 )的速度旋转。从边缘开始有一个机械臂悬在盘面上,这类似于老式黑胶唱片机上的拾音臂。信息卸载磁盘上的一些列的同心圆上,是一连串的2进制位(称为bit位),为了统计方法,8个bit称为一个字节bytes,1024bytes=1k,1024k=1M,1024M=1G,所以我们平时所说的磁盘容量最终指的就是磁盘能写多少个2进制位。
那么多的磁道,为了好称呼,因此给他们取了名词,从外到里,分别叫做磁道0,磁道1,。。。,这里有三点需要说明的:一是磁道 与磁道之间并不是之间相连的,而是有一段距离,要不然磁道和磁道之间磁性会相互干扰了;二是上图中磁道画的是一个“圆圈”,而 实际上,磁道是有一定宽带的,所以应该叫做“圆环”才对。如下图:绿色的一个环就是一个磁道;三是磁道实际上是虚拟出来的,我 们看到的就是一个像光盘一样盘子,那些磁道只是被磁化了,我们想象成一个一个的磁道。
扇区(Sector)
硬盘的最小读写单位是一个扇区=》512Bytes
操作系统读写的最小单位是一个block块->8扇区的大小->4k
每个磁道可以分成一截一截的,就叫做扇区,英文叫sector,上图中蓝色的部分;因此一个磁道由多个扇区组成的。每个扇区可以存储512个字节,差不多0.5k.
ps举例:
buffer缓冲区-》大卡车
操作系统的block块-》收纳箱
硬盘的扇区-------->单个快递盒子
大卡车里存放了n个收纳箱,每个收纳箱子里存放了8个快递盒子
 
柱面(Cylinder):
分区指的就是从一个柱面开始到另外一个柱面结束,中间所包含的所有盘片所对应的磁盘.;
我们知道了磁道和扇区的概念,同时我们知道不是一个盘面存储信息,而是多个盘面上下叠放在一起存储信息,每个盘面都会有磁道,因此上下盘面中具有同一个编号的磁道就形成了一个圆柱,就称为柱面。通过概念我们知道,一个磁盘的柱面数=磁道数。
 
举例:7200转/分 的硬盘 → 120转/s → 转一圈花费的时间:0.008s
每个磁头可以读取一段换新区域,称为磁道
把一个 戈丁手臂 位置上所以的磁道合起来,组成一个柱面
每个磁道划成若干扇区,扇区典型的值是512字节
  数据都存放于一段一段的扇区,即磁道这个圆圈的一小段圆圈,从磁盘读取一段数据需要经历寻道时间和延迟时间
平均寻道时间:
机械手臂从一个柱面随机移动到相邻的柱面的时间成为寻道时间,找到了磁道就以为着招到了数据所在的那个圈圈,但是还不知道数据具体这个圆圈的具体位置。
 
访问时间
平均访问时间(Average Access Time)是指磁头从起始位置到达目标磁道位置,并且从目标磁道上找到要读写的数据扇区所需的时间。
平均访问时间体现了硬盘的读写速度,它包括了硬盘的寻道时间和等待/延迟时间,即:平均访问时间=平均寻道时间+平均等待时间
硬盘的平均寻道时间(Average Seek Time)是指硬盘的磁头移动到盘面指定磁道所需的时间。这个时间当然越小越好,硬盘的平均寻道时间通常在8ms到12ms之间,而SCSI硬盘则应小于或等于8ms。目前5ms
硬盘的等待/延迟 时间,又叫潜伏期(Latency),是指磁头已处于要访问的磁道,等待所要访问的扇区旋转至磁头下方的时间。平均等待时间为盘片旋转一周所需的时间的一半,一般应在4ms以下。
固态硬盘:
依赖电子存取数据

磁盘低速的原因是因为它一种机械装置,在磁盘中有一个或多个金属盘片,它们以5400,7200或10800rpm(RPM =revolutions per minute 每分钟多少转 )的速度旋转。从边缘开始有一个机械臂悬在盘面上,这类似于老式黑胶唱片机上的拾音臂。信息卸载磁盘上的一些列的同心圆上,是一连串的2进制位(称为bit位),为了统计方法,8个bit称为一个字节bytes,1024bytes=1k,1024k=1M,1024M=1G,所以我们平时所说的磁盘容量最终指的就是磁盘能写多少个2进制位。

# TB,PB, Eb, Zb, YB

1B= 8bit

1KB=2(10)B=1024B; 括号中的数字为2的指数(即多少次方)

1MB=2(10)KB=1024KB=2(20)B;

1GB=2(10)MB=1024MB=2(30)B。

1TB=2(10) GB=1024GB=2(40)B

1PB=2(10) TB=1024TB=2(50)B

1EB=2(10) PB=1024PB=2(60)B

1ZB=2(10) EB=1024EB=2(70)B

1YB=2(10) ZB=1024ZB=2(80)B

 

1Byte相当於一个英文字母

Kilobyte(KB)=1024B相当於一则短篇故事的内容。

Megabyte(MB)=l024KB相当於一则短篇小说的文字内容。

Gigabyte(GB)=1024MB相当於贝多芬第五乐章交响曲的乐谱内容。

Terabyte(TB)=1024GB相当於一家大型医院中所有的X光图片资讯量。

Petabyte(PB)=l024TB相当於50%的全美学术研究图书馆藏书资讯内容。

Exabyte (EB)=1024PB;5EB相当於至今全世界人类所讲过的话语。

Zettabyte(ZB)=1024EB如同全世界海滩上的沙子数量总和。

Yottabyte(YB)=1024ZB相当於7000位人类体内的微细胞总和。

每个磁头可以读取一段换新区域,称为磁道.

把一个戈丁手臂位置上所以的磁道合起来,组成一个柱面

每个磁道划成若干扇区,扇区典型的值是512字节

 数据都存放于一段一段的扇区,即磁道这个圆圈的一小段圆圈,从磁盘读取一段数据需要经历寻道时间和延迟时间

平均寻道时间

机械手臂从一个柱面随机移动到相邻的柱面的时间成为寻到时间,找到了磁道就以为着招到了数据所在的那个圈圈,但是还不知道数据具体这个圆圈的具体位置

平均延迟时间

机械臂到达正确的磁道之后还必须等待旋转到数据所在的扇区下,这段时间成为延迟时间

 机械硬盘工作解剖

  虚拟内存:

许多计算机支持虚拟内存机制,该机制使计算机可以运行大于物理内存的程序,方法是将正在使用的程序放入内存取执行,而暂时不需要执行的程序放到磁盘的某块地方,这块地方成为虚拟内存,在linux中成为swap,这种机制的核心在于快速地映射内存地址,由cpu中的一个部件负责,成为存储器管理单元(Memory Management Unit MMU)

PS:从一个程序切换到另外一个程序,成为上下文切换(context switch),缓存和MMU的出现提升了系统的性能,尤其是上下文切换

4.4 磁带

在价钱相同的情况下比硬盘拥有更高的存储容量,虽然速度低于磁盘,但是因其大容量,在地震水灾火灾时可移动性强等特性,常被用来做备份。(常见于大型数据库系统中)

虚拟内存:swap分区
虚拟存储器的基本概念   前面所介绍的存储器管理方式都有一个共同的特点,即他们都要求将一个作业全部装入内存后方能运行,于是,出现了下面两种情况   ① 有的作业很大,其所要求的内存空间超过了内存总容量,作业不能全部被装入内存,致使该作业无法运行。   ② 做大量作业要求运行,但由于内存容量不足以容纳所有这些作业,只能将少数作业装入内存让他们先运行,而将其他大量作业留在外存上等待。   为了解决上述问题,可以增加物理内存,但是其不太现实,另外是从逻辑上扩充内存容量。 虚拟内存: 许多计算机支持虚拟内存机制,该机制使计算机可以运行大于物理内存的程序,方法是将正在使用的程序放入内存取执行,而 暂时不需要执行的程序放到磁盘的某块地方,这块地方成为虚拟内存,在linux中成为swap,这种机制的核心在于快速地映射内 存地址,由cpu中的一个部件负责,成为存储器管理单元(Memory Management Unit MMU)  PS:从一个程序切换到另外一个程序,成为上下文切换(context switch),缓存和MMU的出现提升了系统的性能,尤其是上下文切换  

4.5 I/O设备

cpu和存储器并不是操作系统唯一需要管理的资源,I/O设备也是非常重要的一环。

见四中的图,I/O设备一般包括两个部分:设备控制器和设备本身

控制器:是查找主板上的一块芯片或一组芯片(硬盘,网卡,声卡等都需要插到一个口上,这个口连的便是控制器),控制器负责控制连接的设备,它从操作系统接收命令,比如读硬盘数据,然后就对硬盘设备发起读请求来读出内容。

控制器的功能:通常情况下对设备的控制是非常复杂和具体的,控制器的任务就是为操作系统屏蔽这些复杂而具体的工作,提供给操作系统一个简单而清晰的接口

设备本身:有相对简单的接口且标准的,这样大家都可以为其编写驱动程序了。要想调用设备,必须根据该接口编写复杂而具体的程序,于是有了控制器提供设备驱动接口给操作系统。必须把设备驱动程序安装到操作系统中。

4.5 输入输出设备

 #1、输入设备input
输入设备是计算接收外界输入数据的工具,如键盘、鼠标,相当于人的眼睛或耳朵。
输入设备的任务是把人们编好的程序和原始数据送到计算机中去,并且将他们转换成计算机内存所能识别和接受的信息方式。 
安输入信息的形态可分为字符(包括汉字)输入、图形输入、图像输入及语言输入等。目前,常见的输入设备有:键盘、鼠标、扫
描仪等。辅助存储器(磁盘、磁带)也可以看作输入设备。另外,自动控制和检测系统中使用的模数(A/D)转换装置也是一种输入设备。 
#2、输出设备output
输出设备是计算机向外输出数据的工具,如显示器、打印机,相当于人说的话,写出的文章。
输出设备的任务是将计算机的处理结果以人或其他设备所能接受的形式送出计算机。 
目前最常用的输出设备是打印机和显示器。辅助存储器也可以看做输出设备。另外,数模(D/A)转换装置也是一种输出设备。
ps:存储器如内存、磁盘等既是输入设备又是输出设备,统称为IO设备 
一:硬盘接口 有五种其中IDE慢慢被淘汰+SCSI已退出舞台
IDE并口
SATA串口
SCSI :小型机时代定制的接口,广泛用到的高速数据传输技术,
SAS(SATA+SCSI)
光纤通道
 
SSD+SAS====》土豪
SSD+SATA===============》常规,对速度有特殊要求
机械磁盘+SAS===========》常规,比较核心业务使用,对速度要求常规
机械磁盘+SATA===》内部服务
 
多块硬盘要连接到RAID卡(阵列卡)上
然后制作raid
 
raid0
至少1块盘
容量:n块盘合在一起的总容量
性能:理论上是n块盘合在一起的读写速度,实际上是要略低一些
冗余性:不允许坏任何一块盘
场合:追求读写性能,但是对数据安全性没有啥要求,例如集群服务器
 
特点:追求速度,不考虑数据安全
 
0
 
raid1
只能2块盘
 
容量:1块盘的容量
性能:几乎就是一块盘的读写速度
冗余性:可以坏一块盘,另外一块盘有完整的数据
场合:对数据安全性有要求,对速度读写速度没有特殊要求,例如服务器的系统盘
 
 
特点:追求数据安全,不考虑速度
0
 
 
 
raid5(介于raid0与raid1之间,是一种折中的方案)
至少3快盘,两两之间做奇偶校验-》异或运算,相同结果为0,不同结果为1
 
容量:废掉1块盘的容量,等量盘的情况下,容量低于raid0
性能:读写速度低于raid0,高于raid1
冗余性:可以坏一块盘,其余两块盘可以通过奇偶校验推导出坏盘的数据
场合:一般的场合都可以使用
 
0
 
raid10
至少有4块盘
 
raid1和raid0的整合的产物,兼顾了raid1的数据安全性与raid0的性能,但是成本大幅度提升
通常用于数据库服务器
0
 
 
优化的基本原则
1、针对读操作,数据能从内存取就不要从硬盘
2、针对写操作,在内存中攒一波再写入硬盘
优化:大都停留在IO 的优化,IO优化原则:能在内存搞定的读写 就不要在硬盘里。我们都知道CPU遇到IO的时候会闲下来,在CPU工作工作能力一定的情况下,要其提升效率得话就 要降低IO,使cpu闲着的时间减少,这样就可以提高效率。cpu→内存→硬盘→ 那么降低IO就是要降低内存到硬盘的环节,(例如:操作系统这个软件优化机制--- 当CPU从内存读取数据后,数据会缓存在内存中不删除,下次用的时候直接调用;写的时候攒一波再从内存中写入硬盘;操作系统得优化是针对一堆应用)运维人员做集群架构的时候,能让数据从内存中取得就不要从硬盘里取出。 1.硬件优化--->缓存 2.操作系统优化: 3.应用程序: 向提升程序性能得时;在开发程序的时候,就可以针对此应用控制其数据尽量优先存内存中,从内存中进行读写。 4.网络优化。
posted @ 2020-10-10 21:26  只有时间是永恒  阅读(798)  评论(0)    收藏  举报