什么是RAID?

RAID是一种最初为网络服务器市场开发的解决方案,作为以较低成本创建大型存储的手段。 实质上,它需要多个成本较低的硬盘驱动器,并通过控制器将它们组合在一起以提供一个更大容量的驱动器。 这就是RAID所代表的意思:冗余阵列的廉价驱动器或磁盘。 为了实现这一点,需要专门的软件和控制器来管理各种驱动器之间的数据。

最终, 标准计算机系统处理能力使这些功能可以过滤进入个人电脑市场

现在RAID存储可能基于软件或硬件 ,可用于三个不同的目的。 这些包括容量,安全性和性能。 容量是一个简单的容量,通常涉及几乎所有类型的RAID设置。 例如,两个硬盘驱动器可以作为单个驱动器链接到操作系统,从而有效地制作两倍容量的虚拟驱动器。 性能是在个人计算机上使用RAID设置的另一个关键原因。 在两个驱动器用作单个驱动器的同一个示例中,控制器可以将数据块分成两部分,然后将这些部分分别放在单独的驱动器上。 这有效地提高了在存储系统上写入或读取数据的性能。 最后,RAID可用于数据安全。

这是通过使用驱动器上的一些空间实质上克隆写入到两个驱动器的数据来完成的。 再次使用两个驱动器,我们可以使数据写入两个驱动器。 因此,如果一个驱动器发生故障,另一个仍然有数据。

根据要为计算机系统组合的存储阵列的目标,您将使用RAID的各种级别之一来实现这三个目标。

对于那些在计算机中使用硬盘驱动器的人来说 ,性能可能比容量更重要。 另一方面,那些使用固态驱动器的人可能会想要一种方式来使用较小的驱动器并将它们连接在一起以创建一个更大的驱动器。 那么让我们来看看可以在个人电脑上使用的各种RAID级别。

RAID 0

这是RAID的最低级别,实际上不提供任何形式的冗余,这就是为什么它被称为0级。本质上, RAID 0需要两个或更多驱动器,并将它们组合在一起以形成更大容量的驱动器。 这是通过称为条带的处理器实现的。 数据块被分解成数据块,然后按顺序写入驱动器。 这提高了性能,因为控制器可以将数据同时写入驱动器,从而有效地将驱动器的速度相乘。 以下是三种磁盘如何工作的示例:

驾驶1 驾驶2 驾驶3
方块1 1 2 3
第2座 4 6
第3座 7 8 9


为了让RAID 0有效地提高系统的性能,您需要尝试使用匹配的驱动器。 每个驱动器应具有相同的确切存储容量和性能特征。

如果他们不这样做,那么容量将被限制到最小驱动器的数倍,并且驱动器的性能最低,因为在移动到下一组之前必须等待所有条带被写入。 可以使用不匹配的驱动器,但在这种情况下, JBOD设置可能更有效。

JBOD仅代表一堆驱动器,实际上只是一组驱动器,可以彼此独立访问,但作为单个存储驱动器显示给操作系统。 这通常是通过在驱动器之间传输数据来实现的。 通常这被称为SPAN或BIG。

实际上,操作将它们全部视为单个磁盘,但块将在第一个磁盘上写入,直到完成,然后进入第二个,然后是第三个,这对于将额外容量添加到现有计算机系统中是有用的,并且具有各种尺寸的驱动器,但不会增加驱动器阵列的性能。

RAID 0和JBOD设置最大的问题是数据安全性。 由于您有多个驱动器,因为您有更多的故障点,所以数据损坏的可能性会增加。 如果RAID 0阵列中的任何驱动器发生故障,则所有数据都将无法访问。 在JBOD中,驱动器故障将导致该驱动器上发生的任何数据丢失。 因此,对那些希望使用这种存储方法的用户来说,最好有其他方法来备份他们的数据。

RAID 1

这是RAID的第一个真实级别,因为它为存储在阵列上的数据提供完整级别的冗余。 这是通过一个称为镜像的进程完成的。 实际上,写入系统的所有数据都将复制到1级阵列中的每个驱动器。 这种形式的RAID通常只需一对驱动器即可完成,因为添加更多的驱动器不会增加额外的容量,只需要更多的冗余。 为了更好地举一个例子,下面是一个图表,显示了如何写入两个驱动器:

驾驶1 驾驶2
方块1 1 1
第2座 2 2
第3座 3 3


要从RAID 1设置中获得最有效的使用,系统将再次使用具有相同容量和性能评级的匹配驱动器。

如果使用不匹配的驱动器,则阵列容量将等于阵列中最小容量的驱动器。 例如,如果在RAID 1阵列中使用一个半TB和一个TB的驱动器,则该阵列在系统上的容量仅为单个TB。

此级别的RAID对于数据安全非常有效,因为两个驱动器实际上是相同的。 如果两个驱动器中的一个发生故障,则另一个具有另一个驱动器的完整数据。 这种设置的问题通常是确定哪个驱动器出现故障,因为当两个驱动器中的一个发生故障并且无法正确恢复时,通常存储器将无法访问,直到插入新驱动器代替故障驱动器并恢复进程运行。 如前所述,从这方面来看也没有任何性能上的提升。 实际上,RAID控制器的开销会造成轻微的性能损失。

RAID 1 + 0或10

这是RAID级别0和级别1的复杂组合 。 实际上,控制器至少需要四个驱动器才能在此模式下运行,因为它要做的是制作两对驱动器。 第一组驱动器是镜像阵列,克隆了两者之间的数据。 第二组驱动器也镜像,但设置为第一组。 这提供了数据冗余和性能增益。 以下是使用此类设置将数据写入四个驱动器的示例:

驾驶1 驾驶2 驾驶3 驾驶4
方块1 1 1 2 2
第2座 3 3 4 4
第3座 6 6


说实话,这不是RAID在计算机系统上运行的理想模式。 虽然它确实提供了一些性能提升,但它确实不是那么好,因为系统上有大量的开销。 此外,这是一个巨大的浪费空间,因为驱动器阵列的容量只有所有驱动器的一半。 如果使用的是不匹配的驱动器,则性能将限制在最慢的驱动器上,容量只是最小驱动器的两倍。

RAID 5

这是可以在消费者计算机系统中找到的最高级别的RAID,并且是增加容量和冗余的更有效的方法。 它通过带有奇偶校验的数据条带化过程来实现这一点。 至少需要三个驱动器才能完成此操作,因为数据在多个驱动器上分割为条带,但是一个块的整个条带被留出用于奇偶校验。 为了更好地解释这个问题,我们先看看如何在三个驱动器上写入数据:

驾驶1 驾驶2 驾驶3
方块1 1 2 p
第2座 3 p 4
第3座 p 6


本质上,驱动器控制器需要在数组中的所有驱动器上写入大量数据。 第一位数据放在第一个驱动器上,第二位放在第二个驱动器上。 第三个驱动器获取奇偶校验位,这实际上是第一个和第二个二进制数据的比较结果。 在二进制数学中,你只有0和1.一个布尔数学过程完成比较比特。 如果两者合计为偶数(0 + 0或1 + 1),则奇偶校验位将为零。 如果两者合计为奇数(1 + 0或0 + 1),那么奇偶校验位将为1。 原因是如果其中一个驱动器出现故障,控制器可以确定缺少的数据是什么。 例如,如果一个驱动器发生故障,只剩下驱动器2和3,驱动器2的数据块为1,驱动器3的奇偶校验块为1,则驱动器1上缺少的数据块必须为零。

这提供了有效的数据冗余,允许在发生驱动器故障时恢复所有数据。 现在对于大多数消费者设置来说,失败仍然会导致系统不在,因为它不处于功能状态。 为了使系统正常工作,有必要用新驱动器替换发生故障的驱动器。 然后,必须在控制器级完成数据重构过程,然后执行反布尔函数以在缺失的驱动器上重新创建数据。 这可能需要一些时间,特别是对于容量较大的驱动器,但至少可以恢复。

现在,RAID 5阵列的容量取决于阵列中的驱动器数量及其容量。 阵列再次受到阵列中最小容量驱动器的限制,因此最好使用匹配的驱动器。 有效存储空间等于驱动器数量减去最低容量的一倍。 所以在数学术语中,它是(n-1)* Capacitymin 。 因此,如果RAID 5阵列中有三个2GB硬盘,则总容量将为4GB。 另一个使用4个2GB驱动器的RAID 5阵列将拥有6GB的容量。

现在RAID 5的性能比其他一些RAID的性能要复杂一些,因为在数据写入驱动器时必须执行布尔过程来创建奇偶校验位。 这意味着写入性能将低于驱动器数量相同的RAID 0阵列。 另一方面,读取性能不会像写入那样严重,因为布尔进程没有完成,因为它从驱动器读取直接数据。

所有RAID设置的大问题

我们已经讨论过可以在个人电脑上使用的每种RAID级别的各种优缺点,但还有另一个问题,很多人在创建RAID驱动器设置时都没有意识到。 在可以使用RAID设置之前,首先必须由硬件控制器软件或操作系统的软件构建。 这基本上初始化了正确跟踪数据在驱动器上的写入和读取方式所需的特殊格式。

这听起来可能不是问题,但它是如果你甚至需要改变你想要你的RAID阵列配置。 例如,假设您的数据不多,并且想要为RAID 0或RAID 5阵列添加额外的驱动器。 在大多数情况下,如果没有首先重新配置RAID阵列,将会无法移除存储在这些驱动器中的任何数据。 这意味着您必须完全备份数据,添加新驱动器,重新配置驱动器阵列,格式化驱动器阵列,然后将原始数据恢复到驱动器。 这可能是一个非常痛苦的过程。 因此,确保您第一次按照自己的方式设置阵列。