3.7磁盘存储器

简介: 3.7磁盘存储器

2023年1月29日 上午 11:29 36分钟57秒

关键词

磁盘扇区存储读写词头磁道二进制硬盘磁头主机操作系统磁盘阵列冗余信息性能指标磁盘驱动器延迟时间并行数据冗余数据

正文

一、引子

这一小节当中,我们主要会学习 外存储器,特别是磁盘存储器,是比较高频的考点,这个部分和操作系统第四章的后半部分也有比较多的重合,所以大家可以结合操作系统两边一起来学习。

只不过这两门课的考察重点不太一样。 计组主要考察的是硬件特性,而操作系统主要考察的是对磁盘的一个管理,比如调度算法之类的。

二、磁表面存储器

(1)介绍

首先我们来看一下磁盘这种外存储器,它的读写二进制比特位的原理。
我们现在电脑里边的磁盘,也就是机械硬盘,还有我们小时候听歌用的磁带,这些存储器都属于磁表面的存储器

大家可以想象一下,假设这个是你的小时候听歌用的磁带,厂家会在磁带上涂上一层磁性的材质,大家可以理解为磁粉。

大家回忆一下小时候你用的复读机、录音机,是不是会有一个马达带动着你的磁带,这个磁带往前移动。
在你的磁带上方会有一个读写磁头,它其实是一个电磁铁。这是我们高中学过的东西,不知道大家对高中物理还有没有印象。
如果我们给铁芯上线圈加的电流方向是不一样的,就会导致电磁铁的左右的两头,它的南北极磁性会出现改变。如下:

因此,当我们给写线圈加上不同方向的电流的时候,铁芯上所带的南北极的磁性就会影响磁性材质的涂层,会导致图层上面的这些磁性材质产生一些移动和变化。

比如左边这种左南右北,我们可以把它规定为二进制的 0 。右边这种左北右南,我们可以把它规定为二进制的1。

  • 写入0和1

在磁带移动的过程当中,我们只需要给写线圈加上两种方向的电流,就可以使得磁涂层呈现出两种不一样的状态。用这样的方式来写入二进制的 0 或者1。这就是磁表面存储器存储 0 和 1 的原理。

  • 读取0和1

读取 0 和 1 的原理是不是也是类似的?同样还是高中物理知识,当磁带移动的时候,这些不同方向的磁场会影响铁芯,使得读线圈读出两个方向的电流。

大家可以回忆一下切割磁感线的原理,磁感线的切割方向不同,就会导致读线圈这两端检测出的高低电平信号或者电流的方向也会产生不一样。因此当磁带划过磁头下方的时候,就可以让读线圈读出 0 和 1 这两种不同的二进制状态。 当然了,这些细节的物理原理不可能考,大家只需要知道磁带划过磁头下方的时候,磁头就可以一比特一比特地往里边写数据,每次只能写 1 比特。
读数据的时候也是类似的,磁带划过磁头的下方,通过读线圈接的电路可以 一比特一比特地读出数据。
因此这种磁表面存储器,我们读取或者写入数据的时候,每次只能读和写 1 比特。

这就意味着什么?如果主机给硬盘,给磁盘丢来的是一个字节的数据, 8 个比特并行地给它传过来,是不是意味着需要搞一个电路,把这 8 比特的并行数据转换成串行方式,一比特一比特地进行写入。
读出的时候也是一样。我们每次只能读 1 比特,就需要用一个专门的串行和并行转换的电路,把多个比特的数据组织成8比特为一组,并行地传给主机。
所以这是我们需要注意的第一个特性。磁表面存储器每次读和写都是以 1 比特为单位的,并且基于它的读写原理,可以知道,读和写这两个动作是不可以同时进行的。

(2)优缺点

1.优点

我们结合平时的生活经验,应该可以感受到磁表面存储器有这样的一些优点。
<1> 首先,存储容量大,位价格低。大家买硬盘的时候,相同价格的情况下,机械硬盘它的存储容量肯定要比固态硬盘更大。
<2> 第二点,记录介质可以重复使用。很好理解,我们的硬盘并不是写一次就不能再写了,可以重复地写,重复地读。
<3> 第三点,记录的信息可以长期保存,不丢失,甚至可以脱机存档。这也是我们有感受的,移动硬盘不就是这样吗?
<4> 第四点,非破坏性突出。我们读出这样一比特的数据,并不会影响磁性材质上面这1比特的磁场的信息,比特信息不需要再生。

2.缺点

相应的缺点也是有感受的。
<1> 存取速度慢。机械硬盘的电脑通常要比固态硬盘的电脑要慢得多。
<2> 第二点,机械结构复杂,我们通过接下来的学习会有感受。
<3> 第三点,对工作环境的要求高。因为我们这些磁性材质其实很容易受到一些强磁场的干扰。所以你的磁盘如果放在强磁场的那种环境下,有可能你磁盘里的信息就都丢失了。

外存储器既可以作为输入设备,也可以作为输出设备。

三、磁盘结构

现在我们已经认识了磁盘最底层的工作原理。

(1)组成

接下我们来看一下磁盘设备的组成。来看这样的两个图:

左边这个图是硬盘拆开以后,它里边的一个样子。可以看到它中间这儿有一个轴,下面会有一个马达,带动着你的磁盘往某一个方向旋转。

在驱动轴上面会有很多个盘片,在每一个盘片的表层就会涂上我们刚才介绍的磁性材质。
这些磁性材质是怎么涂的?其实是一圈一圈地涂。如下:

所以当我们想要读取某一圈的磁性材质里边的数据的时候,就需要移动磁头臂,把它移动到对应的那一圈磁性材质上。如下:

刚才我们说过,驱动轴会带动盘片一直旋转。盘片旋转就会使得这一圈的磁性材质从磁头臂的下方划过。磁头臂的头头上会有一个读写词头,也就是我们用来读或者写二进制的 0 和1。
这是磁盘的其中一面,背面可以看到会有一个电路板,这电路板其实就是磁盘的控制器电子部件。如下:

我们可以把正面部分称为机械部分,背面的电路板把它称为电子部分。通过磁盘控制器,通过这电子部分才可以和主机进行数据的交换。

(2)结构细化

接下来我们把磁盘的结构细化一下。

1.存储区域

首先来看一下最重要的存储数据的部分。

  • 磁头数

结合刚才那个图可以看到,每一个磁盘的内部其实有可能会有多个盘片,每个盘片的表面会被涂满磁性材质。
为了读取每一个记录面,就是每一个盘面的数据,会给每个盘面设置一个,给他弄一个读写的磁头。所以读写磁头的数量和盘面的数量(记录面的数量)是相同的,一个记录面对应一个磁头

  • 柱面数

在这些盘面上涂磁性材料的方式是一圈一圈地涂的,而不是一整块全部都涂满。

每一圈的磁性材料,就把它称为一条磁道。
所以每一个盘面上都会有若干个磁道。这儿的绿色的圈指的就是一个一个的磁道。
由于磁盘内部会有多个盘片,像这个图里边有 4 个盘片,每个盘片都是同样得被划分为了多个磁道。 对于不同的盘面上相对位置相同的磁道,把它称为一个柱面
这个术语还是很形象的对吧?因为所有的磁盘,比如最外圈的磁道,看起来不就是一个柱体吗?它们的对应位置都是相同的,垂直着来看,好像形成了一个圆柱一样。

所以每一个盘面上相对位置相同的这些磁道组成了一个柱面。
显然,一个盘面上有多少条磁道,就应该有多少个柱面

  • 扇区数

    接下来我们还会给每一个盘面划分为多个扇区,一个扇形的区域。

进行这样的划分之后,每一个磁道就会被划分为多个扇区。

需要注意的是,主机每一次对磁盘进行读或者写操作,都是以扇区为单位的。
比如这一次我要读取一个扇区,我可以读取这条磁道的这一段的位置,要让这小段划过磁头的下方。

这就是对存储区域的划分。
一个磁盘内部可能会有很多个盘面,每一个盘面会对应一个读写磁头,这个读写磁头是可以移动的,往里或者往外移动,把它移动到对应的一个位置。
对于每一个盘面来说,我们又会在上面涂上很多圈的磁性材质,每一圈的磁性材质就是一个磁道。
另外,为了方便主机对磁盘数据的读写,因此我们也需要把磁道划分成一个一个更小的扇区,以扇区为单位对磁盘进行读或者写操作。 另一个方面,由于有多个盘面,因此所有的这些盘面相对位置相同的磁道组成了一个柱面。
因此,当我们说柱面号的时候,其实就是在指明某一条磁道。比如最里边柱面,我们把编号为0,再往外编号为1,再往外编号为2。

我们是不是就可以根据柱面号来确定一个磁道的位置?也就是把读写磁头移动到我们想要读取的柱面号所对应的位置。

2.磁盘存储器


为了让读写磁头能够往里或者往外移动,同时也为了让磁盘能够转起来,因此我们一个磁盘里边需要有一些机械部件,叫做磁盘驱动器。
也就是我们刚才看到的这些东西。

磁盘驱动器能够移动磁头,能够让盘面转起来。

除了磁盘驱动器之外,还需要有磁盘控制器
磁盘控制器本质上也属于一种 IO 接口,一种 IO 控制器。
它用于实现磁盘和主机之间的一个数据的交互。对于磁盘来说,有这样的一些标准,IDE 其实就是ATA,SATA 就是串行的ATA。现在比较常用的还是SATA。

另一点值得一提的是,在一个磁盘的盘片上,我们其实可以在它的正面和反面都涂上一圈一圈的磁性材质。

因此实际我们使用的硬盘通常是这样的一个结构,就是一个词头臂,它的头头这儿其实会有上面和下面两个读写磁头。

可以看到最上面这一侧并没有读写磁头,因为如果再制造一个这种单向的读写磁头,可能成本会比较高,不太划算。因此最上面这一侧没有读写磁头。如下:

这就是磁盘的基本组成,分为磁盘驱动器,就是机械部分,还有磁盘的控制器。
我们还需要知道在磁盘的各个盘面上是如何划分这些磁道,如何划分扇区的。

四、磁盘性能指标

对于一个磁盘来说,有这样的一些很重要的性能指标

(1)磁盘容量


首先磁盘的容量,比如我们买移动硬盘的时候,肯定都会关注到它的容量是多少,可以存放多少个字节。
需要注意,磁盘容量会有非格式化和格式化这样的两种区分。
<1> 所谓非格式化指的就是你的磁盘在物理上来看,总共可以存储到二进制比特位的一个上限。
<2> 而格式化的容量指的就是,比如你的磁盘,它某些扇区有可能会损坏,为了防止个别扇区的损坏,导致整个磁盘无法正常工作,因此很多厂商它生产的磁盘应该是需要进行格式化的。比如可以留下某一些备用的扇区作为顶替使用,如果扇区 a 损坏了,就会用一个备份的扇区 b 来进行顶替。 可以看到,对磁盘进行格式化之后,其实会有某些部分的容量被用作其他的用途。实际可以使用的磁盘容量就会变少。因此,对于一块磁盘来说,格式化的容量要比非格式化的容量要更小

(2)记录密度


第二个性能指标叫记录密度,又可以进一步的划分为道密度、位密度以及面密度。
结合图会比较好理解。
<1> 所谓的道密度,指的就是沿磁盘的半径方向上单位长度上的磁道数,反映了磁道的密度。

比如某一个磁盘,它的倒密度是 60 道每厘米。这就意味着在这个磁盘上,半径方向上 1 厘米的区间内,总共有六十个磁道。

所以只要知道磁盘的道密度,并且能够知道这一段的总长,就可以算出这个磁盘总体有多少个磁道。

<2> 位密度指的是在一条磁道上,也就是一圈。这样的一条磁道上,单位长度上可以记录的二进制代码的位数。
比如有的题目可能会告诉你,最外圈的磁道,它的位密度是 600 个比特每厘米。

这就意味着最外圈的磁道上,每一厘米的磁道可以存储 600 个比特的信息。
因此,如果告诉你位密度,并且能够算出来整个磁道的长度,那就可以知道每一条磁道可以存放多少个比特的数据。 另外,如果题目给的条件能够让你算出这个磁道一个扇区的长度,那么就可以算出一个扇区可以存储多少个比特的数据。
需要补充的是,磁盘上每一个扇区所能存储的二进制数据都是相同的,大小都是相同的。
对于最外侧的磁道,它的一个扇区,比如可以存 n 个比特。最内侧的词道,它的扇区虽然看起来更短,然而它同样也是可以存储 n 个比特。

因此,越靠近内侧的磁道,它的位密度会越大,越靠近外侧的磁道,位密度会越小。

所以一个磁盘,它的存储性能很多时候会受到最内侧的磁道的制约。
因为这么短的一小个扇区内,我们可以存的二进制比特数肯定是有一个上限的,越靠近外侧的磁道,制造的工艺肯定会更简单。因此,最内侧的磁道,它的位密度很大程度上会影响到我们磁盘的整体容量。

<3> 最后面密度就是位密度与道密度的乘积
结合图示,相信这几个指标并不难理解。

(3)平均存取时间

第三个,也是考试当中最常考的一个性能指标的计算,叫做平均的存取时间。

显然,我们应该先弄清楚要存或者要取一个扇区的数据需要经过哪些步骤。
首先,刚才我们说过,磁盘会有一个马达,带动着它进行爱的魔力转圈圈的一个动作。
每一次读或者写的单位是以扇区为单位的,某一个磁道上的特定的扇区。
假设现在我们要读或者要写的就是红色的小的扇区。

对它进行读写,是不是需要让扇区划过磁头下方。
因此我们需要让磁头往里边移动,移动到我们想要读的扇区所在的磁道,移到这个位置。如下:

移动磁头的这部分时间,我们把它称为寻道时间,就是寻找我们要读取的那个磁道的位置。
通常来说,寻道时间花销是比较长的,因为这是一个机械移动的过程。词头臂 它的移动速度不会很快。
现在我们已经定位到了我们想要读的磁道,接下来需要让磁盘继续旋转,让我们想要读的扇区先滑到磁头的位置。
所以接下来经过旋转,把扇区划到磁头臂的下方。旋转的过程所需要的时间叫做旋转延迟时间。如下:

现在扇区和磁头已经在这个地方相遇了,我们还需要让磁盘继续旋转,使得目标扇区从磁头臂的下方划过。这段时间叫做传输时间

所以对于磁盘来说,要读或者要写某一个扇区。
首先要把磁头臂移动到扇区所在的磁道的位置;接下来继续旋转磁盘,让要读的扇区滑到词头臂的下方,然后继续旋转,让整个扇区划过词头臂,就可以完成数据的读写。
通常来说,移动词头臂的这段时间,也就是寻道时间,题目里会给一个平均时间。
旋转延迟时间这部分延迟时间我们可以取转半圈所需要的一个时间,因为我们想要读取的扇区在任何一个位置的概率都是相等的,如果算一个数学期望,平均来看,我们要读取的扇区划到词头臂的下方,数学期望应该是接近转半圈所需要的时间。
所以如果题目没有给大家明确的旋转延迟时间,大家就按照磁盘转半圈所需要的时间来算。题目里会给出磁盘的转速,根据转速你可以算出来转半圈所需要的时间,也可以算出来转一个扇区所需要的时间。
所以最后这部分的传输时间通常也是需要我们手动计算的。

最后还需要补充一点,我们要给磁盘发出读写命令,是不是也需要花费一些时间?所以有的题目还会让我们加上磁盘控制器的延迟时间,就是电子部件接收主机的命令,并且对磁盘驱动器机械部分发出控制信号所需要的一个延迟时间。

这就是磁盘的存取操作的一个过程,捋清楚这个过程,对于存取时间的计算就很简单了。

(4)数据传输率

最后数据传输率,指的就是在单位时间内向主机传送的字节数,就是磁盘的读写速度。

这种题目通常会怎么考?它会告诉你磁盘的转速,每秒钟多少转,或者每分钟多少转。
需要注意单位哈,每秒钟可以转 r 转,而每一次旋转都会使得一整条的磁道划过磁头臂的下方,因此每一次的旋转都可以读入一整条磁道的数据。
如果每条磁道可以存放 n 个字节,理论上磁盘的数据传输率最大就可以达到 r 乘以 n 这样的一个速度,这是一个理论最大值。 以上是评价磁盘性能的一些指标。考试最常考的还是对于平均存取时间的计算,但是题型相对固定,做几个题大家就能够知道怎么做了。

五、磁盘地址

刚才我们探讨了我们要读取一个扇区的过程。
接下来我们应该思考的问题是,主机是如何向磁盘指明自己想要读的是哪一个扇区的。

为了指明某一个特定的扇区,需要给磁盘里的各个扇区进行一个编号,也就是磁盘也应该像内存一样需要有一个地址,一个编址

磁盘的地址结构一般是这样的。
首先第一个部分驱动器号,什么意思?我们的计算机内部是不是可以连多个硬盘?我们肯定得先选中我们要读写的到底是哪一个硬盘,对吧?所以驱动器号就要先选中一个硬盘驱动器,也就是先选中一个特定的硬盘。
确定了硬盘之后,接下来我们是不是应该让读写磁头开始向内或者向外移动?所以接下来这部分的地址信息要指明我们要读的是哪一个磁道,或者要读的是哪个柱面。因此根据第二部分柱面号的信息,可以知道词头臂应该移动到什么位置。 接下来第三段盘面号。刚才我们说过,一个磁盘,它里边可能会有多个盘面,这些盘面和磁头都是一一对应的,我们可以给每一个盘面进行一个编号0、1、2、3、4、5。

根据盘面号就可以知道我们应该激活哪一个磁头。
比如我们要读的数据在 1 号盘面,我们根据盘面号来激活磁头即可。

所以地址的第三个部分盘面号适用于选择到底要激活哪一个磁头。
最后一个部分扇区号,这不用多说。
我们激活了一个特定磁头之后,磁盘的盘面还需要旋转。最终要读写的是某一个特定的扇区,因此还需要再指明扇区号。
这样磁盘旋转的过程当中,很多个扇区会划过磁头臂,但是我们需要根据扇区号来确定要读取的到底是哪一个扇区。

这个部分会怎么考察?
比如可能会告诉你某个系统有 4 个驱动器,每个驱动器会带一个磁盘,每一个磁盘有这么多个磁道,这么多个盘面,每一个盘面又会被划分为这么多个扇区。每个扇区的地址总共会有 18 位的二进制代码。

这 18 位的二进制代码我们可以这么分配。
首先用2比特表示 0- 3 这个范围,就是驱动器号,可以指明到底要读哪个驱动器。
接下来柱面号,也就是磁道号,可以用 8 个比特来表示,因为每个盘面总共会有 256 个磁道。接下盘面号, 4 个比特就可以表示 16 个盘面。
最后是扇区号,每一个盘面会被划分为 16 个扇区,因此扇区号也只需要用 4 个比特来表示。
2 + 8 + 4 + 4,总共刚好是 18 个二进制位。也就是我们用 18 个二进制位就可以唯一的指明,唯一的定位到某一个具体的扇区。这就是磁盘的地址结构。

六、磁盘的工作过程

最后我们再来看磁盘的工作过程。

其实我们刚才已经捋清楚了,无论是读还是写,都一定需要经过寻址。先定位到我们要读的词磁道,定位到我们要读的盘面再说。做好了寻址之后,接下来才可以进行读盘或者写盘的操作。
要读出或者要写入某一个或者某几个特定的扇区,主机会通过控制字,向磁盘的控制器发出对应的操作。
这儿我们提到的 3 个操作都会对应 3 个不同的控制字,用于指明磁盘需要做的动作是什么。 磁盘的控制器收到主机发出的一个控制字之后,就可以执行控制字,也就是进行寻址或者进行读盘或者进行写盘。这就是磁盘或者叫硬盘的一个工作过程。

再次强调,磁盘的读写操作是串行的,每次只能读或者写一个比特,并且同一时刻不可以同时进行读和写。
由于我们进行读和写只能 1 比特地进行,因此对于磁盘的控制器来说,一定需要添加一个串并行的变换电路

主机给磁盘发送的数据可能是并行发送的,一次传送多个比特位。然而我们要把这些数据写入磁盘的时候,只能 一比特一比特地写,因此需要把这些并行的数据用串行的方式 一比特一比特地写入。
读出也是一样。我们通过读写磁头读出数据之后,我们是一比特一比特地读出的,也就是用串行的方式读出。但是我们给系统总线发送的数据也许需要并行地发送,因此就需要一个串行转并行的变换电路。

七、磁盘阵列

以上就是磁盘工作的原理,接下来进入下个话题。
磁盘阵列,英文缩写叫RAID。叫做廉价冗余磁盘阵列

也就是我们可以用于某些手段让多个磁盘组成磁盘阵列,再结合相应的算法和机制,可以提高磁盘的读写速度,同时也可以提升磁盘里边存储数据的一个可靠性、安全性。

我们结合具体的例子来感受一下磁盘冗余阵列有什么作用。

(1)RAID 0

首先来看RAID 0方案。 RAID 0这种方案的思想是这样的。

这儿我们给了两个磁盘,A1、A2、A3、A4这些指的是在逻辑上相邻的某一些数据。也就是逻辑上相邻的第一坨数据我们会存在 0 号磁盘里边,第二坨数据我们会存放在 1 号磁盘里边,第三坨又存放在 0 号,第四坨又存放在 1 号。
这么做有什么用?大家可以回忆一下,低位交叉编址的多体存储器,其实是一个思想,因为磁盘是一种慢速的I/O设备。 一个很常见的需求,我们可能会连续的读出很多个逻辑上相邻的数据,如果这些逻辑上相邻的数据全部都放在同一个磁盘里。由于磁盘它的读写速度能力是有限的,因此我们所有的数据都从同一个磁盘读出,是不是会导致 IO 的速度比较慢?
但是如果我们把这些数据逻辑上相邻的部分,把它们在物理上放到不同的磁盘里边,这就意味着第一坨数据我们从 0 号磁盘读,第二坨数据我们从 1 号磁盘读。
这样我们读写数据的速度是不是就相当于有两个磁盘在为我们服务,这就可以使得多个磁盘上的数据可以被并行地访问。

刚才的图里边我们只是给了两个磁盘。事实上我们还可以搞很多个磁盘。
比如这个图,四个物理磁盘。

我们把逻辑上相邻的一些数据块,这把它称为了条带,把它们在物理上通过 RAID 0相关的软件处理,把它们分散了存储在不同的物理盘上。
这样就可以使整个磁盘系统的读写速度变得更快。
显然, RAID 0这个方案是没有冗余信息的,但是同时也没有校验的功能。

如何理解没有校验功能?
我们知道磁盘它虽然还算是一个比较可靠的存储设备,但是有的时候难免会有磁盘损坏的情况。

比如,如果 0 号磁盘,它刚好存储A1,存储这坨数据的扇区坏掉了, A1 的数据是不是就永远的丢失了?
所以,如果我们没有存储一些冗余信息,当某些扇区损坏的时候,我们就无法恢复数据。
另一个方面,如果这个扇区并不是整个被损坏,而是扇区里边某些比特位因为某些神秘力量的干扰而发生了二进制位的错误。 采用这种方式,是不是没办法检验出数据到底有没有发生跳变?所以这就是 RAID 0 这种方案的一个局限性。

(2)RAID 1

为了使得数据的存储更可靠、更安全,我们就可以采用更安全的一种磁盘阵列的方案。
RAID 1就是镜像磁盘阵列。很好理解,我们会存两份数据。

比如我们有两个物理磁盘,每一个物理磁盘上都会存放一份数据。
<1> 首先看并行访问的问题。如果我们此时要读A1、A2、A3、A4,要读这些数据,是不是也可以在 0 号磁盘读A1,读A3,在 1 号磁盘比如读 A2 读 A4 也可以提高读写的速度。

<2> 另一个方面,对于可靠性和安全性来说,这种方案是不是更靠谱?
如果其中一个磁盘某些扇区损坏,甚至是整个磁盘都损坏,至少我们在第二个磁盘里边还可以找到数据。不可能全部丢失。

<3> 另外,如果某一个磁盘,它里边存储的数据发生了跳变, 0 变 1、1 变 0 之类的,我们是不是只需要对比这两边存储的数据是否一致,就可以知道到底有没有数据的错误?
因此,RAID 1这种方案会有冗余的存储,同时也可以有校验的功能。不过相对的代价就是,我们的存储空间可能会被浪费一半,存储空间的利用率并不是特别高。

(3)RAID 2

为了进一步提高存储空间的利用率,我们再来看 RAID 2这种磁盘阵列的方案。

这儿我们给出的A1、A2、A3、 A4 并不是指一整块,并不是指一个扇区的数据,而是指一个比特的数据
所以这个图的意思是,在逻辑上相邻的几个比特,比如 4 个比特,A1、A2、A3、 A4 分别是四个比特的信息会被分散地存储在 4 个物理磁盘里边。同时我们还会再增加若干个磁盘,用来保存与这4位比特所对应的海明校验码。 4 个信息位只需要对应上 3 位的海明校验码,就可以拥有纠正一位错,发现两位错这样的能力。
这就意味着,即便我们其中某一个磁盘损坏了,由于拥有海明校验码,我们依然可以把我们丢失的这一个比特的数据给它恢复出来。
另一个方面,如果某一个比特发生了跳变,也可以通过海明校验码进行检验并且恢复。
可以看到,采用RAID 2这种方案,如果信息位是 4 个比特为一组,我们只需要增加 3 个冗余的磁盘就可以。比起 RAID 1成本要更低一些。

因为RAID 1 它冗余数据的比例是 1: 1,会多存一份,但是采用海明校验码,这就是 4: 3,只有 3/ 7 的信息是冗余信息。这就是RAID 2磁盘阵列的方案。

接下来 RAID 345 这几种磁盘阵列的方案我们就不做具体的介绍了,有兴趣的同学可以去网络上了解剩下的这几种冗余阵列的方案,大家只需要知道,从上至下,越往后可靠性会越高,也就越安全。
所以这种磁盘冗余阵列的存储方式,对于很多比如百度云之类的云存储公司来说很重要的。因为百度云上我们保存的数据不能让它丢失,如果用户的数据丢失,百度云是需要负责的。
所以为了增加这种数据存储的可靠性,同时也为了增加它的磁盘系统的并行访问的能力,读写的速度等。所以对于一些商用级的环境来说,经常使用这种磁盘冗余阵列来提升他们磁盘系统的性能以及可靠性。

再强调一下我们考试比较容易考察的RAID 0,需要注意,它是没有容错能力的。 RAID 1是有容错能力,但是它的代价是容量会减少一半,冗余信息的存储代价会比较高。

越往后的这些方案,它的冗余信息的占比会越少,同时可靠性和安全性也会逐步的增加,大家可以再自己下去了解。所以越靠后的这些磁盘冗余阵列的方案,可以使得成本越廉价。
在保证数据的安全性、可靠性的基础上,使得企业的运营成本变得更低,同时也可以提高数据的传输率。

八、回顾

以上就是磁盘存储器以及如何使用磁盘阵列来提升磁盘系统的性能以及可靠性。这小结当中,我们主要探讨的还是磁盘存储器

这一节的考试重点就是磁盘的性能指标的计算,特别是平均存取时间。
关于磁盘的地址结构,大家可以结合操作系统来进行进一步的理解。
计组这门课比较重要的、特有的一个考点就是磁盘冗余阵列,像 RAID 0这种磁盘冗余阵列可以提高存取的速度。在逻辑上相邻的那些数据块会被分别存到不同的磁盘里边。
但是 RAID 0 它没有容错能力。当磁盘出现故障,或者某些二进制比特位出现了跳变的时候, RAID 0 是无法解决的。
而 RAID 1采用了镜像磁盘的方式,会用另一个磁盘多存一份数据。
但是由于RAID 1它的冗余信息占比比较多,所以之后又有了 RAID 2,一直到 RAID 5。
等级的编号越大就说明它冗余信息的占比越少,同时也通过了一些数据校验的设计来提高了容错能力。
以上就是小节的全部内容。

相关文章
|
6天前
|
IDE Linux 开发工具
磁盘
磁盘
16 0
|
10月前
|
缓存
计算机硬件之硬盘和内存条
计算机硬件之硬盘和内存条
489 0
|
11月前
|
存储
存储器-虚拟内存
存储器-虚拟内存
52 0
|
存储 安全 算法
3.7磁盘存储器
计算机组成原理之磁盘存储器
91 0
|
存储 芯片 块存储
3.2主存储器的基本组成
3.2主存储器的基本组成
100 0
3.2主存储器的基本组成
|
存储 监控 前端开发
计算机的存储设备和存储器
计算机的存储设备和存储器
172 0
|
存储 小程序 虚拟化
|
缓存 监控 算法
|
IDE Linux 开发工具
|
Shell Perl 开发工具