MDM*_*rra 187 raid zfs storage hard-drive
这是一个关于 RAID 级别的规范问题。
什么是:
Mar*_*son 204
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-native 包,例如 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 个),然后将每个数据块写入单独的磁盘。
这意味着单个磁盘故障会破坏整个阵列(因为您有 Part 1 和 Part 2,但没有 Part 3),但它提供了非常快的磁盘访问。
它不常用于生产环境,但可以在您拥有严格的临时数据的情况下使用,这些数据可以丢失而不会产生影响。它通常用于缓存设备(例如 L2Arc 设备)。
总可用磁盘空间是阵列中所有磁盘的总和(例如,3x 1TB 磁盘 = 3TB 空间)。

RAID 1(又名镜像)获取您的数据并将其复制到两个或多个磁盘(尽管通常只有 2 个磁盘)上。如果使用两个以上的磁盘,则每个磁盘上都会存储相同的信息(它们都是相同的)。当您的磁盘少于三个时,这是确保数据冗余的唯一方法。
RAID 1 有时会提高读取性能。RAID 1 的某些实现将从两个磁盘读取以加倍读取速度。有些只会从其中一个磁盘读取,这不会提供任何额外的速度优势。其他人将从两个磁盘读取相同的数据,确保每次读取时阵列的完整性,但这将导致与单个磁盘相同的读取速度。
它通常用于磁盘扩展很少的小型服务器,例如可能只有两个磁盘空间的 1RU 服务器或需要冗余的工作站。由于其“丢失”空间的高开销,对于小容量、高速(且成本高)的驱动器而言,其成本可能过高,因为您需要花费两倍的资金才能获得相同级别的可用存储。
总可用磁盘空间是阵列中最小磁盘的大小(例如,2x 1TB 磁盘 = 1TB 空间)。

所述1E RAID级别是在数据总是写入(至少)两个磁盘类似于RAID 1。但与 RAID1 不同的是,它通过简单地在多个磁盘之间交错数据块来允许奇数个磁盘。
性能特点类似于RAID1,容错性类似于RAID 10。这种方案可以扩展到三个以上的奇数磁盘(可能称为RAID 10E,虽然很少)。

RAID 10 是RAID 1 和RAID 0 的组合。1 和0 的顺序非常重要。假设您有 8 个磁盘,它将创建 4 个 RAID 1 阵列,然后在 4 个 RAID 1 阵列之上应用 RAID 0 阵列。它至少需要 4 个磁盘,并且必须成对添加额外的磁盘。
这意味着每对中的一个磁盘可能会出现故障。因此,如果您有 A、B、C 和 D 组以及磁盘 A1、A2、B1、B2、C1、C2、D1、D2,您可以从每组(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 操作从其余驱动器重建信息。
不幸的是,如果发生驱动器故障,重建过程非常耗费 IO。RAID 中的驱动器越大,重建所需的时间就越长,第二个驱动器发生故障的可能性就越大。由于大型慢速驱动器要重建的数据要多得多,但要重建的性能要低得多,因此通常不建议使用 7200 RPM 或更低的 RAID 5。
RAID 5 阵列在消费类应用中最关键的问题可能是,当总容量超过 12TB 时,它们几乎肯定会出现故障。这是因为SATA 消费类驱动器的不可恢复读取错误(URE) 率为每 10 个14位一个,或 ~12.5TB。
如果我们以具有七个 2 TB 驱动器的 RAID 5 阵列为例:当一个驱动器出现故障时,还剩下六个驱动器。为了重建阵列,控制器需要读取六个驱动器,每个驱动器 2 TB。查看上图,几乎可以肯定在重建完成之前会发生另一个 URE。一旦发生这种情况,阵列及其上的所有数据都将丢失。
然而,由于大多数硬盘制造商已将其较新驱动器的 URE 等级提高到十分之一15位,因此消费驱动器中的 URE/数据丢失/阵列故障与 RAID 5 问题在某种程度上有所缓解。与往常一样,购买前请检查规格表!
将 RAID 5 置于可靠(电池供电)写入缓存之后也是必不可少的。这避免了小写入的开销,以及在写入过程中发生故障时可能发生的不稳定行为。
RAID 5 是向阵列添加冗余存储的最具成本效益的解决方案,因为它只需要丢失 1 个磁盘(例如 12x 146GB 磁盘 = 1606GB 可用空间)。它至少需要 3 个磁盘。

RAID 6 类似于 RAID 5,但它使用两个磁盘,而不是一个(第一个是 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 之于 RAID 50。本质上,您有多个 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 的主要缺点是它仍然是软件raid(并且受到与 CPU 计算写入负载而不是让硬件HBA卸载它产生的相同的轻微延迟的影响)。这可能会在未来由支持 ZFS 硬件加速的 HBA 解决。
因为没有中央机构强制执行任何类型的标准功能,所以各种 RAID 级别已经发展并被普遍使用标准化。许多供应商生产的产品与上述描述有所不同。他们发明一些花哨的新营销术语来描述上述概念之一也很常见(这种情况在 SOHO 市场中最常见)。在可能的情况下,尝试让供应商实际描述冗余机制的功能(大多数人会自愿提供这些信息,因为真的没有秘密武器了)。
值得一提的是,有类似于 RAID 5 的实现,它允许您启动一个只有两个磁盘的阵列。它将数据存储在一个条带上,奇偶校验存储在另一个上,类似于上面的 RAID 5。这将像 RAID 1 一样执行,但需要额外的奇偶校验计算开销。优点是您可以通过重新计算奇偶校验将磁盘添加到阵列。
Cho*_*er3 58
还 RAID 一百万!!!!
128 个磁盘,所以读取速度会很快,写入很糟糕,但我想象的非常可靠,哦,你会得到 1/128 的可用空间,所以从预算的角度来看并不是很好。不要用闪存驱动器这样做,我试图点燃大气......
