创立于 2008 年 · 数字版 · 2026年6月15日

SMB IT Journal

面向小型企业的信息技术资源

中文
存储

什么是 RAID 100?

RAID 10 是当今使用中最重要且最常用的 RAID 级别之一。当然,RAID 10 就是所谓的复合 RAID 或嵌套 RAID,即一个 RAID 级别嵌套于另一个之内。就 RAID 10 而言,“最底层”的 RAID 级别,也就是直接接触物理驱动器的那一层,是 RAID 1。嵌套 RAID 的命名法是:最左边的数字是直接接触物理驱动器的那一层,而右边的每一个数字则是接触那些阵列的 RAID。

因此 RAID 10 就是若干个 RAID 1(镜像)组共同组成一个 RAID 0(无奇偶校验条带化)组。有一种相当常见的术语用法,主要由 HP 所倡导,甚至把 RAID 1 也称为只是 RAID 10 的一个子集——即一个 RAID 0 长度为一的 RAID 10 阵列。这无疑是一种思考 RAID 1 的古怪方式,但它实际上使许多讨论和比较计算变得更容易,并且以一种实用的方式对大多数存储从业者来说是讲得通的。把 RAID 1 视为可能的最小 RAID 10 条带规模的一个“特殊名称”,从而允许所有 RAID 10 的排列组合作为一个计算连续体而存在,这是讲得通的。

同样地,HP 还把连接到 RAID 控制器上的单个驱动器也称为条带长度为一的 RAID 0 组。因此,当从这个角度来看时,把那套术语应用到 RAID 10 的世界里实际上更为显而易见且合乎情理。然而,如今无论是 HP 还是任何其他供应商,都没有把这种相同的命名奇癖应用到其他阵列类型上,比如把 RAID 5 称为 RAID 50 的子集,或把 RAID 6 称为 RAID 60 的子集,尽管它们完全可以像 RAID 1 之于 RAID 10 那样以同样的方式被这样看待。

如果我们采用同样的逻辑,并把它带到(无论是比喻意义上还是字面意义上的)下一个层级,我们就可以取多个 RAID 10 阵列,并在另一个 RAID 0 中把它们条带化在一起。这看起来很奇怪,但可以讲得通。其结果是一个由若干 RAID 10 组成的条带,或者,把它完整写出来,就是一个由若干(由若干镜像组成的条带)组成的条带(我们通常自上而下地陈述 RAID,但命名法是自下而上的)。因此,由于这是物理驱动器上的 RAID 1、由那些镜像组成的一个条带、然后再由那些所得阵列组成的一个条带,我们就得到了 RAID 100(R100)。

当然,RAID 100 既罕见又古怪。然而,有一家极其重要的 RAID 控制器制造商使用了 R100,因此其下游集成供应商也随之使用了它:具体来说就是 LSI 和 Dell。

幸运的是,由于无奇偶校验条带几乎不引入什么行为上的怪异之处,并且开销或延迟几乎为零,这种做法其实并不成问题,尽管它可能导致大量的混淆。就一切实际意图和目的而言,当每一个 RAID 10 子集彼此完全相同时,RAID 100 的行为方式与 RAID 10 完全一样。

理论上,一个 RAID 100 可以由许多互不相同、由不同驱动器类型、主轴数量和速度构成的 RAID 10 组组成。理论上,一个 RAID 10 也可以由互不相同的 RAID 1 组组成,但这在潜在或可能的变化上要受限得多。理论上,如果不加约束,RAID 100 可能会做出一些相当离奇的事情。不过在实际操作中,任何 RAID 100 的实现很可能都会像 LSI 的实现那样,强制执行标准化,并要求每一个 RAID 10 子集在控制器所能强制执行的范围内尽可能完全相同。因此每一个子集实际上都将是统一的,从而使整体行为与把相同的驱动器配置为 RAID 10 时相同。

由于其行为与 RAID 10 保持完全相同,因此存在一种极其强烈的倾向,即为了避免混淆而不把该阵列称为 RAID 100,而干脆把它称为 RAID 10。这本来运作得很好,只可惜存在一个半必要的怪癖:在构建一个 RAID 100 时,需要能够指定底层 RAID 10 组的几何结构。LSI 以及因此而来的 Dell 都要求,在设置一个 RAID 100 组时,你必须指定底层的 RAID 10 几何结构,但由于该阵列被标记为 RAID 10,这就讲不通了。这确实是一种离奇的情形。

更使事情复杂化的是,由于希望维持一种使用 RAID 10 而非 RAID 100 的表象,正确的术语被弃之不用,于是底层的 RAID 10 成员不被称为“RAID 10 阵列”或“RAID 10 子集”,而是干脆被称为“跨区(span)”。然而,跨区是一个在存储中用于指代其他东西的术语,在这里并不恰当地适用。跨区在任何条件下都绝不是对一个 RAID 10 组的恰当描述。

但如果我们同意使用“跨区”这个术语来指代一个 RAID 100 阵列的某个 RAID 10 子集,我们就可以相当容易地往下推进。那么,只要有可能,我们就希望跨区尽可能多,以便把底层的 RAID 10 子集保持得尽可能小。如果我们把它们做得足够小,它们实际上就会坍缩为 RAID 1 组(HPE 那种条带规模为一的古怪 RAID 10),而我们的 RAID 100 就会坍缩为一个 RAID 10,只不过消失的是中间的那个条带,而非外侧的那个条带!是很离奇,但很实用。

那么我们在现实生活中如何应用这一点呢?相当容易。在一个 RAID 100 阵列中,我们必须指定要使用的跨区数量。由于我们希望每个跨区包含两个物理驱动器设备,从而使每个跨区都是一个简单的 RAID 1,我们只需要取 RAID 100 阵列中驱动器的总数(我们称之为 N),然后将其除以二。因此,一个正常的 RAID 100 阵列所需的跨区数量就是 N/2。这意味着,如果你有一个两驱动器的阵列,你需要一个跨区。四个驱动器,两个跨区。六个驱动器,三个跨区。二十四个驱动器,十二个跨区。以此类推。

不要害怕 RAID 100。对普通用户来说,它只是需要一些关于如何选择正确跨区数量的额外知识。如果这能够被自动计算并保持隐藏,从而让最终用户能够以 RAID 10 的方式来看待这些阵列,那将是理想的。或者,把它一致地标记为 RAID 100,以便清楚地表明跨区必须代表什么。又或者,当然,干脆使用 RAID 10 而非 RAID 100。但鉴于现实的实际状况,处理 RAID 100,一旦理解之后,是很容易的。

标签raid RAID 100

广告

SMB IT Journal — the IT resource for small business