硬件 RAID 与软件 RAID
RAID,即廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks),其系统的实现方式基本上有两种:软件或专用硬件。两种方法都非常可行,并各有其优点。
在小型企业领域,Intel 与 AMD 架构系统以及 Windows 操作系统占据主导地位,硬件 RAID 极为普遍,以至于围绕软件 RAID 产生了大量的混淆,正如我们将看到的,这在很大程度上要归因于大量被吹捧为专用硬件、俗称“伪 RAID”(Fake RAID)的骗局式软件 RAID 产品。
RAID 最初被开发出来时,是以软件形式应用于运行诸如专有 UNIX 等系统的高端企业级服务器上的,这些系统极为稳定,硬件也非常强大且健壮,使得软件 RAID 运行得非常出色。早期的 RAID 主要侧重于镜像 RAID 或非常简单的奇偶校验 RAID(如 RAID 2),其开销很小。
随着对 RAID 的需求开始蔓延到较小型的服务器领域,以及奇偶校验 RAID 日益流行而需要更强的处理能力来支持,x86 领域中性能不足的处理器受到 RAID(尤其是 RAID 5)处理负载的显著影响,这便成了一个问题。这一点,再加上在这些平台上被大量使用的操作系统几乎都没有软件 RAID 实现,自然而然地催生了硬件 RAID——一种卸载处理器板卡(类似于用于图形处理的 GPU),它在板上拥有自己完整的计算机,配备有自己专属的 CPU、内存和固件。
硬件 RAID 在解决 x86 服务器领域的 RAID 开销问题上发挥得非常出色。随着 CPU 性能的提升以及内存不再稀缺,诸如 Windows Server 之类流行的 x86 操作系统开始提供软件 RAID 选项。具体而言,Windows 软件 RAID 以实现拙劣而著称,并且仅在服务器操作系统版本上提供,这导致主要使用 Windows 工作的系统管理员群体对软件 RAID 缺乏认可。
由于在企业级服务器领域和大众化 x86 领域中各自的历史性实现,这两个市场之间形成了一种自然的分隔,最初由技术所支撑,后来则纯粹由意识形态所支撑。如果你与大众化领域的系统管理员交谈,你几乎无一例外地会听到硬件 RAID 是唯一选择。反之,如果你与大型主机、RISC(Sparc、Power、ARM)或 EPIC(Itanium)服务器(有时称为 UNIX 服务器)领域的系统管理员交谈,你往往会遇到惊讶的反应,因为对于那些类别的系统而言,硬件 RAID 根本无从获得——软件 RAID 干脆就是理所当然的结论。两个阵营似乎都对对方阵营的真实情况缺乏真正的了解,而这两者之间技能集的交叉也相对罕见,直到最近,随着 Linux、Solaris 和 FreeBSD 等企业级 UNIX 平台开始在大众化硬件平台上变得非常流行且为人所熟知,情况才有所改变。
而对于大众化服务器领域来说,更令人困惑的是:为了填补占主导地位的操作系统厂商在非服务器操作系统市场缺乏软件 RAID 所留下的空白,同时试图向技术上不那么精通的目标受众进行营销,大量厂商开始在出售非 RAID 控制器卡的同时,附带一个实际上就是软件 RAID 的“驱动程序”,并伪装成所得产品其实是硬件 RAID。这往好了说造成了大量的混淆,往坏了说则引发了对软件 RAID 的极度鄙视,因为几乎无一例外地,任何核心功能是保护数据、而其市场却建立在欺骗与混淆之上的系统,都将导致灾难。伪 RAID 系统在性能和可靠性方面经常出现问题。虽然理论上第三方软件 RAID 软件包是一个合理的选择,但软件 RAID 市场的现实是:实质上所有高质量的软件 RAID 实现,要么是操作系统本身(Linux、Mac OSX、Solaris、Windows)的原生组件,要么是文件系统(ZFS、VxFS、BtrFS)的原生组件,并由主要厂商提供和维护,这就使得第三方产品几乎没有什么空间或存在的意义——除了在 Windows 桌面领域,那里确实存在少数几个规模不大的正规软件 RAID 参与者,但它们往往被那些伪 RAID 参与者所掩盖。
如今,硬件 RAID 几乎已无必要,因为大众化平台性能强得惊人,而且几乎总是存在大量富余的计算资源和内存资源。硬件 RAID 如今主要是基于功能而非基于降低资源负载来展开竞争。在大众化服务器领域,选择硬件 RAID 还是软件 RAID 几乎完全是一种偏好和市场惯性的问题,而非具体性能或功能的问题——两种平台本质上是对等的,在考量产品选项时,各自的具体实现远比硬件方式与软件方式本身重要得多。
如今,硬件 RAID 产品往往更加“通用”,对标准 RAID 级别采用相当平淡无奇的实现。硬件 RAID 往往通过降低资源占用(CPU 与内存卸载)、对故障磁盘进行“盲换”的能力、简化的存储管理、与操作系统无关地抽象出来的块级存储、靠近磁盘的高速缓存以及带电池或闪存后备的缓存来体现其价值。软件 RAID 往往通过更低的功耗、更低的购置成本、与操作系统集成的管理、独特或先进的 RAID 功能(例如不受标准 RAID 5 写漏洞困扰的 ZFS 的 RAIDZ)以及通常更优的整体性能来体现其价值。这真的不是一场孰优孰劣的讨论,而是针对某个非常具体的情形孰优孰劣的讨论,其中最重要的因素往往是熟悉程度与使用顺手程度,和/或厂商的默认产品。
在硬件 RAID 与软件 RAID 之间,一个最常被忽视却很重要的区别在于,与 RAID 阵列管理相关的工作岗位角色发生了变化。硬件 RAID 将阵列的处理工作转移给了服务器管理员(即从事物理服务器工作、驻守在数据中心的支持角色),而软件 RAID 则将阵列的处理工作转移给了系统管理员(即从事操作系统及以上层面工作、很少坐在数据中心里的支持角色)。在 SMB 市场中,这一因素也许会被完全忽视,但在一家财富 500 强企业中,工作岗位角色上的这种差异可能非常重要。在许多情况下,采用硬件 RAID 时,磁盘更换和系统设置无需系统管理员介入即可完成。数据中心的服务器管理员可以通过告警,或在巡检过程中查找“琥珀色指示灯”来发现故障磁盘,并随时进行更换,而无需联系任何人,甚至无需知道这台服务器究竟运行的是什么。而软件 RAID 几乎总是需要系统管理员参与,去管理故障磁盘的下线、与数据中心协调更换流程,并在更换流程完成后将新磁盘上线。
由于 CPU 卸载与性能的运作方式,也由于非标准 RAID 实现在处理奇偶校验 RAID 重建方式上的某些优势,存在这样一种倾向:镜像 RAID 级别更青睐硬件 RAID,而软件 RAID 级别更青睐奇偶校验 RAID。奇偶校验 RAID 对 CPU 的占用要密集得多,因此能够动用高性能的中央 CPU 资源可能是加速 RAID 运算的一个重要因素。但对于镜像 RAID 而言,其 RAID 重建远比奇偶校验 RAID 安全,且自动化重建更为重要,此时硬件 RAID 则带来了能够非常轻松地进行盲换磁盘的好处。
硬件 RAID 与软件 RAID 之争中有一个极为矛盾的方面:那个常常不假思索地将软件 RAID 斥为劣于硬件 RAID 的市场,与那个认为文件服务器劣于大众化 NAS 设备的市场(你可以在脑海中想象出这里的维恩图)几乎完全重叠,然而 SMB 区间内的那些 NAS 设备,却几乎无一例外地正是基于那些被随意斥责的同样的软件 RAID 实现。所以它常常被同时视为既劣又优。SMB 区间内一些基于软件 RAID 的 NAS 设备和 NAS 设备软件包括:Netgear ReadyNAS、Netgear ReadyData、Buffalo Terastation、QNAP、Synology、OpenFiler、FreeNAS、Nexenta 和 NAS4Free。
对于硬件 RAID 与软件 RAID,真的不存在“一律使用某一种方式”的说法。即便是六位数价格的巨型企业级 NAS 和 SAN 设备,对于该采用哪一种也莫衷一是,行业中有一部分朝着各自的方向发展。真正的答案是这取决于你的具体情形——你的岗位角色分工、你的技术需求、你的经验、你的预算等等。两种选择在任何组织中都是完全可行的。
