写点什么

技术实践 | 如何给 NVMe 做 RAID

作者:沃趣科技
  • 2022 年 3 月 04 日
  • 本文字数:2841 字

    阅读完需:约 9 分钟

技术实践 | 如何给NVMe做RAID

1.传统 RAID

硬盘阵列(Redundant Arrays of Independent Disks,RAID),是由很多块独立的硬盘,组合成一个容量巨大的硬盘组。


1.1 阵列卡

现如今,基本所有的服务器都通过 RAID 卡对硬盘进行管理。硬盘插入到服务器的槽位后由背板的线缆连接 RAID 卡进行一个统一的管理,然后提供给操作系统,操作系统不能直接使用硬盘。

以下为一些常见的 RAID 级别:


  • RAID 0

将数据分成若干相等大小的数据块,把他们写在不同的硬盘上,以独立的方式实现多块硬盘的并读访问,并发执行 I/O 操作。基本能够发挥出所有硬盘的性能,但是 RAID0 没有冗余机制,硬盘越多固然性能越好,然而出现故障导致卷组不可用的概率也越高。建议配合上层应用能够提供冗余的场景一起使。


  • RAID 1

当上层数据下发时,会将数据完全一致地写在两块硬盘上,实现数据冗余,可以用两块硬盘中读取数据,提升读性能。当一块硬盘发生故障,系统自动从另一块硬盘读取数据,提高可靠性,但是成本更高,适用于对数据可靠性要求高的应用,如:将系统盘放在 RAID 1 上面。


  • RAID 5

将数据和相对应的奇偶校验信息分别存储在不同的硬盘上,奇偶校验信息占一个硬盘的空间,允许损坏一个硬盘。当一个硬盘损坏时,可以根据剩余的数据和相对应的奇偶校验信息计算出损坏的数据,恢复数据时性能会受到较大的影响。RAID 5 写性能偏低,尤其是随机写性能,建议在读写不太频繁的场景上使用,如:用作数据备份。


  • RAID 6

与 RAID 5 相似,拥有两套独立的奇偶校验信息,可以允许损坏两块硬盘。


1.2 缓存策略

RAID 卡除了将硬盘组建不同 RAID 级别的功能之外,还能提供加速读写的缓存功能。

每张 RAID 卡都拥有大小不等的缓存。


  • Read Policy

1、Read Ahead:预读缓存模式,将当前读取的后续块数据也预先读取保存在缓存中,可以快速对应后续的读取操作。当第二次读取相同的数据时,不需要再次从硬盘里面读取数据,频繁读取的热点数据保存在缓存中,可以大大提升读性能。 2、No Read Ahead:不通过缓存进行读取操作。


  • Write Policy

1、Write Back:WB 回写模式,该模式会将上层的数据先写入 RAID 卡缓存当中,再将缓存中的数据写入硬盘中,对于上层应用而言,当数据写入缓存中时就已经认为落盘成功了,因此 WB 模式可以提升写性能。 2、Write Througt:WT 直写模式,该模式会直接将数据写入到硬盘当中。


开启 WB 模式的前提是 RAID 卡带有电池,确保在服务器断电的情况下依然能将缓存里面的数据写入硬盘中。当服务器的 RAID 卡电池出现故障或者电量不足的情况,WB 模式会被强制切换成 WT 模式,防止出现数据丢失,然而读策略不会受到任何影响,这是因为写到缓存里面的数据是脏数据,与硬盘里面的数据不一致,而读到缓存里面的数据与硬盘里面的数据完全一致,即使丢失了也没有任何关系。


WB 模式能够提升写性能,这有个前提是上层下发的数据量不大,可以被 RAID 卡缓存所容纳,但是当上层下发大量数据时,缓存很快就会被击穿。我们可以通过一个实验去验证,将一块硬盘的写策略调整为 WB 模式,然后利用 fio 工具去模拟上层数据下发


可以看到,当上层有大量数据下发时,缓存很快就被击穿,写性能呈现断崖式下划


1.3 性能对比

上文提到了各个 RAID 级别的特点及优劣势,下面我们通过 fio 工具测试,直观的感受一下不同 RAID 的性能。


一块盘 RAID0 基本可以发挥这块盘的所有性能,通过以上测试数据可以发现:

  1. RAID1 使用两块盘,读能发挥出两块盘的性能,而写性能基本与单块盘一致,说明可以同时从两块盘读取不同的数据内容,而写时需要将相同的数据写在两块盘中。

  2. RAID5 使用三块盘,读能基本能发挥出三块盘的性能,但是写性能不高,尤其是随机写性能更是惨不忍睹


2.VROC

现如今,对硬盘的性能要求越来越高,SATA、SAS 因为本身的缺陷,性能基本不会超过 600MiB/s,因此对 NVMe 盘的需求越来越多,尤其是数据库等对底层硬件性能要求比较高的行业。


NVMe 盘直通到 cpu,无法通过 RAID 卡进行管理,因此也不能通过 RAID 卡去创建不同的 RAID 级别。目前给 NVMe 做 raid 的方式有两种,一种是软 RAID,另一种是 Intel VROC


  • 软 RAID

软 RAID 的实现没有硬件参与,完全通过软件模仿磁盘阵列的方式来实现,通过 CPU 内核计算 RAID 逻辑


  • Intel VROC

Intel VROC 是一种混合 RAID 解决方案。它的属性与硬件 RAID 类似,是因为英特尔卷管理设备(英特尔 VMD)的一项关键芯片功能是通过新的英特尔至强可扩展处理器提供的。英特尔虚拟 RAID on CPU (VROC)利用英特尔 VMD 来聚合 NVMe 固态盘,从而实现可引导 RAID。英特尔 VROC 还具有软件 RAID 等属性。例如:它使用一些 CPU 内核来计算 RAID 逻辑。由于这种软件与芯片相结合,英特尔 VROC 称为混合 RAID 解决方案。


2.1 VROC 的使用方式

目前,英特尔至强可扩展处理器基本都支持 VMD,但是并不是 cpu 支持就可以使用 VROC 了,需要满足以下几个条件:

1.VMD 是一个比较新的技术,需要将服务器的引导模式调整为 UEFI 引导模式。

2.需要 VROC Key,Intel VROC 是一种通过 OEM 或 ODM 与支持服务级别协议一起销售的许可产品。Intel VROC 硬件密钥是获取 Intel VROC 软件许可的机制。某些 OEM/ODM 通过在其主板上添加密钥标头,构建了支持 Intel VROC 的服务器和工作站。每个 VROC Key 的售价在 100 美金左右。


VROC Key 有几个不同的型号,每个型号 Key 的功能都有一些差别,有些型号的 Key 可以支持其余品牌的 NVMe 盘,但是出于兼容性考虑,还是不建议使用其余品牌的 NVMe 盘 。

3.服务器支持,并不是每一台服务器都可以安装 VROC Key,需要服务器的主板有相应的槽位可以插入 VROC Key。


2.2 VROC 与软 raid

VROC 的管理方式以及系统上面的展示与软 RAID 非常相似。VROC 与软 RAID 都使用 mdadm 的命令进行管理,VROC 需要安装相对应版本的 mdadm rpm 包。


rpm –U mdadm-4.0-13.1.IntelVROC6.0.el7.x86_64.rpm
复制代码


VROC 与软 RAID 这么相似,那么在性能上有什么差距吗?我们可以通过实验看一下


  • RAID 0


为了效果更加明显,使用了三块盘创建 RAID0,结果显示 VROC 与软 RAID 没有明显的性能差距


  • RAID 1


VROC 与软 RAID 组建 RAID1 各项性能基本一致


  • RAID 5


VROC 与软 RAID 组建的 raid5 各项性能基本一致,但是两者的写性能都是偏低的,通过观察 cpu 的使用率可以发现,VROC 与软 RAID 都是单核进程,所在 core 的使用率也已经被打满了,cpu 的性能也是制约 RAID5 写性能的一项因素


通过以上的测试可以发现,VROC 与软 RAID 的性能基本是一致的,因为两者都需要使用 cpu 内核去来计算 RAID 逻辑。而 VROC 有硬件的支持,具备了一些其他的功能


2.3 VROC 其余功能

1.可引导 RAID

VROC 可以作为系统盘使用,VROC 有硬件的支持,在没有安装操作系统之前就可以在 BIOS 里面使用 NVMe 盘创建 RAID,然后再将系统安装在这块 raid 卷组上面。


2.备份功能

VROC 拥有热备功能,当检测到设备故障时,热备盘可用于重建 RAID


3.NVMe 盘定位

NVMe 盘一直没有很好的方式去定位,而 VROC 可以准确定位到 NVMe 盘

ledctl locate=/dev/nvme0n1
复制代码

通过以上命令可以使指定的 NVMe 盘闪灯


3.总结

性能方面,VROC 与软 RAID 基本一致。软 RAID 的优势是不需要额外的成本,而 VROC 优势是有硬件的支持,具备一些特性(可引导 RAID、NVMe 盘定位等),以及有 Intel 的技术服务。两者各有优势,所以,可以根据实际的需求去选择使用哪一项技术

发布于: 刚刚阅读数: 2
用户头像

沃趣科技

关注

玩转数据库生态的技术迷 2022.02.23 加入

还未添加个人简介

评论

发布
暂无评论
技术实践 | 如何给NVMe做RAID_raid_沃趣科技_InfoQ写作平台