您的典型 Web 服务器驱动器配置是什么?通常我会有一个驱动器用于操作系统,一个驱动器用于数据。数据驱动器通常是 RAID 5,但我记不清我以前推荐过什么用于操作系统驱动器。RAID 1 是否理想?
答案1
我在一家大型托管公司工作,在我的企业部门中看到的最常见的东西(不一定是我推荐的,但我看到的)是假设服务器是独立的/使用本地存储,是一个 RAID 1 OS 阵列和一个 RAID5 数据阵列。
现在,随着硬盘越来越大,RAID 5 确实变得不那么理想了,因为在单驱动器重建期间遇到 URE 的可能性相当高。
但是,由于您似乎特别询问操作系统驱动器,是的,RAID 1 是标准的并且通常足够了,除非您要从该驱动器运行其他应用程序。
答案2
我经营着一家数据中心,并且是一家大型托管业务的 CTO。我们强烈建议大家永远不要使用 RAID 5。
尽可能使用优质 SAN
RAID5 每个条带仅使用一个奇偶校验驱动器,并且许多 RAID5 阵列都有 5 个(如果您的数量不同,请适当调整计算)驱动器(4 个数据和 1 个奇偶校验,尽管它不是像 RAID 3 和 4 中那样保存所有奇偶校验的单个驱动器,但可以读取)。
RAID 5 很浪费,但 RAID 10 和 RAID 1 也同样浪费: 如果您有 10 个驱动器或每个驱动器 20GB,那么 200GB 的 RAID5 将使用 20% 进行奇偶校验(假设您将其设置为两个 5 个驱动器阵列),因此您将拥有 160GB 的存储空间。
现在,由于 RAID10 与镜像 (RAID1) 一样,为每个主驱动器使用 1 个(或更多)镜像驱动器,因此您将使用 50% 来实现冗余,因此要获得相同的 160GB 存储空间,您将需要 8 对或 16 - 20GB 驱动器,这就是 RAID5 如此受欢迎的原因。本介绍仅用于说明情况。
RAID5 在物理上与 RAID0 类似,是一个条带集,但包含数据恢复功能。RAID5 在每个条带块中保留一个磁盘块用于奇偶校验数据。奇偶校验块包含一个错误校正代码,可以纠正 RAID5 块中的任何错误,实际上它与剩余的数据块结合使用,以重新创建由于驱动器发生故障而丢失的任何单个丢失块。RAID5 相对于 RAID3 和 RAID4 的创新之处在于奇偶校验以循环方式分发,以便可以独立读取来自多个驱动器的不同块。这就是 RAID5 比 RAID3 和 RAID4 更受欢迎的原因,因为 RAID3 和 RAID4 必须同步从所有驱动器一起读取同一个块。因此,如果驱动器 2 发生故障,则块 1、2、4、5、6 和 7 是此驱动器上的数据块,而块 3 和 8 是此驱动器上的奇偶校验块。因此,这意味着如果在新驱动器替换驱动器 2 之前或在重建新的驱动器 2 替换件期间请求块 1,则驱动器 5 上的奇偶校验将用于从磁盘 2 重新创建数据块。同样,驱动器 1 上的奇偶校验将用于修复块 2,驱动器 3 上的奇偶校验将修复块 4,等等。对于块 2,所有数据都安全地保存在剩余驱动器上,但在重建驱动器 2 的替换件期间,将从块 2 数据计算出新的奇偶校验块并将其写入驱动器 2。
RAID 5 读写惩罚:现在,当从阵列读取磁盘块时,RAID 软件/固件会计算哪个 RAID 块包含磁盘块、磁盘块位于哪个驱动器上以及哪个驱动器包含该 RAID 块的奇偶校验块,并仅读取一个数据驱动器。它返回数据块。如果您稍后修改数据块,它会通过减去旧块并添加新版本来重新计算奇偶校验,然后在两个单独的操作中写入数据块,然后写入新的奇偶校验块。为此,它必须首先从包含该条带块奇偶校验的驱动器读取奇偶校验块,然后从原始驱动器重新读取更新块的未修改数据。这种读-读-写-写被称为 RAID5 写入惩罚,因为这两次写入是连续且同步的,为了安全起见,写入系统调用不能返回,直到重新读取和两次写入都完成,所以对于相同容量的阵列,写入 RAID5 的速度比 RAID0 慢 50%。 (一些软件 RAID5 通过在内存中保留原始块的未修改副本来避免重新读取。)
RAID10 是 RAID1(镜像)和 RAID0(条带化)的可能组合之一。过去人们对 RAID01 或 RAID10 的含义感到困惑,不同的 RAID 供应商对它们的定义也不同。大约五年前,我提出了以下标准语言,该语言似乎已广为流传。当 N 个镜像对条带化在一起时,这被称为 RAID10,因为镜像(RAID1)在条带化(RAID0)之前应用。另一种选择是创建两个条带集并将它们镜像到另一个,这被称为 RAID01(因为首先应用 RAID0)。在 RAID01 或 RAID10 系统中,每个磁盘块都完全复制到其驱动器镜像中。从性能方面来看,RAID01 和 RAID10 在功能上是等效的。不同之处在于恢复期间,RAID01 会遇到一些我将描述的与 RAID5 相同的问题,而 RAID10 则不会。
现在,如果 RAID5 阵列中的某个驱动器坏了、被移除了或被关闭了,则通过读取剩余驱动器的块并使用奇偶校验计算丢失的数据来返回数据,假设坏了的驱动器不是该 RAID 块的奇偶校验块驱动器。请注意,对于每五个磁盘块中的四个,需要进行 4 次物理读取才能替换丢失的磁盘块(对于 5 个驱动器阵列),这会导致性能下降 64%,直到发现问题并映射新驱动器以开始恢复。恢复期间性能会进一步下降,因为所有驱动器都在被主动访问以重建替换驱动器(见下文)。
如果 RAID10 阵列中的某个驱动器发生故障,则数据会通过一次读取从其镜像驱动器返回,当需要从损坏的对中获取两个不连续的块时(因为无法从两个驱动器并行读取这两个块),性能只会略有下降(对于整个 4 对阵列而言,平均为 6.25%),否则不会产生任何性能下降。
人们开始明白到底发生了什么,以及为什么我不喜欢 RAID5,但是,正如他们在深夜电视广告中所说的那样,事情还不止于此。
除了我不知道自己缺少的一点表现之外,还有什么问题?
好的,这引出了今天的最后一个问题:RAID5 的问题是什么?它确实可以恢复故障驱动器,对吗?因此写入速度较慢,我没有足够的写入来担心它,缓存也有很大帮助,我有很多缓存!问题是,尽管现代驱动器的可靠性得到了提高,大多数驱动器上的错误校正代码也得到了改进,甚至尽管 EMC 在每个 Clariion 驱动器磁盘块上都添加了 8 个字节的错误校正(如果您有幸使用 EMC 系统),驱动器仍然有可能变得不稳定并开始返回垃圾。这被称为部分介质故障。现在 SCSI 控制器保留了数百个磁盘块以进行重新映射,以用未使用的扇区替换衰落的扇区,但如果驱动器运行正常,这些扇区不会持续很长时间,并且会耗尽,并且 SCSI 不会向操作系统报告可纠正的错误!因此,您不会知道驱动器变得不稳定,直到为时已晚,没有更多的替换扇区并且驱动器开始返回垃圾。 [请注意,最近流行的 IDE/ATA 驱动器 (TMK) 的硬件中不包括坏扇区重新映射,因此垃圾会更快地返回。] 当驱动器返回垃圾时,由于 RAID5 永远不会在读取时检查奇偶校验(顺便说一下,RAID3 和 RAID4 会这样做,并且两者在数据库启动方面的表现都比 RAID5 更好),当您将垃圾扇区写回时,将计算垃圾奇偶校验,您的 RAID5 完整性将丢失!同样,如果驱动器发生故障,并且剩余驱动器之一不稳定,则替换驱动器将使用垃圾重建,这也会将问题传播到两个块,而不仅仅是一个。
需要更多吗?在恢复期间,RAID5 阵列的读取性能会降低多达 80%。一些高级阵列允许您将偏好配置为更倾向于恢复或更倾向于性能。但是,这样做会增加恢复时间,并增加在恢复完成之前丢失阵列中的第二个驱动器的可能性,从而导致灾难性的数据丢失。另一方面,RAID10 只会恢复 4 个或更多对中的一个驱动器,并且只有从恢复对读取的性能会降低,从而使阵列整体的性能下降仅约 20%!此外,恢复期间没有使用奇偶校验计算时间 - 这是直接的数据复制。
那么丢失第二个驱动器怎么办呢?使用 RAID10 时不会有危险,除非正在恢复的镜像也发生故障,而且这比 RAID5 阵列中任何其他驱动器发生故障的可能性低 80% 或更多!而且由于大多数多驱动器故障都是由未检测到的制造缺陷引起的,因此您可以通过确保使用来自不同制造商的批号的驱动器镜像每个驱动器,将这种可能性降至最低。(“哦”,您会说,“这种情况似乎不太可能!”唉,当一批 200 个 IBM 驱动器开始发生故障时,我们在两周内丢失了 50 个驱动器。IBM 发现,单个驱动器在运行了这么多小时后,主轴轴承会冻结。幸运的是,部分由于 RAID10,部分由于 DG 技术人员和我们自己的人员在两周内付出的巨大努力,没有数据丢失。但是,在恢复期间第二个驱动器发生故障后,一个 RAID5 文件系统完全丢失。幸运的是,一切都在磁带上。
结论?为了安全和性能,首先选择 RAID10,其次是 RAID3,第三是 RAID4,最后是 RAID5!RAID2-5 规范的最初原因是磁盘成本高昂,使得 RAID1 和镜像不切实际。现在情况已经不同了!驱动器是商品价格,即使是最大、最快的驱动器,其绝对价格也比当时便宜,每 MB 的成本只是当时的一小部分。RAID5 是否还有意义?显然我认为没有意义。
换个角度来看:如果一个驱动器的价格为 1000 美元(大多数驱动器的价格都远低于这个数字),那么从 4 对 RAID10 阵列切换到 5 个驱动器 RAID5 阵列将节省 3 个驱动器或 3000 美元。技术人员、数据库管理员、经理和客户加班、磨损和损失的成本是多少,甚至恢复恐慌的成本是多少?性能下降和客户满意度可能下降的成本是多少?最后,如果数据无法恢复,业务损失的成本是多少?
从 BAARF 网站复制而来 - 但确实值得注意。
尽可能使用 RAID 10 - 花在额外的磁盘上。
答案3
假设应用程序没有从中运行而只是托管操作系统文件,那么 RAID 1 应该完全足够了。
如果您在操作系统卷上运行任何其他应用程序,则需要考虑负载。
答案4
如果速度和可靠性很重要,RAID0+1 应提供最佳性能(无需计算奇偶校验),最多可承受两个驱动器故障。但并非所有控制器都支持它。