磁盘通过磁头对盘片上的磁介质进行感应与转换,从而完成数据读写。写数据时,磁盘的写磁头将电信号转化成磁信号,将盘面上的磁介质颗粒去磁化,让其按照一定的规律排列。读数据时,磁盘的读磁头通过感应磁场的变化,将磁信号转化成电信号,从而识别出数据。
在磁盘工作时,盘片高速旋转产生的升力使磁头悬浮在盘片上方。磁头的核心元件是读磁头和写磁头,读磁头是一种对磁场变化很敏感的传感器,写磁头是一个缠绕在磁芯上的线圈,通过电流改变磁颗粒的磁化方向。具体而言,在写数据时,“0”或“1”数据流以脉冲电流形式通入写磁头线圈,使磁头下方盘片上的磁性介质层的磁化方向发生改变,实现数据写入,即电磁转换;在读数据时,读磁头感应旋转的盘片上方磁场的变化,输出变化的电压信号,实现数据读取,即磁电转换。
磁盘的读性能与磁盘内部构造密不可分,主要的访问延迟来自磁盘的机械部件。图2.5展示了磁盘的结构。磁盘通过寻道(Seek)和旋转(Rotation)两个机械操作以扇区(Sector)为粒度读数据。这两个机械操作可以从磁盘内部构造的两部分来理解,一部分是盘片部分,另一部分是磁头部分。
图2.5 磁盘的结构
在盘片部分,多个盘片(Platter)平行地围绕转轴(Spindle)旋转。转轴旋转带动盘片旋转,被称为旋转(Rotation)操作。每个盘片的正反两面,被称为盘面(Surface),每个盘面上附着磁性介质,用于记录数据。盘面被划分为若干个同心圆,每个同心圆被称为磁道(Track)。磁道被切分为固定大小的扇区,即磁盘的最小访问单位。
在磁头部分,每个盘面对应一个磁头(Head),磁头对其对应的盘面进行读写。不同盘面上的磁头组成一个磁头组。每个磁头由对应的磁臂(Arm)进行驱动,在盘面上不同的磁道上移动,即寻道操作。例如,目前的磁盘中磁头的飞行高度低于10 nm,飞行速度接近200 km/h,寻道精度为50 nm左右,寻道速度为毫秒级。
除了旋转操作和寻道操作之外,磁盘的访问延迟还包括数据传输的时间和控制器处理时间。因而,磁盘访问延迟可以通过式(2.1)计算。
T disk service time = T seek time + T rotation time + T data transfer time + T controller time (2.1)
其中, T disk service time 为预计的数据访问时间, T seek time 为寻道时间, T rotation time 为旋转时间, T data transfer time 为数据传输时间, T controller time 为控制器处理时间。
寻道时间是磁头定位到特定磁道的时间。寻道时间有不同的表示方式,包括最大寻道时间( T full stroke time )、平均寻道时间( T average time )、相邻磁道寻道时间( T track-to-track time )等。最大寻道时间是指磁头从盘面上的一侧磁道移动到另一侧磁道的时间,是盘面上径向移动最大距离所需的时间。平均寻道时间是指磁头在盘面上不同磁道之间移动的平均时间。相邻磁道寻道时间是指磁头在相邻两个磁道上移动的时间。
旋转时间是盘片旋转到磁头定位扇区的时间。旋转时间由转轴的转速决定。通过磁盘规格文档中给出的转速可以计算出旋转时间。磁盘规格中的转速通常有5400 r/min、7200 r/min、15000 r/min,转速在业界常用rpm(rounds per minute,每分钟转的圈数)来表示。 T rotation time 为旋转半圈的时间,计算公式为 T rotation time = 0.5 / (转速/60000),单位为ms。例如,5400 r/min的磁盘 T rotation time 为5.6 ms,7200 r/min的磁盘 T rotation time 为4.2 ms。
数据传输时间是数据从磁介质传输到主机的时间。数据传输时间包括内部传输时间和外部传输时间。内部传输时间与磁盘转速相关,可通过以下公式进行估算:数据传输量/(单磁道的存储容量×转速)。外部传输时间与磁盘接口相关,可以通过以下公式进行估算:数据传输量 / 接口带宽。例如,SATA 2.0接口理论带宽为300 MB/s,传输1 MB数据的外部传输时间估算为3.33 ms。
控制器处理时间主要是指数据在电子部件中的处理延迟。与机械部件的延迟相比,这部分延迟相对较小,通常可以忽略。
在磁盘的处理过程中,磁盘的读写请求延迟也与磁盘负载有关。磁盘读写请求延迟与磁盘负载的关系为 T avg. response time = T disk service time / (1 – 磁盘利用率)。磁盘的利用率是当前读写请求的数量与磁盘最大吞吐率的比值。通常,在磁盘利用率达到70%之后,磁盘读写请求的延迟会出现比较明显的增大。磁盘延迟与磁盘负载的关系如图2.6所示。
从磁盘访问延迟的计算公式中可以发现磁盘的性能与盘片的转速、磁头的寻道速度和数据的传输量相关度较高。其中,有两个比较重要的特性。
数据访问的连续性(局部性)对磁盘性能的影响 :在访问数据时,磁盘需要在寻道和旋转后定位到相应的数据块进行读写。如果每次访问的地址比较随机,那么每次访问均需要进行寻道和旋转操作,而实际用于磁头与盘片间数据读写的时间较少,也就是数据有效读写时间较少。因而,数据访问越连续(局部性好),磁盘越能发挥性能优势。
图2.6 磁盘延迟与磁盘负载的关系 [1]
数据访问块的大小对磁盘性能的影响 :在一次数据访问中,寻道时间、旋转时间和控制器处理时间相对固定,而传输时间跟数据量的多少相关。当数据量较大时,传输时间在总时间中占比较高;当数据量较小时,传输时间在总时间中占比较低,大部分时间花费在寻道、旋转等操作,数据访问有效带宽较低。因而,数据访问块越大,磁盘越能发挥性能优势。
这两个特性对存储软件的设计比较关键。例如,在文件系统的设计中,常用技术包括增加数据访问块的大小、改善数据访问的局部性,以及相应的预取、缓存等,均与磁盘的特性密不可分。