互联网营销是做什么的?(互联网营销是干什么)
903
2022-05-28
无论是作为个人电脑的数据盘,还是在数据中心里面用作海量数据的存储,机械硬盘仍然在被大量使用。随着成本下降,机械硬盘还替代掉了很多传统的存储设备,如以前常用来备份冷数据的磁带。
拆解机械硬盘
机械硬盘的IOPS大概只能做到每秒100次左右。机械硬盘拆开,自然知道为什么它的IOPS是100左右了。
硬盘的构造,里面有接口,有对应的控制电路版,以及实际的I/O设备(也就是我们的机械硬盘)。
一块机械硬盘是由盘面、磁头和悬臂三个部件组成的。
盘面(Disk Platter)
实际存储数据的盘片。
本身通常是用的铝、玻璃或者陶瓷这样的材质做成的光滑盘片。有层磁性涂层。数据就存储在这个磁性的涂层上。
中间有个受电机控制的转轴。控制盘面去旋转。
硬盘的转速5400转的、7200转,指的就是盘面中间电机控制的转轴的旋转速度,英文单位叫RPM,也就是每分钟的旋转圈数(Rotations Per Minute)。所谓7200转,其实更准确地说是7200RPM,指的就是一旦电脑开机供电之后,我们的硬盘就可以一直做到每分钟转上7200圈。如果折算到每一秒钟,就是120圈。
磁头(Drive Head)
数据并不能直接从盘面传输到总线上,而是通过磁头,从盘面上读取到,然后再通过电路信号传输给控制电路、接口,再到总线。
一个盘面有两个磁头,分别在盘面的正反面。盘面在正反两面都有对应的磁性涂层来存储数据,而且一块硬盘也不是只有一个盘面,而是上下堆叠了很多个盘面,各个盘面之间是平行的。每个盘面的正反两面都有对应的磁头。
悬臂(Actutor Arm)
悬臂链接在磁头上,并且在一定范围内会去把磁头定位到盘面的某个特定的磁道(Track)。
磁道
一个盘面通常圆形,由很多同心圆,每个“甜甜圈”就是个磁道。每个磁道都有自己的编号。
悬臂只是控制到底读最里面那个“甜甜圈”,还是最外面的“甜甜圈”数据。
扇区(Sector)
一个磁道,会分成一个个扇区。
柱面(Cylinder)
上下平行的一个个盘面的相同扇区叫一个柱面。
读取数据
两个步骤:
把盘面旋转到某个位置
在这个位置,悬臂可定位到整个盘面的某个子区间。该子区间像块披萨饼,叫几何扇区(Geometrical Sector),即“几何位置上”,所有这些扇区都可以被悬臂访问到。
把悬臂移动到特定磁道的特定扇区,即在这个“几何扇区”里,找到实际扇区。找到后,磁头会落下,即可读取到正对着扇区的数据。
一次硬盘的随机访问所需时间
平均延时(Average Latency)
盘面旋转,把几何扇区对准悬臂位置的时间。
和机械硬盘转速相关。随机情况下,平均找到一个几何扇区,需旋转半圈盘面。
7200r硬盘,1s可旋转240个半圈,平均延时:
1s / 240 = 4.17ms
1
平均寻道时间(Average Seek Time)
盘面选转之后,我们的悬臂定位到扇区的的时间。我们现在用的HDD硬盘的平均寻道时间一般在4-10ms。
若随机在硬盘找个数据,需 8~14 ms。硬盘只有一个电机转轴,也只有一个悬臂,所以无法并行定位或读数据。那一块7200r硬盘,1s随机的I/O访问次数就是:
1s / 8 ms = 125 IOPS 或 1s / 14ms = 70 IOPS
1
2
3
若不是随机的数据访问,而是顺序的数据读写,应如何最大化读取效率?
顺序存放的数据,尽可能存放在同一柱面。这就只需旋转一次盘面,进行一次寻道,就可写或读,同一个垂直空间上的多个盘面的数据。
若一个柱面上的数据不够,也不要去动悬臂,而是通过电机转动盘面,即可顺序读完一个磁道上的所有数据。所以,对HDD的顺序数据读写,吞吐率还不错,约200MB/s。
Partial Stroking:根据场景提升性能
100 IOPS,难以满足现在互联网海量高并发请求。所以,DB都会将数据存在SSD。
但20年前,没有现在这么便宜的SSD硬盘。DB数据只能存放在HDD。
即便如今数据中心用的HDD,也是7200r,要更快随机访问速度,会选择SSD。但当时,SSD非常贵,还没能商业化。硬盘厂商们在不断研发转得更快的硬盘。数据中心往往用10000转,乃至15000转的硬盘。
直到2010年,SSD开始逐步进入市场,西数还在尝试研发20000转硬盘。转速更高、寻道时间更短的机械硬盘,才能满足实际DB需求。
但10000r,乃至15000r硬盘也更贵,想节约成本,提高性价比,就得想它法。Google早年用家用PC乃至二手硬件,通过软件层面设计解决了可靠性和性能。那有办法提高机械硬盘的IOPS吗?这就是Partial Stroking或者Short Stroking,“缩短行程”技术。
既然访问一次数据的时间:“平均延时+寻道时间”,只要能缩短其一,就能提升IOPS!
一般 硬 盘 的 寻 道 时 间 > 平 均 延 时 硬盘的寻道时间 > 平均延时 硬盘的寻道时间>平均延时,如何缩短平均寻道时间?
最极端的:不需要寻道,即将所有数据都放在一个磁道。比如始终把磁头放在最外道磁道。寻道时间就基本为0,访问时间就只剩平均延时。
IOPS就变成:
1s / 4ms = 250 IOPS
1
但只用一个磁道,能存的数据就很有限了!可能我们还不如把这些数据直接都放到内存呢!
所以,实践可只用 1 / 2 1/2 1/2或 1 / 4 1/4 1/4磁道,即最外面1/4或1/2的磁道。
如此,硬盘可使用的容量可能变成1/2或1/4。但寻道时间也变成1/4或1/2,因为悬臂需移动的“行程”也变成原来1/2或者1/4,IOPS大幅提升!
比如7200r硬盘,正常平均延时4.17ms,寻道时间9ms。原本IOPS:
1s / (4.17ms + 9ms) = 75.9 IOPS
1
若只用其中1/4磁道,则IOPS变成:
1s / (4.17ms + 9ms/4) = 155.8 IOPS
1
IOPS提升一倍,和块15000r硬盘性能差不多。但这时硬盘可用空间也只有原1/4。所以,这样通过软件去格式化硬盘,只保留部分磁道让系统可用的情况,可大大提升硬件性价比。
总结
机械硬盘的硬件主要由:盘面、磁头和悬臂组成。
数据在盘面上的位置,可通过磁道、扇区和柱面来定位。
实际的一次对于硬盘的访问,需要把盘面旋转到某一个“几何扇区”,对准悬臂的位置。然后,悬臂通过寻道,把磁头放到我们实际要读取的扇区上。
受制于机械硬盘的结构,对随机数据的访问速度,就要包含旋转盘面的平均延时和移动悬臂的寻道时间。通过这俩时间,能计得机械硬盘IOPS。
7200转机械硬盘的IOPS,只能做到100。早期没有SSD,所以想出Partial Stroking这个浪费存储空间,但能缩短寻道时间以提高硬盘IOPS的方案。
Linux
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。