大话存储——磁盘原理与技术笔记(一)
大话存储——磁盘原理与技术笔记(一)
1.硬盘的组成
硬盘的组成:盘片、读写头、马达、底座、电路板等。
1.1 盘片
- 要求无尘、表面光滑平整
- 逻辑上被划分为柱面、磁道和扇区
- 磁道是对盘面进行同心圆划分,最外圈为0道,每个盘片两面都可用,每面包括300-1023个磁道,外圈读写快
- 柱面是对多个盘的同位置同心圆的磁道构成的柱体,读写时按照柱面进行,首先读写0磁头面的磁道,满了后移动到同柱面的下一磁道中
- 扇区是对每个磁道进行等距离的划分得到的圆弧,寻址时通过<柱面,磁头,扇区>(CHS)方式。但目前主要使用的是LBA的编址方式,即将整个磁盘视为一条线性磁道,对应关系保存在磁盘控制电路的ROM芯片中
- 扇区编号最简单方法为直接顺序编号,但由于磁盘电路读取一个扇区数据进行处理的过程中,磁盘可能已经旋转进入了下一个扇区的头标,导致要读取就需要再等一圈,因此产生了带交叉因子的编号方式MFM。交叉因子为3:1的编号方式为1,x,x,2,…。磁头扭斜为了解决磁头换道可能延迟到达的问题,相当于是对每个磁道的交叉因子。
1.2 磁头
磁头用以改变磁盘表面的磁性粒子簇达到保存信息的目的,磁头不可接触盘面,需要低空飞行。
1.3 步进电机
可以使磁头进行微米级别的位移。
1.4 其他概念
硬盘控制电路:介于存储介质和主机的接口之间,用以读取和写入数据的电路
磁盘的IO单位:读写是以扇区为最小单位的,有512B和4KB的
2.硬盘相关高层技术
2.1 磁盘中的队列技术
由于不同的指令可能访问的区域涉及到不同的柱面磁道,为了减少磁头的寻道时间引入了排队技术,磁盘控制电路可能会无视顺序而优先访问相同区域的数据(个人理解这可能是和系统共同进行的指令重排优化?)。磁盘控制器(位于主板上)需要配合磁盘控制电路。
2.2 无序传输技术
假如磁头位于数据尾部,采取就近原则能读就读,读取的数据发给控制器,通过DMA放在内存,等旋转到头部再读出剩余部分。
2.3 几种可控磁头扫描方式
(1)FCFS 先来先服务:完全按照IO顺序进行寻道操作
(2)SSTF (Shortest Seek Time First):优先到最近的磁道进行操作,因此特别远的可能会被饿死
(3)SCAN 回旋扫描模式:类似电梯模型,从一端到另一端,无需访问的磁道不停止,必然到达最内/外圈。
(4)C-SCAN 单向扫描模式:仅从内圈向外扫描,到达最外后迅速返回
(5)LOOK 智能监察扫描模式:和SCAN不同之处为无需到达最内外圈,完成两端的IO即可返回
(6)C-LOOK:单向的LOOK
负载不高时SSTF性能最佳,高负载条件SCAN,C-SCAN,C-LOOK
2.4 磁盘缓存
SCSI控制参数
- DPO(Disable Page Out):禁止缓存中的数据页被换出,配置了的数据不会被覆盖
- FUA(Force Unit Access):强制盘片访问,对于写操作,磁盘必须将数据写入盘片才返回成功信号;对于读操作,磁盘收到指令直接读取盘片而不搜索缓存
2.5 影响磁盘性能的因素
- 转速(影响连续IO的首要因素)
- 寻道速度(影响随机IO的首要因素)
- 单碟容量(容量越高,数据密度越大)
- 接口速度(不太重要)
3.硬盘接口技术
3.1 IDE硬盘接口
IDE(Integrated Drive Electronics,电子集成驱动器),本质上将控制电路、盘片和磁头放在了一个容器。价格低,兼容性强。IDE接口也称为PATA接口,Parallel ATA。
共有7个版本的ATA接口:
- IDE
- Fast ATA
- Fast ATA-2
- ATA-33
- ATA-66
- ATA-100
- ATA-133
IDE数据传输模式:
(1)PIO模式(Programming I/O):一种通过CPU执行IO端口指令来进行数据读写的数据交换模式。传输大量数据是会导致CPU的大量占用问题。已淘汰。
(2)DMA模式(Direct Memory Access):直接内存访问,不经过CPU直接从内存存取数据的数据交换模式。CPU向DMA控制器下达指令,让其来处理数据传送,DMA控制器直接将数据复制到内存对应地址,然后反馈信息给CPU。
(3)Ultra DMA:在DMA的基础上增加了CRC技术,保障数据传输安全。
3.2 SATA硬盘接口
SATA的优势:
- 传输速率高:1.0可以达到150MB/s
- 数据可靠性高:可同时对指令和数据进行CRC
- 节省空间:线缆瘦,有利于机箱内部的散热
SATA2.0的新特性:
- 3Gb/s传输速率:等同于300MB/s,但带来的好处不明显,因为硬盘内部的传输速率达不到该接口传输速度,内部更多的时间花在了寻道上,如果配较大容量的缓存可能好处会大一些
- 支持NCQ技术:Native Command Queue,即自身命令队列,一种排队技术
3.3 SCSI硬盘接口
// To Be Continued