磁盘分为机械硬盘和固态硬盘;块设备:block ,存取单位“块”,磁盘;字符设备:char ,存取单位“字符”,键盘
1、机械硬盘(HDD )
即是传统普通硬盘,主要由:盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成。
机械硬盘中所有的盘片都装在一个旋转轴上,每张盘片之间是平行的,在每个盘片的存储面上有一个磁头,磁头与盘片之间的距离比头发丝的直径还小,所有的磁头联在一个磁头控制器上,由磁头控制器负责各个磁头的运动。
磁头可沿盘片的半径方向运动,加上盘片每分钟几千转的高速旋转,磁头就可以定位在盘片的指定位置上进行数据的读写操作。数据通过磁头由电磁流来改变极性方式被电磁流写到磁盘上,也可以通过相反方式读取。硬盘为精密设备,进入硬盘的空气必须过滤。
2、固态硬盘(SSD )
用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH 芯片、DRAM 芯片)组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上也与普通硬盘一致。
机械硬盘与固态硬盘的区别?
1、相较于HDD ,SSD 在防震抗摔、传输速率、功耗、重量、噪音上有明显优势
2、SSD 传输速率性能是HDD 的2倍
3、相较于SSD ,HDD 在价格、容量、使用寿命上占有绝对优势硬盘有价,数据无价,目前SSD 不能完全取代HHD
磁盘即是硬盘,由许多块盘片(盘面)组成,每个盘片的上下两面都涂有磁粉,磁化后可以存储信息数据。每个盘片的上下两面都安装有磁头,磁头被安装在梳状的可以做直线运动的小车上以便寻道,每个盘面被格式化成有若干条磁道,这些磁道是同心圆。并规定最外面的磁道是0磁道,次外层是1磁道,每个磁道又被分成若干个扇区,并被排号,扇区是CPU对磁盘I/O操作时能够读取和写入的最小单位,通常,一个扇区可以储存512B的二进制信息位,每个盘面上的同号磁道组成一个柱面(磁柱)。也就是说每个盘面的0号磁道组成0号柱面,所有的1号磁道组成1号柱面,等等。
在Linux操作系统中,内核采用的方法是把物理磁盘抽像为逻辑磁盘管理文件系统,所谓逻辑磁盘是把物理磁盘按照磁头号,磁道号,扇区号,以及盘面号划分成磁盘块的线性数组,也叫线性序列,
如:把1号盘面的0号磁道的0号扇区定义为0号磁盘块,一般扇区数是2的整次幂。显然,当把实际的磁盘看成是磁盘块的线性数组时,就把物理磁盘存储数据的实际地址(即磁道号,扇区号以及盘面号)隐藏起来,因此呈现在系统高层面前的已经不是物理磁盘,而是一个经过加以后的逻辑磁盘。逻辑磁盘比物理硬盘的结构要简单的多,当系统执行磁盘I/O操作时,系统给出试图访问的逻辑磁盘块号,由设备驱动程序根据该块号计算出物理磁盘的磁道号,磁头号以及扇区号,然后启动硬盘把磁头向前或向后移动到相应的柱面,这便是所谓的寻道。寻道是磁盘I/O操作中最耗时的一个操作。一量磁头找到磁道,并且相应的扇区转到磁头下面,数据传输就开始。
而文件是一个具有符号的一组相关联元素的有序序列,文件可以包含范围很广的内容。系统和用户都可以将具有一定独立功能的程序模块,一组数据或一组文字命名为一个文件。在计算机里看见的东西都叫文件,文件是以单个名称在计算朵上存储的信息集合,文件可以是文本文档,图片,程序等,文件通常有三个字母的扩展名,用于指示文件类型(windows下)。
文件系统指文件存在的物理空间。在linux系统中,每个分区是一个文件系统,都有自己的目录层次。linux的最重要的特征之一就是支持多种文件系统,这样它更加灵活,并可以和许多其他操作系统共存。由于系统已将linux文件系统的所有细节进行了转换,所以linux核心的其它部分及系统中运行的程序将年到统一的文件系统。
通过fdisk命令查看当前系统使用的磁盘的这些物理息。
[root@localhost ~]# fdisk -l
对于管理磁盘,分磁盘面、磁头、磁道、柱面和扇区
磁盘面:磁盘是由一叠磁盘面组成,见下左图。
磁头(Heads):每个磁头对应一个磁盘面,负责该磁盘面上的数据的读写。
磁道(Track):每个盘面会围绕圆心划分出多个同心圆圈,每个圆圈叫做一个磁道。
柱面(Cylinders):所有盘片上的同一位置的磁道组成的立体叫做一个柱面。
扇区(Sector):以磁道为单位管理磁盘仍然太大,所以计算机前辈们又把每个磁道划分出了多个扇区,见下图
硬盘结构
硬盘的内部是金属盘片,将圆形的盘片划分成若干个扇形区域,这就是扇区。若干个扇区就组成整个盘片。为什么要分扇区?是逻辑化数据的需要,能更好的管理硬盘空间。 以盘片中心为圆心,把盘片分成若干个同心圆,那每一个划分圆的“线条”,就称为磁道。
硬盘内的盘片有两个面,都可以储存数据,而硬盘内的盘片往往不止一张,常见的有两张,那么,两张盘片中相同位置的磁道,就组成一个“柱面”,盘片中有多少个磁道,就有多少个柱面。盘片两面都能存数据,要读取它,必须有磁头,所以,每一个面,都有一个磁头,一张盘片就有两个磁头。
硬盘的存储容量=磁头数×磁道(柱面)数×每道扇区数×每道扇区字节数。
磁道从外向内自0开始顺序进行编号,各个磁道上的扇区数是在硬盘格式化时确定的。
文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。
比较古老的CHS (Cylinder/Head/Sector :磁头(Heads)、柱面(Cylinder)、扇区(Sector))结构体系. 因为很久以前,在硬盘的容量还非常小的时候,人们采用与软盘类似的结构生产硬盘。也就是硬盘盘片的每一条磁道都具有相同的扇区数,由此产生了所谓的3D参数,即是磁头数(Heads)、柱面数(Cylinders)、扇区数(Sectors)以及相应的3D寻址方式。
以前老式的磁盘,每个磁道的扇区都一样,这样外磁道整个弧长要大于内部的扇区弧长,因而其磁记录密度就要比内部磁道的密度要小。最终,导致了外部磁道的空间浪费。
解决CHS磁盘浪费空间的方案有两种:
1、尽量减少单个扇区的宽度,从而让每个扇区面积尽量一样
2、改变磁道中的扇区数量
Zoned-bit recording(ZBR 区位记录)是一种物理优化硬盘存储空间的方法,此方法通过将更多的扇区放到磁盘的外部磁道而获取更多存储空间。
ZBR磁盘扇区结构示意图
使用ZBR 区位记录法磁盘的特点:
读外圈的数据快,读内圈的数据慢,所以测试硬盘经常看到读取速度越来越慢的曲线图就很正常了。
第一步,首先是磁头径向移动来寻找数据所在的磁道。这部分时间叫寻道时间。
第二步,找到目标磁道后通过盘面旋转,将目标扇区移动到磁头的正下方。
第三步,向目标扇区读取或者写入数据。到此为止,一次磁盘IO完成。
故:单次磁盘IO时间 = 寻道时间 + 旋转延迟 + 存取时间。
对于旋转延时,现在主流服务器上经常使用的是1W转/分钟的磁盘,每旋转一周所需的时间为60*1000/10000=6ms,故其旋转延迟为(0-6ms)。对于存取时间,一般耗时较短,为零点几ms。对于寻道时间,现代磁盘大概在3-15ms,其中寻道时间大小主要受磁头当前所在位置和目标磁道所在位置相对距离的影响。
操作系统通过按磁道对应的柱面划分分区,来降低磁盘IO所花费的的寻道时间 ,进而提高磁盘的读写性能。