操作系统学习笔记(九)---磁盘 & RAID

一、磁盘构造

操作系统学习笔记(九)---磁盘 & RAID            操作系统学习笔记(九)---磁盘 & RAID

磁盘构造:磁盘由盘片(platter)构成。每个盘片有两面或者称为表面(surface),表面覆盖着磁性材料记录。盘片*有一个可以旋转的主轴(spindle),它使得盘片以固定的旋转速率旋转。

每个表面由一组称为磁道(track)的同心圆组成。每个磁道被划分为一组扇区(sector)。每个扇区包含相等数量的数据位(通常是512字节),这些数据编码在扇区的磁性材料上。扇区之间由一些间隙(gap)分隔开,这些间隙中不存储数据位,间隙存储用来标识扇区的格式化位。

柱面(cylinder):柱面是所有盘片表面上到主轴中心的距离相等的磁道的集合。

磁盘用读/写头(read/write head)来读写存储在磁性表面的位,读/写头连接到一个传动臂(actutor arm)一端。通过沿着半径轴前后移动这个传动臂,驱动器可以将读/写头定位在盘面上的任何磁道上。这样的机械运动称为寻道(seek),读/写头垂直排列,一致行动,在任何时刻,所有的读/写头都位于同一个柱面上。

 

磁盘以扇区大小的块来读写数据。对扇区的访问时间(access time)有三个主要的部分:寻道时间(seek time)、旋转时间(rotational latency)和传送时间(transfer time)

寻道时间:为了读取某个目标扇区的内容,传动臂首先将读/写头定位到包含目标扇区的磁道上。移动传动臂所需要的时间称为寻道时间。操作系统学习笔记(九)---磁盘 & RAID依赖于读/写头以前的位置和传动臂在盘面上移动的速度。现代驱动器中平均寻道时间操作系统学习笔记(九)---磁盘 & RAID是通过几千次对随机扇区的寻道求平均值来测量的,通常为3~9ms。

旋转时间:一旦读/写头定位到了期望的磁道,驱动器等待目标扇区的第一个位旋转到读/写头下。这个步骤的性能依赖于读/写头到达目标扇区时盘面的位置和磁盘的旋转速度。在最坏的情况下,读/写头刚刚错过了目标扇区,必须等待磁盘转一整圈。因此,最大旋转延迟(以秒为单位)是

操作系统学习笔记(九)---磁盘 & RAID

平均旋转时间就是max的一半

传送时间:当目标扇区的第一个位位于读/写头下时,驱动器就可以开始读或者写该扇区的内容了。一个扇区的传送时间依赖于旋转速度和每条磁道的扇区数目。因此,可以粗略地估计一个扇区以秒为单位的平均传送时间如下

操作系统学习笔记(九)---磁盘 & RAID

该磁道整个扇区全部传送完就是转一圈的时间,所以传送1个扇区所需的时间就估计为转1圈的时间除以扇区数。

可以得出如下结论:

访问一个磁盘扇区中512字节的时间主要是寻道时间和旋转延迟。访问扇区的第一个字节用了很长时间,但是访问剩下的字节几乎不用时间。

 

随机访问和顺序访问?

  • 顺序访问的数据是连续的。硬盘的磁头是按一定的顺序访问磁片,磁头不做频繁的寻道,这样带来的结果是速度很快。因为寻道时间是影响磁盘读写速度的主要原因。在平常的应用中顺序访问的应用很少。大文件的连续备份,是顺序读写的。dd就是典型的顺序读写,
  • 随机访问主要是磁头在做频繁的移动,原因是数据在磁盘的不连续性,这和数据存放到磁盘的过程有关系,随机访问的速度要比顺序访问慢很多。原因也是因为磁头频繁的寻道,定位,磁头的移动消耗掉很多时间。大部分的应用在磁盘上的读写是随机的。
  • 因为在实际应用中,以LINUX为例子,在写数据的时候,OS会预读8个block,也就是你刚开始写文件的时候OS会努力让数据在磁盘上是连续的,但在宏观上是做不到的。我们假如磁盘是新的,写300K的一个文件。这时候是连续的。写完后,其他文件又往硬盘里写,又是连续的。过一段时间,已经写了很多文件,当然文件会经常被修改的。我们可以看到,如果修改一个文件,会发现被修改文件附近的block已经被其他文件占用了。磁头只好把变化的block写在磁盘的其他位置,过一段时间。磁盘上的文件就会大部分不是连续的,分散在磁盘的各个位置。当你的程序读文件的时候,对硬盘来说,磁头就是在不停的寻道,把分散在磁盘不同位置的数据找出来,看上去没有丝毫的规律。当然磁头移动到什么位置是根据INODE来确定的。这时候程序对磁盘的访问就是随机的。

例题:

操作系统学习笔记(九)---磁盘 & RAID

假设1次随机读4KB,顺序读100MB(这个主要影响传输时间,如果只给出MAX Transfer就只用Max Transfer?下面的答案进行了舍入)

操作系统学习笔记(九)---磁盘 & RAID

操作系统学习笔记(九)---磁盘 & RAID

操作系统学习笔记(九)---磁盘 & RAID表示磁盘的I/O速率,一般用这个来衡量,计算方法就是一次传输的字节大小除以时间,一般是MB/s

上图的 Sequential的计算过程如下:下面是平均寻道时间+平均旋转时间+传输时间

操作系统学习笔记(九)---磁盘 & RAID

 

二、磁盘调度

操作系统学习笔记(九)---磁盘 & RAID

FCFS:先来先服务,这种算法本身比较公平,但它通常不提供最快的服务

SSTF:最短寻道时间优先算法,该算法优先选择距当前磁头位置有最短寻道时间的请求来处理。该算法可能引起某些请求的饥饿。

SCAN:扫描算法/电梯算法,磁头从磁盘的一端向另一端移动,处理沿途的经过的柱面上的请求,当到达另一端时,磁头改变移动方向,继续处理。该算法需要知道磁头的当前位置及移动方向。各请求等待时间往往不平衡。

C-SCAN:(circular SCAN)SCAN的变种,主要提供一个更为均匀的等待时间。与SCAN的不同之处在于到达另一端时会返回磁盘的开始,返回时并不处理请求。

LOOK:基于SCAN,通常磁头不会移动到另一端的末尾,而是移动到一个方向上最远的请求为止,然后就回到0柱面。(图中没回到0?)

 

附:平均寻道时间的计算

操作系统学习笔记(九)---磁盘 & RAID

这里并不是按“时间”来算的而是按距离

假设有磁道0-N,磁道x∈[0,N] 磁道y∈[0,N],则x寻道到y共有N^2种可能

37.4的公式表示的是这所有可能的寻道的总距离

37.5是将37.4用积分形式表示

37.6是去掉绝对值先计算y的积分

37.7是计算x的积分

37.8得到的是这N^2种可能的寻道的总距离,所以每次寻道的平均距离是1/3N,即最大寻道距离的1/3;所以我们说平均寻道时间是最大寻道时间的1/3

三、RAID Structure

参考:https://www.cnblogs.com/oneasdf/p/9367152.html

RAID ( Redundant Array of Independent Disks )即独立磁盘冗余阵列,通常简称为磁盘阵列

RAID 中主要有三个关键概念和技术:镜像( Mirroring )、数据条带( Data Stripping )和数据校验( Data parity )

镜像,将数据复制到多个磁盘,一方面可以提高可靠性,另一方面可并发从两个或多个副本读取数据来提高读性能。显而易见,镜像的写性能要稍低, 确保数据正确地写到多个磁盘需要更多的时间消耗。

数据条带,将数据分片保存在多个不同的磁盘,多个数据分片共同组成一个完整数据副本,这与镜像的多个副本是不同的,它通常用于性能考虑。数据条带具有更高的并发粒度,当访问数据时,可以同时对位于不同磁盘上数据进行读写操作, 从而获得非常可观的 I/O 性能提升 。

数据校验,利用冗余数据进行数据错误检测和修复,冗余数据通常采用海明码、异或操作等算法来计算获得。利用校验功能,可以很大程度上提高磁盘阵列的可靠性、鲁棒性和容错能力。不过,数据校验需要从多处读取数据并进行计算和对比,会影响系统性能。

主要优势:大容量、高性能、可靠性、可管理性

各level RAID性能评估

衡量标准:

1.容量,N个磁盘有多少可能容量

2.可靠性,可以容许多少个磁盘发生错误

3.I/O性能(吞吐量):很大程序上依赖于workload(顺序/随机)

下面的R S表示1个单独的磁盘1次随机读写或者顺序读写用时(积越小性能越差)

操作系统学习笔记(九)---磁盘 & RAID

 

操作系统学习笔记(九)---磁盘 & RAID

RAID0 具有低成本、高读写性能、 100% 的高存储空间利用率等优点,但是它不提供数据冗余保护,一旦数据损坏,将无法恢复。 因此, RAID0 一般适用于对性能要求严格但对数据安全性和可靠性不高的应用,如视频、音频存储、临时数据缓存空间等。

操作系统学习笔记(九)---磁盘 & RAID

RAID1 称为镜像,它将数据完全一致地分别写到工作磁盘和镜像磁盘,它的磁盘空间利用率为 50% 。执行写操作要往1个磁盘及其镜像同时写。RAID1 提供了最佳的数据保护,一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,不会影响用户工作.

操作系统学习笔记(九)---磁盘 & RAID

按照块的方式来组织数据,写操作只涉及当前数据盘和校验盘两个盘。RAID4 在不同磁盘上的同级数据块同样使用 XOR 校验,结果存储在校验盘中。写入数据时,RAID4 按这种方式把各磁盘上的同级数据的校验值写入校验盘,读取时进行即时校验。因此,当某块磁盘的数据块损坏,RAID4可以通过校验值以及其他磁盘上的同级数据块进行数据重建。

(RAID3是按位来检验的)

RAID4 提供了 非常好的读性能,但单一的校验盘往往成为系统性能的瓶颈。对于写操作, RAID4 只能一个磁盘一个磁盘地写,并且还要写入校验数据,因此写性能比较差。而且随着成员磁盘数量的增加,校验盘的系统瓶颈将更加突出。正是如上这些限制和不足, RAID4 在实际应用中很少见,主流存储产品也很少使用 RAID4 保护。

操作系统学习笔记(九)---磁盘 & RAID

RAID 5磁盘上同时存储数据和校验数据,数据块和对应的校验信息存保存在不同的磁盘上,当一个数据盘损坏时,系统可以根据同一条带的其他数据块和对应的校验数据来重建损坏的数据。与其他 RAID 等级一样,重建数据时,RAID5 的性能会受到较大的影响。

分为“对称”、“不对称”标识数据(也就是图中的 P0、P1、P2...)的分布方式,“不对称”方式都是直接将数据按照磁盘的数据直接排下来的,而“对称”方式则将每个 stripe 中的第一个数据放在校验数据的后面,然后往后排列,需要时再绕回第一个磁盘,这样“对称”的数据排列方式就能始终按照磁盘的顺序依次下来。

操作系统学习笔记(九)---磁盘 & RAID

表格是“对称”的RAID5(每行第1个数据在校验数据后面)

RAID5 兼顾存储性能、数据安全和存储成本等各方面因素,它可以理解为 RAID0 和 RAID1 的折中方案,是目前综合性能最佳的数据保护解决方案。