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基本可以发挥这块盘的所有性能,通过以上测试数据可以发现:
- RAID1使用两块盘,读能发挥出两块盘的性能,而写性能基本与单块盘一致,说明可以同时从两块盘读取不同的数据内容,而写时需要将相同的数据写在两块盘中。
- 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 解决方案。