AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 47458
Accepted
andynormancx
andynormancx
Asked: 2009-07-30 01:37:10 +0800 CST2009-07-30 01:37:10 +0800 CST 2009-07-30 01:37:10 +0800 CST

RAID5 比 RAID1 更健壮吗

  • 772

我即将用 Linux 软件 RAID1 阵列替换旧的硬件 RAID5 阵列。我正在和一位朋友交谈,他声称 RAID5 比 RAID1 更强大。

他声称,使用 RAID5,读取奇偶校验数据以确保所有驱动器都返回正确的数据。他进一步声称,在驱动器上发生的 RAID1 错误将被忽视,因为没有对 RAID1 进行此类检查。

我可以看到这怎么可能是真的,但也可以看到这完全取决于所讨论的 RAID 系统是如何实现的。当然,RAID5 系统不必在读取时读取和检查奇偶校验数据,而 RAID1 系统可以轻松地从读取时读取所有驱动器,以检查它们是否都保存相同的数据,从而实现相同级别的稳健性(相应的性能损失)。

所以问题是,现实世界中的 RAID5/RAID1 系统实际上是做什么的?RAID5 系统是否在读取时检查奇偶校验数据?是否有 RAID1 系统可以从所有驱动器读取并比较读取的数据?

raid raid5 hardware-raid software-raid raid1
  • 11 11 个回答
  • 3220 Views

11 个回答

  • Voted
  1. Best Answer
    duffbeer703
    2009-07-30T07:44:21+08:002009-07-30T07:44:21+08:00

    RAID-5 是一种容错解决方案,而不是数据完整性解决方案。

    请记住,RAID 代表廉价磁盘冗余阵列。磁盘是冗余的原子单元——RAID 并不真正关心数据。您购买的解决方案使用WAFL 或 ZFS 等文件系统来解决数据冗余和完整性问题。

    RAID 控制器(硬件或软件)不会在读取时验证块的奇偶性。这是运行 RAID-5 的主要风险——如果您在驱动器上遇到部分介质故障(坏块未标记为“坏”的情况),您现在处于数据被静默保存的情况损坏。

    Sun 的 RAID-Z/ZFS实际上提供了端到端的数据完整性,我怀疑其他文件系统和 RAID 系统将来会提供此功能,因为 CPU 上可用的内核数量不断增加。

    在我看来,如果您使用的是 RAID-5,那么您会很便宜。RAID 1 性能更好,提供更好的保护,并且在驱动器发生故障时不会影响生产——成本差异很小。

    • 22
  2. James
    2009-07-30T03:51:38+08:002009-07-30T03:51:38+08:00

    我相信答案取决于控制器/软件,例如,镜像系统通常只能从一对光盘中读取一个光盘,因此能够提供错误的数据。我注意到,如果您的结果取决于该数据,那么当数据写入两张光盘时,它会在两张光盘上损坏.....

    来自 SATAssure(tm) Plus 下的 pdf:

    “革命性的 SATAssure 技术使用大容量、廉价的 SATA 磁盘驱动器提供企业级数据保护和可靠性。SATAssure 对所有读取操作进行操作,确保数据完整性并实时自动纠正问题——所有这些都没有传统的性能或容量损失存储系统。通过重新启动单个驱动器的新功能来减少驱动器 RMA。”

    有趣的是,一些制造商对他们总是计算奇偶校验这一事实大惊小怪,这让我认为这在硬件控制器上相对不常见。还值得注意的是,ZFS 和 WAFL (netapp) 等系统对每次读取进行奇偶校验计算。

    • 6
  3. David Mackintosh
    2009-07-30T04:45:12+08:002009-07-30T04:45:12+08:00

    使用 RAID-5,奇偶校验通常只在阵列重建时读取,而不是在一般读取时读取。这样读取可以更加随机和更快(因为您不必在每次需要数组中的 1K 数据时读取和计算整个条带的奇偶校验)。

    使用 RAID-1,通常会尽可能跨驱动器进行读取,以提高读取性能。如您所述,如果 RAID 子系统尝试读取两个驱动器并且它们不同,则子系统无法知道哪个驱动器出错。

    大多数 RAID 子系统依赖于驱动器在出现故障时通知控制器或计算机。

    那么RAID-5“更强大”吗?答案是,这取决于。对于给定数量的磁盘,RAID-5 比 RAID-1 可以让您获得更有效的存储;尽管要在一个磁盘之外提供有效的存储,但 RAID-1 需要与 RAID-0 组合,或者作为 RAID-1 阵列的条带,或者跨两个 RAID-0 条带的 RAID-1。

    (我更喜欢前者,因为单个驱动器故障将取出单个 RAID-1 元素,这意味着只有单个驱动器需要重建。对于后者,单个驱动器故障会杀死 RAID-0 元素,这意味着一半更换驱动器时,磁盘将参与重建。)

    这也导致了对“幻像写入”的讨论,其中驱动电子设备报告写入成功,但无论出于何种原因,写入都不会写入磁盘。这确实发生了。考虑到对于 RAID-5 阵列,当您发生驱动器故障时,阵列必须完全读取所有幸存驱动器上的所有扇区才能恢复。NetApp 声称,大容量的驱动器加上大容量的 RAID 组意味着在某些情况下,您在重建过程中失败的几率可能高达十分之一。因此,他们建议大型 RAID 组中的大型磁盘使用双奇偶校验(我认为这与 RAID-6 有关)。

    我在他们的几位工程师进行的 NetApp 技术讨论中了解到这一点。

    • 3
  4. carlito
    2009-08-31T12:38:13+08:002009-08-31T12:38:13+08:00

    没有常见的 RAID 实施通常会检查数据访问的奇偶性。我从来没有见过一个。一些 RAID5 实现为流式读取读取奇偶校验数据,以防止不必要的查找(丢弃每个第 n 个块比让驱动器查找每个第 n 个块更便宜)。RAID1 实现无法检查,因为它们从两个磁盘读取性能(嗯,在绝大多数 RAID1 实现中。少数让您选择,如果一个磁盘比另一个磁盘慢得多并且它不是写密集型的,这可能很有用加载。)

    有些确实会检查背景“擦洗”。在这种情况下,RAID6 胜出,因为它可以恢复数据,而 RAID5 和 RAID1 情况相同,可以识别但不能修复。(这并不完全正确,因为驱动器可能会检测到错误的 CRC,返回错误,并让您从奇偶校验重写块。这种情况很常见)。

    如果您想要数据完整性,请在应用程序层为每个块(或记录,或者无论如何划分)存储一个散列。Sybase 和 Oracle 会这样做(我相信是在页面级别),我曾多次看到它保存了一个巨大的数据库。(例如,控制器开始返回错误数据,sybase 崩溃并出现明显错误,因此当数据库在状态不一致的故障硬件上运行时没有进行任何写入)。

    为您执行此操作的唯一文件系统解决方案和唯一 RAID 解决方案是 ZFS。

    • 3
  5. Ben Quick
    2009-07-30T02:31:20+08:002009-07-30T02:31:20+08:00

    您的朋友是在谈论某些RAID 级别中涉及的奇偶校验位,还是写入磁盘的数据的校验和?

    如果它们是关于奇偶校验的,那么 RAID1 没有奇偶校验位 - 您有两个相同数据的副本。磁盘应该执行校验和,以确保写入磁盘的内容与线路上的内容匹配

    RAID5 确实有一个奇偶校验位。这意味着您可能会丢失 RAID 集中的磁盘,然后继续进行,就好像什么都没发生一样。尽管如此,应该对写入磁盘的数据执行校验和,以确保它与线路上的数据相匹配

    在这种情况下,校验和完全独立于 RAID,RAID 可能会也可能不会用一堆磁盘执行

    编辑添加:您提到从硬件 RAID 迁移到软件 RAID。首选始终是硬件 RAID 而不是软件 RAID。如果您可以购买提供您想要实施的 RAID 级别所需的硬件,我建议您去购买。这将使所有奇偶校验计算都由 RAID 卡而不是主机执行。因此释放主机上的资源。毫无疑问,还有其他好处,但他们现在逃跑了

    • 0
  6. dyasny
    2009-07-30T02:51:05+08:002009-07-30T02:51:05+08:00

    我即将用 Linux 软件 RAID1 阵列替换旧的硬件 RAID5 阵列。我正在和一位朋友交谈,他声称 RAID5 比 RAID1 更强大。

    这将取决于raid 实现类型(硬件/软件)、磁盘、raid 控制器(如果有)以及它的功能。

    他声称,使用 RAID5,读取奇偶校验数据以确保所有驱动器都返回正确的数据。他进一步声称,在驱动器上发生的 RAID1 错误将被忽视,因为没有对 RAID1 进行此类检查。

    它确实有点意义,但不是真的:) 发生的事情是 - 如果写入错误的数据,在镜像上它将被发送到两个驱动器,并且在 raid5 奇偶校验上将生成并传播到驱动器。数据读/写检查由磁盘和控制器固件完成,与raid级别无关。

    So the question is, what do RAID5/RAID1 systems in the real world
    

    实际上呢?RAID5 系统是否在读取时检查奇偶校验数据?是否有 RAID1 系统可以从所有驱动器读取并比较读取的数据?

    正如我所说,检查不是raid算法的一部分,尽管一些控制器可能有一些额外的实现。

    阵列的稳健性取决于驱动器的质量(由于 RV 速率降低,2.5" 驱动器的寿命往往比 3.5" 长;根据我的经验,永远不要购买 maxtor SCSI/SAS 驱动器 - 它们有可怕的固件故障)、环境(温度和湿度控制),控制器本身(它有BBU吗?固件是最新的吗?是真的raid还是fakeraid?),服务器中的PSU数量,UPS质量等。

    • 0
  7. wfaulk
    2009-07-30T05:44:02+08:002009-07-30T05:44:02+08:00

    我不知道,但在我看来不太可能。请记住,为了计算奇偶校验,它必须从 RAID 集中的所有驱动器读取块,然后进行数学运算以确定正确性,而如果没有,它只是读取一个驱动器。

    此外,如果您的读取少于一个块,则奇偶校验读取必须将其扩展为一个完整块,而常规读取则不会。(当然,假设 RAID 块大于磁盘的块。我认为从磁盘读取的数据必须是完整的块。如果不是,我的观点更有效。)

    所以,从我的角度来看,是的,它可以做到这一点,但如果它做到了,那将是低效的,我怀疑是否以这种方式实施。

    不过,我个人对实际实现一无所知。

    • 0
  8. Captain Segfault
    2009-08-05T13:30:05+08:002009-08-05T13:30:05+08:00

    RAID5 系统是否在读取时检查奇偶校验数据?

    这样做真的没有意义。当你发现奇偶校验不匹配时你会怎么做?(你怎么知道哪个块是错的?)

    对于随机读取,检查奇偶校验会很昂贵。通常,您只需查看单个磁盘即可进行随机读取,但如果您想检查奇偶校验,则需要在每次读取时读取所有磁盘。(如果您可以对此做任何事情,那可能仍然有意义!)

    请注意,RAID-1 也有这个问题——当您将 RAID-1 视为两个磁盘的 RAID-5 时,这是有道理的。

    • 0
  9. Bruno
    2009-09-04T18:59:38+08:002009-09-04T18:59:38+08:00

    我一直在思考这个说法,即 RAID-1 的读取速度应该比 RAID-5 快,因为它同时读取两个驱动器。

    现在,因为除非阵列需要重建,否则不会在 RAID-5 上读取奇偶校验,因此在读取方面它实际上等于 RAID-0 阵列,对吗?

    RAID-0 通常被认为是最快的级别(尽管它应该被命名为“AID”​​,因为没有任何冗余)。:-D

    说到 Linux 软件 RAID,一个简单的测试——使用 hdparm——证实了这个理论:我的 RAID-5 阵列总是显示出比我的 RAID-1 阵列更高的读取速度。

    但是:看起来,退化的阵列比正常运行的阵列要慢得多!我刚刚使用 Fedora 9 进行了测试,它在 4 个 WD 1 TB 驱动器上运行,具有不同的 RAID 级别。结果如下:

    降级 RAID-5:读取速度 43 MB/秒 正常 RAID-5:读取速度 240 MB/秒 (!) RAID-1:读取速度 88 MB/秒

    由于允许的磁盘丢失在 RAID-1 和 RAID-5(即一个)中是相同的,我认为 RAID-5 在各个方面都应该优于 RAID-1 - 提供与阵列中使用的磁盘数量相关的更多容量并且相同容错性。这导致了一个结论,即 RAID-6 优于所有其他 RAID 级别,因为它在正常读取时与 RAID-0 一样快(没有从两个奇偶校验磁盘读取奇偶校验),并且在丢失的情况下仍然可以容错数组成员。;-)

    • 0
  10. sybreon
    2009-07-30T03:33:06+08:002009-07-30T03:33:06+08:00

    就个人而言,我认为 RAID 系统的最终测试是它能否承受故障。在这种情况下,RAID5 和 RAID1 都可以处理单个驱动器故障,但两者都无法生存。

    至于您对奇偶校验位的问题,我认为它取决于 RAID 驱动程序。它肯定会在重建期间被读取,但在正常使用时,这样做没有多大意义,因为带宽会浪费在它上面。

    • -1

相关问题

  • Windows 文件服务器性能调优

  • SSD TRIM 的硬件 RAID 控制器支持

  • 了解磁盘队列长度

  • 使用混合磁盘突袭 0?

  • Windows Server 2008 Hyper-V 虚拟化服务器的最佳 RAID 配置?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve