标签: 北京硬件开发 2026-01-10 次
RAID(独立磁盘冗余阵列)技术,是将多块磁盘驱动器整合为阵列或RAID卷的方式,核心是把数据分散(条带化)存储在不同驱动器上。借助多块磁盘的吞吐量来访问数据集,RAID能提升性能;而通过为数据集添加校验信息,或是将一组磁盘的数据镜像到另一组,又能增强数据的可靠性和可用性。这在磁盘发生故障时,能有效避免数据丢失或应用停机。

RAID技术已问世数十年,在搭配中等容量机械硬盘(HDD)的传统配置中应用广泛、为人熟知。但存储行业发展迅猛,2024年的各类新型存储技术,也给RAID带来了诸多新挑战。
机械硬盘的容量逐年攀升,校验型RAID的可靠性却随之下降。究其原因,是磁盘故障后的数据重建耗时变得越来越长。如今单块20TB以上的硬盘,重建数据可能需要数周时间,而在这段高负荷的重建期内,阵列中另一块磁盘出现故障的概率也会大幅增加。
另一个打破现状的技术是NVMe。这类驱动器带来了吞吐量的飞跃,却也需要大量的计算资源来完成校验信息的计算,以及故障后的磁盘重建。这也是NVMe搭配RAID的实现过程并非易事的原因之一。
当NVMe通过网络连接时,复杂度又上了一个台阶。瞬时的网络问题很难与磁盘I/O错误区分开来,开发人员必须对RAID的逻辑进行调整,以适配这种网络部署模式。
上文的图表展示了服务器中NVMeRAID重建时的状态——即便是性能极强的128核CPU,也会有大量核心因校验信息的重新计算而被占满至100%。
硬件RAID控制器
多家厂商都推出了实现RAID功能的硬件产品,其具体实现方式因支持的协议不同,存在显著差异。SATA磁盘的性能、延迟和扩展要求最低,这让硬件RAID逻辑的集成难度也更小。如今大多数主流计算平台,都在主板的南桥芯片中集成了SATARAID支持,且相关管理功能可在BIOS中实现。
硬件RAID的应用,历来与SAS协议联系最为紧密——毕竟RAID最初就是在数据中心普及的,而彼时SCSI协议在数据中心中占据主导地位(本文暂不讨论网络附加存储,相关内容会在文末提及)。对于SAS磁盘而言,硬件RAID通常是最贴合的解决方案,当然也存在一些特殊情况。硬件RAID之所以适用于SAS环境,主要得益于以下几项特性:
1.SAS磁盘需专用主机总线适配器:与SATA不同,SAS磁盘的连接功能并未集成在芯片组中。即便是自带SAS接口的服务器,也依赖独立的SAS控制芯片。既然已经为连接功能投入成本,将RAID计算任务也交由该芯片处理,无疑是合理的选择。
2.配备外部端口:SAS适配器的型号繁多,多数产品既带有连接服务器背板的内部端口,也配备了连接SAS磁盘扩展柜(JBOD)的外部端口,部分产品则两者兼具。这为部署带来了极高的灵活性,也提升了系统的扩展能力——单块适配器理论上可连接数百块SAS磁盘,并将其纳入RAID卷的组成部分。
3.自带写入缓存:大多数磁盘会划分一部分板载内存作为回写缓存。利用内存缓冲写入操作,能显著提升磁盘性能,却也会牺牲一定的可靠性。一旦发生紧急断电(EPO),易失性内存缓存中的数据会丢失,进而可能导致数据损坏或丢失(目前该领域已有新技术出现,利用机械硬盘上的NAND闪存来保存缓存数据,但这一特性仅适用于最新款的大容量机械硬盘)。出于数据丢失的风险考量,大多数环境中都会禁用机械硬盘的回写缓存。而硬件RAID适配器则能在不增加数据风险的前提下,提供回写缓存功能。和磁盘类似,适配器可划分部分板载内存作为缓冲以提升写入性能,同时还能为适配器配备电池备份单元(BBU),在紧急断电时保护缓存中的数据。
4.兼容性出色:硬件RAID基本实现了即插即用。所有配置信息都存储在适配卡中,磁盘管理功能可在主机操作系统启动前,通过适配器的BIOS进行操作。这意味着主机系统会将RAID卷识别为物理磁盘,既降低了操作系统的管理开销,也让硬件RAID能与几乎所有操作系统兼容。
而就NVMe而言,目前市面上的硬件RAID方案选择十分有限。三大主流硬件RAID厂商中,仅有一家推出了NVMeRAID的实现产品。尽管该产品具备SASRAID卡的一些经典实用功能,却在应对多块NVMe磁盘的高性能需求时力不从心,甚至可能成为系统性能的瓶颈,具体原因如下:
-ASIC芯片的IOPS上限:即便是最新的RAID控制芯片,其可处理的IOPS(每秒输入/输出操作数)也存在上限。如今主流的PCIe4.0NVMe固态硬盘,单块性能就能突破100万IOPS,仅3-4块这样的磁盘,就可能将RAID适配器的性能占满。
-PCIe带宽瓶颈:RAID适配器位于磁盘与CPU之间的PCIe总线上,系统性能会受限于单个PCIe插槽的带宽。
-延迟增加:NVMe技术成功的关键因素之一,就是低延迟。这得益于磁盘直接连接到PCIe总线,固态硬盘与CPU之间没有任何中间设备,从而能保证尽可能低的延迟。而在磁盘与CPU之间增加硬件层,会引入额外延迟,抵消NVMe的这一核心优势。
软件RAID
为主机系统实现RAID功能的另一种方式,是使用软件RAID或卷管理器。这类产品能提升服务器存储分配的灵活性,同时赋予数据可靠性和性能优化的特性。市面上的相关产品种类繁多,且大多与特定操作系统绑定。这也是软件RAID的一大短板——不同操作系统间的数据迁移会变得更为困难,也对存储管理员的专业技能提出了更高要求。
软件RAID的实现形式各有不同,既有Linux内核中的mdraid这类轻量的抽象层产品,也有Veritas、LVM、StorageSpaces这类功能丰富的大型卷管理器,还有ZFS、btrfs这类集成了RAID功能的文件系统。尽管形式多样,这些软件RAID方案仍有一些核心共性:
1.利用主机资源(CPU和内存)来提供数据服务;
2.与操作系统绑定(Veritas等少数产品除外,大多数软件RAID仅支持有限的几种操作系统);
3.灵活性高、功能丰富,通常与底层硬件解耦,可支持多种类型的存储设备,甚至能在同一个RAID组中混合使用不同设备。
软件RAID的核心优势在于灵活性。只要操作系统能将底层存储设备识别为磁盘驱动器,软件RAID就能对其进行管理。同一套软件,既能对接本地的SATA、SAS、NVMe、甚至USB协议设备,也能支持光纤通道(FC)、iSCSI等网络块存储,以及新一代的NVMeoverFabrics(NVMeoF)目标设备。
主机资源占用和性能表现,是软件RAID面临的主要问题。在性能方面,大多数软件RAID产品搭配机械硬盘时表现良好(但大容量磁盘的重建耗时依然很长,若对重建速度有严苛要求,就需要考虑散列RAID等更先进的技术),搭配固态硬盘时开始出现性能瓶颈,而面对NVMe时,性能则会大打折扣。这主要是因为这些软件的代码库,最初是为机械硬盘的性能水平设计的,无法适配NVMe所带来的高并行度、超大IO操作量和吞吐量。不过也有一个值得关注的例外——XinnorxiRAID,这款产品从设计之初,就针对NVMe和其他固态硬盘进行了优化。
在主机资源占用方面,大多数软件RAID产品处理机械硬盘级别的吞吐量,以及RAID1、RAID10这类简单的RAID逻辑时,不会对主机系统造成明显影响。但当面对每秒数十万甚至数百万的IOPS,以及数十GB的吞吐量时,软件RAID就会消耗大量主机资源,甚至可能抢占业务应用的资源。而xiRAID则利用了现代x86CPU中一项并不常用的特性——高级矢量扩展指令集(AVX),并采用了无锁架构,能将计算任务均匀分配到各个CPU核心。这一方案经过了数年的研发打磨,效果十分显著:即便面对每秒数千万的IOPS,也能实时计算RAID校验信息,且对主机资源的影响微乎其微。同时,该方案还能在磁盘故障时实现快速的RAID重建,最大限度缩短数据丢失风险升高和性能下降的窗口期。

硬件RAID
优点:
-跨操作系统兼容;
-配备带电池备份的写入缓存;
-管理便捷,且易在服务器间迁移;
-提供物理连接功能;
-不占用主机系统资源;
-搭配机械硬盘及大多数SATA/SAS固态硬盘时,性能表现稳定可靠。
缺点:
-需单独采购硬件,且服务器需有空闲的扩展插槽;
-引入额外的延迟;
-对支持的磁盘、服务器、磁盘扩展柜、线缆等,有严格的兼容性列表限制;
-固件存储空间有限,难以通过软件更新获得新功能;
-功能集相对简单;
-无法对接网络设备;
-搭配NVMe时易成为性能瓶颈。
软件RAID
优点:
-与硬件无关,可混合使用不同容量、不同接口的磁盘;
-拥有众多免费方案可选;
-灵活性高、功能丰富;
-支持网络存储设备;
-可通过软件更新轻松新增功能。
缺点:
-与特定操作系统绑定;
-占用主机资源(CPU和内存)(该问题已在xiRAID中得到解决);
-搭配NVMe时性能表现不佳(该问题已在xiRAID中得到解决);
-无写入缓存和物理端口。
2024年,哪种RAID方案更优?
答案依旧是视使用场景而定。
-对于大多数SATA配置,主板集成的RAID控制器,或是操作系统自带的卷管理器,基本就能满足需求;
-对于SAS环境,最贴合的选择是使用硬件RAID适配器;
-若部署规模大,且采用大容量磁盘,可考虑使用商用的高级软件RAID产品,或采用散列化技术;
-对于Linux系统下的NVMe/NVMeoF环境,xiRAID是性能和灵活性兼具的最佳方案;
-对于Windows及其他操作系统,目前硬件RAID或软件镜像可能是最优选择,也可持续关注我们的技术研发动态,以及基于数据处理单元(DPU)的新型产品。