• 机械硬盘 固态硬盘 读写原理


    机械硬盘

      磁盘结构图:

        

      一个磁盘磁盘里面有一到多个盘片,盘片可以可以单面或者双面的。单面盘片只有一个面有磁头,双面盘片,两个面都有磁头。多盘片,双盘面的磁盘,是协同工作的,这时候他们机械臂的位置相同,盘面相对位置恒定,理论上多盘片之间可以相互【配合共同读写,但是查询了多资料,都没有先关的记录,多盘片的硬盘,也并不会成倍的提升读写性能,大概只能归结于工艺原因,并不能做到多盘片协同工作。

       磁盘被划分成一个一个圆环,每一个圆环就是一个磁道,圆环上的一段就是扇区,一个扇区模默认大小是512字节,也就是 0.5KB。如下图,我们格式化硬盘的时候,可以指定分配单元大小,理论上一个分配单元最小值就是一个扇区。

      操作系统的分配单元大小叫做蔟,一个蔟由一到多个连续扇区组成,一个文件只能被连续的存储在一个或者多个蔟里面。比如我4K对齐(操作系统指定1个蔟由8个扇区构成),那么我即便有的文件只有1个字节,那么它也会占用4K的存储空间。

      有时候我们文件显示存储空间是0,这是操作系统优化的结果,太小的文件,占用一个蔟太浪费,我们可以公用区域老存放,这个文件知道在大一点,或者公共区域放不下了,就会直接分配单独的一个蔟存储。

      

                                

      

      磁盘读写过程:

        1.通过地址确定需要读取的数据所在的磁道,和扇区。

        2.机械摆臂移动磁头到指定磁道位置(等待机械结构移动)

        3.等到磁盘扇区转到到磁头位置开始读取(等待机械结构转动)

        4.如果数数据是在相邻扇区,或者相邻的蔟,那么就能连续的读取,这种叫做顺序读取

        5 .如果所需数据位于不同扇区,不同磁道,那么需要不断移动机械臂,和等待磁盘转动到指定扇区。这种就是随机读写。

        机械硬盘随机读写慢的原因,2次等待机械机构移动到指定位置。摆臂移动时间大概是6-8毫秒,7200转的硬盘一秒钟转120圈,每圈时间8.3毫秒,平均半圈是4 毫秒的样子。所以7200转的机械银盘随机读取的平均延时在10多毫秒

        机械硬盘顺序读写速度比随机读写快80倍以上,差异巨大。

        

        

       叠瓦盘:

        受限于磁头工艺,写磁头比读磁头要大,不能做的和写磁头一样小。读磁头只要磁道环中间一小块环就能读取数据,写磁头会磁化整个磁道。磁道两边额空间被浪费。

        不能减少写磁头的大写(或者说磁化区域的大小),那就把相邻的磁道两边没有被读但是又被写了的磁区重叠起来。这样对读完全没有影响,只是写的时候会把下一个磁道也磁化了,为了解决这种问题,只能把下一个磁道的数据缓存起来,等上一个磁道写完,在写回去,然后没隔一定数量磁道,就有一个不是跌磁道的间隔,这样知道出现这样间隔位置,都需要缓存然后一次写,多写入了很次次数据,写入效率大幅度下降。而且在工艺没有进步的基础上通过取巧带来额容量提示,不仅牺牲了写入效率,而且数据密度更高,数据间的影响更大,出问题概率更高,我之前买过一个2TB 的叠瓦盘,不到一年就坏了。这种叠瓦盘容量翻倍,缓存也会真加很多(为了缓存误写才多出来的缓存),价格却只比TB的贵一点点,很容易吸引消费者买个大的,更容易卖出去。

        为了数据安全,建议大家谨慎购买叠瓦盘。

         

      硬盘的转速是很定吗?

        1.恒定角速度,转速很定(老硬盘是这样的)

        2.恒定扇区线速度,转速不恒定,也就是每个磁道的转速都不一样。

        3.分区恒定角速度,比如0-100磁道速度是7200转,100-200,是7400转,磁道越高,转速越快。但是速度不是一磁道来控制的,而是一个区域的磁道都是同样的转速。

          

          整个磁盘都用恒定的速度,外围磁道数据就会比较稀疏,有大量的浪费,这种磁盘每个磁道的扇区数量是一样的,相对来说最外围的磁道最安全,因为数据密度低,收到磁化干扰比较小。

          圆周率是3.14,半径增加一倍,周周增加3.14 倍,为了充分的利用外围的存储空间,可以给外围磁道划分更多额扇区,并且给与更低转速。这样的结果就是外围磁道数据相对来说读取效率变低,外围磁道转速低了,读取速度自然就慢了。

       

      串口磁盘和并口磁盘的区别是什么,那个速度快?

        并口磁盘,10多面的老接口,现在已经弃用,他的数据是并行,但是它依旧比串行的慢,原因在于多路数据同时传输会有相互干扰,一串行8为了,因为相互干扰,频率达到一定程度就上不去了。并口盘的频率只能达到100Mbps,即便它8路数据,依旧只有800Mbps,串口盘,没有多路相互干扰,频率可以做的很高,现在一般能做到6Gbps,即便只能串行,因为频率搞了,传输速也远高于并口,老的并口现在应该已经见不到,笔者重来没有见过。现在sata3 硬盘已经有逐步被走 NVMe 协议的 M2 接口替代的趋势。

        

        目前的 stata 3接口就是并口:并口是触电形式的。

          

        老的并口硬盘接口:如图,串口是针脚形式的

            

        

        

    固态硬盘:

       

        固态银盘结构图:

          

        在浮姗晶体管的上面加高电压,电子穿透隧穿层,被卡在绝缘层和隧穿层之间,D-S中通电没有足够的电子就不会联通

        在浮姗晶体管的下面加高电压,点穿透隧穿层到达下方,D-S中加电压,有足够电子,就会联通。

        

        固态硬盘的写入寿命限制,是因为隧穿层被电子仿佛通过,漏了,不能在把电子锁定在绝缘层和隧穿层中间。

        固态硬盘都是电子移动,随机读写效率远高于机械硬盘。

        

        但是和顺序读写比起来,固态硬盘的随机读写慢不了多少,随件写入效率略微降低,随机读取能力也就下降一半左右。

         固态硬盘写入数据前西药对齐,所以哟独特的trim指令。文件删除以后,操作系统会挑选空余时间自动执行trim,而不是下次使用的时候再对齐,机械硬盘不需要对齐,直接覆盖就行了。所以机械硬盘的数据在没有覆盖之前都是可以回复了,固态硬盘一般一般在回收站里面删除以后很快就执行了trim命令,几乎不能在恢复数据了。

        USB 接口速度参考:

         

         所以我们买的移动固态硬盘如果是PCIE协议,那么使用USB3.1接口是不能发挥其性能的,要发挥其性能至少需要 USB3.2甚至更高。

        多个走PICE总线的高速固态硬盘的顺序读写能力是可以接近内存的,但是磁盘阵列多随机读写几乎没有提升,所以随机读写能力,远低于硬盘。

            如raido为例,我们读取一个1G的 文件,两个磁盘同时读,每个读取512G,然后把文件合并起来,就完成了。如果我们要读1000个文件,那么需要每个磁盘读100次,然后再合起来,这里面最大的时间占用在于找文件,和合并文件,几乎没有性能提升。

  • 相关阅读:
    CG_Lession
    linux学习网站大全[转]
    C++ books
    Linux 建议学习路径[转]
    talking C++ STL
    Factory
    计算机图像图形学相关好书推荐
    ASP.NET控件缩写大全
    web开发面试题一
    ASP.Net面试题之二
  • 原文地址:https://www.cnblogs.com/cxygg/p/16389505.html
Copyright © 2020-2023  润新知