Answers:
RAID代表独立磁盘冗余阵列(有些被称为“廉价”,以指示它们是“普通”磁盘;历史上有内部冗余磁盘,它们非常昂贵;由于不再可用,因此首字母缩略词已改写)。
在最一般的级别上,RAID是一组作用于相同读取和写入的磁盘。SCSI IO在卷(“ LUN”)上执行,并且以提高性能和/或增加冗余的方式将它们分配到基础磁盘。性能提高是条带化的功能:数据分散在多个磁盘上,以允许读写操作同时使用所有磁盘的IO队列。冗余是镜像的功能。整个磁盘可以保留为副本,或者单个条带可以多次写入。或者,在某些类型的突袭中,不是逐位复制数据,而是通过创建包含奇偶校验信息的特殊条带来获得冗余,该条带可用于在硬件故障的情况下重新创建任何丢失的数据。
有几种配置可提供不同级别的这些好处,在此介绍了这些配置,并且每种配置都对性能或冗余有偏见。
评估哪种RAID级别适合您的重要方面取决于其优势和硬件要求(例如:驱动器数量)。
这些类型的RAID(0,1,5)中大多数类型的另一个重要方面是它们不能确保数据的完整性,因为它们是从存储的实际数据中抽象出来的。因此RAID无法防止损坏的文件。如果文件以任何方式损坏,则无论该损坏如何,都将被镜像或初始化并提交到磁盘。但是,RAID-Z确实声称可以提供数据的文件级完整性。
可在直接连接的存储上实现RAID的两层:硬件和软件。在真正的硬件RAID解决方案中,有一个专用的硬件控制器,其处理器专用于RAID计算和处理。它还通常具有一个由电池供电的高速缓存模块,因此即使在电源故障后,也可以将数据写入磁盘。当系统没有完全关闭时,这有助于消除不一致情况。一般而言,好的硬件控制器的性能要比其软件同类的更好,但它们也具有大量成本并增加了复杂性。
软件RAID通常不需要控制器,因为它不使用专用RAID处理器或单独的缓存。通常,这些操作直接由CPU处理。在现代系统中,这些计算消耗的资源最少,尽管会产生一些边际延迟。RAID由操作系统直接处理,对于FakeRAID则由人造控制器处理。
一般而言,如果有人要选择软件RAID,则应避免使用FakeRAID并对其系统使用OS本地软件包,例如Windows中的动态磁盘,Linux中的mdadm / LVM或Solaris中的ZFS,FreeBSD以及其他相关发行版。FakeRAID使用硬件和软件的组合,这导致了硬件RAID的最初出现,但导致了软件RAID的实际性能。此外,通常很难将阵列移至另一个适配器(如果原始适配器出现故障)。
RAID的另一个常见用法是在集中存储设备上,通常称为SAN(存储区域网络)或NAS(网络连接存储)。这些设备管理自己的存储,并允许连接的服务器以各种方式访问存储。由于在相同的几个磁盘上包含多个工作负载,因此通常需要具有高冗余级别。
NAS和SAN之间的主要区别在于块与文件系统级别的导出。SAN导出整个“块设备”,例如分区或逻辑卷(包括构建在RAID阵列顶部的设备)。SAN的示例包括光纤通道和iSCSI。NAS导出“文件系统”,例如文件或文件夹。NAS的示例包括CIFS / SMB(Windows文件共享)和NFS。
RAID0(又称条带化)有时也称为“驱动器发生故障时将剩余的数据量”。它确实违反了“ RAID”的原则,其中“ R”代表“冗余”。
RAID0会获取您的数据块,将其分割为与磁盘一样多的块(2个磁盘→2个块,3个磁盘→3个块),然后将每块数据写入单独的磁盘。
这意味着单个磁盘故障会破坏整个阵列(因为您拥有第1部分和第2部分,但没有第3部分),但是它提供了非常快速的磁盘访问。
它不经常在生产环境中使用,但是可以用于您的临时数据严格丢失而不会造成影响的情况下。它通常用于缓存设备(例如L2Arc设备)。
总可用磁盘空间是阵列中所有磁盘加在一起的总和(例如3x 1TB磁盘= 3TB空间)。
RAID 1(又名镜像)将您的数据复制到两个或更多磁盘(尽管通常只有2个磁盘)上。如果使用了两个以上的磁盘,则相同的信息将存储在每个磁盘上(它们都是相同的)。当磁盘少于三个时,这是确保数据冗余的唯一方法。
RAID 1有时可以提高读取性能。RAID 1的某些实现将从两个磁盘读取以使读取速度加倍。有些只会从其中一张磁盘读取,这不会提供任何其他速度优势。其他人将从两个磁盘读取相同的数据,以确保每次读取时阵列的完整性,但这将导致与单个磁盘相同的读取速度。
它通常用于磁盘扩展很少的小型服务器中,例如1RU服务器可能仅具有两个磁盘的空间,或者在需要冗余的工作站中使用。由于“丢失”空间的开销很大,因此对于小容量,高速(和高成本)驱动器而言,它的成本过高,因为您需要花费两倍的金钱才能获得相同级别的可用存储。
总可用磁盘空间是阵列中最小磁盘的大小(例如2x 1TB磁盘= 1TB空间)。
所述1E RAID级别是类似于在该数据以RAID 1总是被写入到(至少)两个磁盘。但是与RAID1不同,它仅通过在多个磁盘之间交错数据块就可以容纳奇数个磁盘。
性能特征类似于RAID1,容错性类似于RAID10。此方案可以扩展到奇数个以上的三个磁盘(可能很少称为RAID 10E)。
RAID 10是RAID 1和RAID 0的组合。1和0的顺序非常重要。假设您有8个磁盘,它将创建4个RAID 1阵列,然后在4个RAID 1阵列之上应用RAID 0阵列。它至少需要4个磁盘,并且必须成对添加其他磁盘。
这意味着每对磁盘中的一个可能发生故障。因此,如果您拥有具有磁盘A1,A2,B1,B2,C1,C2,D1,D2的磁盘组A,B,C和D,则可能会丢失每个磁盘组(A,B,C或D)中的一个磁盘一个有效的数组。
但是,如果丢失了同一组中的两个磁盘,则阵列将完全丢失。你可以失去最多(但不能保证)磁盘的50%。
您可以在RAID 10中获得高速和高可用性。
RAID 10是非常常见的RAID级别,尤其是在大容量驱动器中,单个磁盘故障会导致在重建RAID阵列之前发生第二个磁盘故障。在恢复过程中,性能降级远低于RAID 5,因为它只需从一个驱动器读取即可重建数据。
可用磁盘空间为总空间的50%。(例如8个1TB驱动器= 4TB可用空间)。如果使用不同的大小,则每个磁盘将仅使用最小的大小。
值得注意的是,Linux内核的软件RAID驱动程序称为md
RAID 10配置,其中驱动器数量奇数,即3或5磁盘RAID 10。
它与RAID 10相反。它将创建两个RAID 0阵列,然后将RAID 1放在顶部。这意味着您可以从每组(A1,A2,A3,A4或B1,B2,B3,B4)中丢失一个磁盘。在商业应用中很少见到,但是可以与软件RAID一起使用。
绝对清楚:
它没有提供超过RAID 10的额外速度,但冗余性却大大降低,因此应不惜一切代价避免。
数十年来,RAID 5一直是最常用的RAID级别。它提供了阵列中所有驱动器的系统性能(小的随机写入除外,这会产生少量开销)。它使用简单的XOR操作来计算奇偶校验。在单个驱动器发生故障时,可以使用已知数据的XOR操作从其余驱动器中重建信息。
不幸的是,如果驱动器发生故障,重建过程将占用大量的IO。RAID中的驱动器越大,重建所需的时间就越长,并且第二个驱动器发生故障的机会就越大。由于大型慢速驱动器都具有大量要重建的数据,并且要处理的性能也低得多,因此通常不建议将RAID 5与7200 RPM或更低的值一起使用。
在消费类应用中使用RAID 5阵列时,最关键的问题可能是当总容量超过12TB时几乎可以保证它们会发生故障。这是因为SATA消费者驱动器的不可恢复的读取错误(URE)率为每10 14位一个,即〜12.5TB。
如果我们以具有七个2 TB驱动器的RAID 5阵列为例:当一个驱动器发生故障时,剩下六个驱动器。为了重建阵列,控制器需要读取每个2 TB的六个驱动器。查看上图,几乎可以肯定,在重建完成之前,还将有另一个URE发生。一旦发生这种情况,阵列及其上的所有数据都会丢失。
但是,大多数硬盘制造商已将其较新驱动器的URE额定值提高到10 15位中的一个,从而在一定程度上缓解了消费类驱动器中的URE /数据丢失/阵列故障以及RAID 5问题。一如往常,购买前请检查规格表!
还必须将RAID 5置于可靠的(由电池供电)写缓存之后。这样可以避免小写操作的开销,以及写操作失败时可能发生的不稳定行为。
RAID 5是向阵列添加冗余存储的最具成本效益的解决方案,因为它仅需要丢失1个磁盘(例如12x 146GB磁盘= 1606GB可用空间)。它至少需要3个磁盘。
RAID 6与RAID 5类似,但是RAID 6使用两个磁盘的奇偶校验值,而不是一个磁盘(第一个磁盘是XOR,第二个磁盘是LSFR),因此您可以从阵列中丢失两个磁盘而不会丢失数据。写损失高于RAID 5,并且磁盘空间减少了一个。
值得考虑的是,最终RAID 6阵列将遇到与RAID 5类似的问题。更大的驱动器会导致更长的重建时间和更多的潜在错误,最终导致整个阵列发生故障并在重建完成之前丢失所有数据。
RAID 50是嵌套级别,与RAID 10相似。它结合了两个或多个RAID 5阵列,并在RAID 0中将数据条带化。只要不同 RAID 5 丢失了多个磁盘,就可以提供性能和多磁盘冗余。数组。
在RAID 50中,磁盘容量为nx,其中x是交叉划分的RAID 5的数量。例如,如果有一个简单的6磁盘RAID 50(最小),则如果两个RAID 5中有6x1TB磁盘,然后将它们分割成RAID 50,则将有4TB可用存储空间。
RAID 6对应RAID 60,RAID 5对应RAID50。从本质上讲,您有多个RAID 6,然后在RAID 0中对数据进行了条带化。此设置允许该集合中的任何单个RAID 6最多包含两个成员。失败而不会丢失数据。RAID 60阵列的重建时间可能很长,因此为阵列中的每个RAID 6成员提供一个热备用通常是一个好主意。
在RAID 60中,磁盘容量为n-2x,其中x是交叉划分的RAID 6的数量。例如,如果一个简单的8磁盘RAID 60(最小),如果在两个RAID 6中有8x1TB磁盘,然后将它们分割成RAID 60,则将有4TB可用存储空间。如您所见,这提供的可用存储量与RAID 10在8个成员阵列上提供的存储量相同。尽管RAID 60会稍微冗余一些,但重建时间会大大增加。通常,仅当磁盘数量很多时,才考虑使用RAID 60。
RAID-Z的解释有点复杂,因为ZFS彻底改变了存储和文件系统的交互方式。ZFS包含卷管理(RAID是卷管理器的功能)和文件系统的传统角色。因此,ZFS可以在文件的存储块级别而不是卷的条带级别执行RAID。这正是RAID-Z所做的,跨多个物理驱动器写入文件的存储块,包括每组条带的奇偶校验块。
一个例子可以使这一点更加清楚。假设您在ZFS RAID-Z池中有3个磁盘,块大小为4KB。现在,您将恰好16KB的文件写入系统。ZFS会将其分成四个4KB块(与正常操作系统一样);然后它将计算两个奇偶校验块。这六个块将放置在驱动器上,类似于RAID-5分配数据和奇偶校验的方式。这是对RAID5的改进,因为不需要读取现有数据条带来计算奇偶校验。
另一个例子建立在前面的例子上。说文件只有4KB。ZFS仍将必须构建一个奇偶校验块,但是现在写入负载已减少到2个块。第三个驱动器将免费服务于任何其他并发请求。只要写入的文件不是池块大小的倍数乘以驱动器数量再减去一个驱动器(即[文件大小] <> [块大小] * [驱动器-1]),就会看到类似的效果。
ZFS同时处理卷管理和文件系统也意味着您不必担心对齐分区或条带块大小。ZFS使用推荐的配置自动处理所有这些。
ZFS的性质抵消了一些经典的RAID-5 / 6警告。ZFS中的所有写操作均采用写时复制的方式进行;写操作中所有更改的块都将写入磁盘上的新位置,而不是覆盖现有块。如果由于某种原因写入失败,或者系统在写入过程中失败,则写入事务要么完全在系统恢复后发生(借助于ZFS意向日志),要么根本不发生,从而避免了潜在的数据损坏。RAID-5 / 6的另一个问题是在重建过程中潜在的数据丢失或无声数据损坏。常规zpool scrub
操作可以帮助在数据损坏或驱动器问题引起数据丢失之前发现它们,并且对所有数据块进行校验和将确保在重建期间发现所有损坏。
RAID-Z的主要缺点是它仍然是软件团队(并且遭受CPU计算写负载而不是让硬件HBA卸载它所引起的相同的较小延迟)。将来,支持ZFS硬件加速的HBA可能会解决此问题。
由于没有中央机构强制执行任何标准功能,因此各种RAID级别已经发展并通过普遍使用进行了标准化。许多供应商生产的产品都与上述描述有所不同。对于他们来说,发明一些新颖的营销术语来描述上述概念之一也是很普遍的(这在SOHO市场中最常见)。在可能的情况下,请尝试让供应商实际描述冗余机制的功能(大多数人会自愿提供此信息,因为实际上不再有秘密秘诀了)。
值得一提的是,有一些类似RAID 5的实现,使您可以仅使用两个磁盘来启动阵列。它将在一个条带上存储数据,在另一个条带上存储奇偶校验,类似于上面的RAID 5。这将类似于RAID 1,但具有奇偶校验计算的额外开销。优点是您可以通过重新计算奇偶校验将磁盘添加到阵列。
也是RAID一百万!!!
128块磁盘这样的读取将是快速,可怕的写入,但我想像的非常可靠,哦,您将获得1/128的可用空间,因此从预算角度来看并不理想。不要用闪存驱动器这样做,我试着放火烧空气...