网络 RAID 表示法标准(SAM RAID Notation)
随着网络 RAID 的出现使 RAID 格局变得愈发复杂,人们迫切需要一套更复杂、更简洁的表示法,用以表示涉及网络组件的 RAID 级别。
传统 RAID 采用单个数字来表示,可用的级别有 0、1、2、3、4、5、6、7。其中级别 7 并非官方级别,但被广泛接受为三重奇偶校验 RAID(即 RAID 5 和 RAID 6 的自然延伸),而 RAID 2 和 RAID 3 如今实际上已被弃用。
嵌套 RAID,即一种 RAID 级别嵌套在另一种之中,通过把单个数字的 RAID 级别拼接起来来表示,例如 RAID 10、50、61、100 等。这些也可以改用加号分隔各级别来书写,例如 RAID 1+0、5+0、6+1、1+0+0 等。
这套表示法存在两个主要问题,这还不算那个显而易见的问题——即单数字体系并未涵盖所有 RAID 类型或扩展,诸如 ZRAID、XRAID 和 BeyondRAID 等专有 RAID 系统的许多特性在该表示法中都没有得到体现。第一个问题是缺乏网络 RAID 的表示法,第二个问题是缺乏对 RAID 内部配置的具体标注。
网络 RAID 主要分为两种关键类型:同步和异步。同步网络 RAID 的运作方式与其非联网的对应形式实际上完全相同。异步则功能相同,但带来了额外的风险,因为在某个设备发生故障时,数据可能尚未在各设备之间完成同步。因此,这两者之间的区别需要在表示法中体现出来。
同步 RAID 应当用圆括号来标注。因此,两个本地 RAID 10 系统通过网络做镜像(如同 DRBD 那样)将标注为 RAID 10(1)。就风险和容量计算而言,其有效 RAID 级别与任何 RAID 101 相同,但这一标注让各方一眼就能看出该镜像是跨网络进行的。
异步 RAID 应当用方括号来标注。因此,两个本地 RAID 10 系统通过网络异步做镜像将标注为 RAID 10[1],从而清楚地表明系统中存在一段有风险的延迟。
此外还有一种需求,即在更高的文件系统层级进行另一种类型的复制(如同 rsync 那样),它虽然与 RAID 并无真正的关联,但对冷数据提供了类似的功能,并且常常出现在关于 RAID 的讨论中,我认为存储工程师也需要有能力对其加以标注。这种异步的文件系统层级复制可以用花括号来标注。只需要一种标注,因为文件系统层级的复制总是异步的。举例来说,两个 RAID 6 阵列通过一套块差分文件系统复制系统自动同步,将标注为 RAID 6{1}。
为了进一步简化 RAID 表示法,既省去显然需要反复书写“RAID”一词的麻烦,也使我们摆脱该缩写究竟代表什么这一传统干扰,从而能够专注于其相关的复制层面,应当使用一个简单的“R”前缀。这样,RAID 10 就简单地写作 R10。或者一个纯粹联网的镜像可以写作 R(1)。
这就只剩下 RAID 表示法的一个主要方面有待处理了,那就是阵列中每个组件的规模。这一点往往是隐含的,但某些 RAID 级别,尤其是那些嵌套的级别,可能存在被传统表示法所遗漏的复杂性。知道一个阵列中驱动器的总数,并不总能确定某个特定阵列的具体配置。例如,一个 24 盘的 R10 通常被假定为十二对镜像组成的 R0 条带。但它也可能是八组三重镜像组成的 R0 条带。或者甚至可能是六组四重镜像。或者四组六重镜像。或者三组八重镜像。或者两组十二重镜像。虽然其中大多数极不可能出现,但仍然需要对其加以标注。对于每组的规模,我们使用一个上标数字来表示该组的大小。一般来说,只需对阵列的某一个方面加以标注即可,而非全部,因为其他方面可以推导出来,但在拿不准时,也可以将其显式标注。
因此,一个使用三路镜像组的 R10 阵列将写作 R130。在无法书写上标的情况下,你也可以把它写作 R1^3+0。这种表示法并不说明阵列的完整规模,而只说明其配置类型。如果所有可能的上标都被包含进去,那么仅凭这些就可以计算出阵列的完整规模。如果我们有一个由四组三路镜像构成的 R10,我们可以把它写作 R1304,这会告诉我们整个阵列由十二块驱动器组成–或者用另一种表示法写作 R1^3+0^4。
组的上标表示法仅在其不显而易见时才有必要使用。例如,R10 在没有其他标注的情况下,就隐含着其 R1 组件是镜像对。R55 几乎总是需要额外的标注,除非该阵列仅由九个成员组成。
还有一个需要考虑的方面是标注阵列规模。这比上标表示法简单得多,而且几乎总是完全够用的。它免去了用长格式书写“一个四盘的 RAID 10 阵列”的麻烦。我们可以为此使用一个前缀来替代。4R10 就表示一个四盘的 RAID 10 阵列。
那么回过头来看我们上面的例子,那个使用三路镜像组的十二盘 RAID 10 可以写作 12R1304。但同时使用全部三个数字就变得冗余了。其中任何一个数字都可以省去。通常被省去的会是最后一个,因为它最不可能有用。R1 组的规模有助于确定基本风险,而开头的 12 则用于容量和性能计算,以及机箱规格选型与采购。末尾的四由另外两个数字隐含给出,单独看实际上毫无用处。因此,书写这个阵列的最佳方式就是简单地写作 12R130。如果同一个阵列要采用常见的镜像对方式而非三路镜像,我们就只需写作 12R10,以表示一个十二盘的标准 RAID 10 阵列。
