硬盘属于I/O设备,目前的硬盘分为两类:

    1.机械式硬盘:IDE,SATA,SAS等磁盘都是机械式的

    2.电子式硬盘:SSD等,或者U盘,SD卡等闪存系列


    磁盘的内部构造到底如何呢?我们来看个图吧:

    等等,我们要先说下我们主要了解哪几个部件和术语,有磁头,盘片,柱面,磁道,扇区,寻道,好了,就这些吧,上图:

        wKiom1QEcXDCpzT2AAIj2mrym7M907.jpg

      这个图真的好大。。。别的不用管,主要看我们的主轴,盘片(磁盘),磁头就行了,一般磁盘内部是有多个盘面的,这些盘面非常的薄,所以俯视图可能看不出来,一个盘片的正反都是可以写数据的,也就是说一个盘片有正反两个盘面。每一个盘面都有一个磁头,负责在盘面上些数据,可能有的人就一脑子问号了,就看见一个磁头啊,哪有那么多?我们俯视图往往造成个错觉,我们来从侧面看一下:


wKiom1QEcuexJp88AALA60QRev8397.jpgwKioL1QEcofjvOKPAAO7LBBsKhE596.jpg


       看到了吧,读写磁头也是分层的,一个盘片,正反两面都有读写磁头,一般磁头离盘面都是微米级的距离,保持不挨上,也不离的太远,通过给磁头加电,来变换盘面上的磁极,正好来对应我们的0和1.

       上面已经知道什么是盘面,磁头了,下面我们说一下磁道,扇区,和柱面:

  我们知道盘面是圆形的,盘面通过某些机械部件可以进行旋转(转速),我们的磁头一般只能左右移动,所以,我们怎么来写数据呢??只能把圆形分成若干个小同心圆了吧:如下图:

        wKiom1QEeWaBHky8AADjOPi8jPM775.jpg


    这些同心圆和同心圆间的空间就是磁道,真实的磁道肯定比这个多的多,这个图只是举例子,通常最外圈的磁道就是0磁道,最外圈的磁道圆周比内圈的长,所以存储的数据要比内圈的多,读写效率也就高于内圈,等等,我们就直接把数据写到这么长的一个圈里面?当然不是,为了提高数据的条理化,我们把每个磁道等距离切割成一个小条带,形成一个一个小的存储空间---扇区,先来看一下图吧:

     wKiom1QEeuCTWyaPAAFFI6TwwfA191.jpg

    个人觉得这个图不符合实际,但便于理解,每一个磁道都有扇区的划分,删除默认大小为512B,目前大部分也可以格式为4K(自行百度),这512B中除了存储数据,还要存储扇区的地址等信息,Ok,还有一个柱面,什么是柱面?

    找了很多图,,唉,还是自己画吧,不过我这画工就将就看吧:


        wKioL1QEfB6AiAu_AAC25fpSS8Y365.jpg

    因为一个盘片有两个盘面,都一样,这里直接拿盘片说,3个盘片的0磁道,我们来垂直看这一个磁道,这就是一个柱面,也是说,柱面是各盘片同一磁道的集合。磁盘写数据的时候,我们会把数据分成几份,分别利用不同的读写头写在不同的盘面,这样,加快了速写的速度,而且我们写数据是按柱面写的,写完一个柱面在写下一个柱面。我们通常的分区,就是按柱面来分区的。

    想一想,因为我们的数据是写在扇区上,而盘片还不停的旋转,那么如果我们要往某一扇区写,但很不幸,扇区转过去了,没写上,怎么办??哈哈,因为盘片不停的转,等扇区转回来在写啦。

    磁盘内部都是真空密封的,防止灰尘进入,灰尘是不是很小?对于磁盘内部来说已经是庞然大物啦~ 下面来说说什么是低级格式化和高级格式化吧。

      低级格式化:磁盘刚出炉,我们的盘面空空荡荡,怎么存数据?所以厂商一般会进行低级格式化,就是在盘面上划分磁道,柱面,扇区,并分配地址等操作。低格肯定会格全盘。


      高级格式化:也就是通常的普通格式化,生成引导信息,分区(建立文件系统),生成FAT表(磁盘内的数据文件和扇区对应的一个表格,在格式化时,为了避免有坏道,会对磁盘进行检测,确认无坏道后,在建立文件系统。


      快速格式化:略过磁盘的检测,直接分区建立文件系统,虽然提升了速度,但丢失了可靠性。(有得有失啊)


      对了,上面提到了地址,我们在来说一下磁盘的是怎么寻址的:

      磁盘分为两种寻址方式:

     1.C/H/S寻址(三维地址模式),用于早期的小容量硬盘。

       C指柱面,H指磁头,S指扇区,所以0/0/5指的就是0 柱面0磁头的第五个扇区,但由于早期限定最大柱面为1024,磁头数为16,扇区为63,如果扇区为512B,那么,容量只能支持528.4MB了。

     

     2.LBA寻址,这种方式就抽象的屏蔽了柱面,磁头等概念,把整个磁盘想象成一个磁道,一条长长的磁道,在这个长长的磁道上被分成若干大小相等的扇区并给上唯一编号,但是我们实际些数据不还是需要确定的地方吗,确定是哪个柱面的哪个磁头,要不我能知道到底往哪写??所以,我们的LBA地址有一个对应关系,这个对应关系表存储在磁盘的ROM中。目前普遍都是LBA寻址。


      最后在说一下影响磁盘内部速度的因素:

    1.转速,我们盘片转动的越快,读写的效率就越高,但这,只是其中一个因素而已。目前主流的有5400转和7200转,服务器上有10K-15K的转速,转速是每分钟转多少。

    2.平均寻道时间:磁头挪到数据所在磁道,并等待存储数据的扇区移动过来至磁头下,开始准备写入的时间,一般磁头在寻道时浪费的时间较长,尤其是频繁的寻道,因为随着数据的使用,一般数据不会连续存放。


    3.单个盘片的容量,容量越大,密度越大,单位时间内提升了些许效率。


    就这些了,在我们的0磁道的0扇区还有个叫做MBR的东西,等到些文件系统的时候在说吧~