首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MegaRAID:各卷之间的性能差异

MegaRAID:各卷之间的性能差异
EN

Server Fault用户
提问于 2021-02-23 18:52:07
回答 1查看 658关注 0票数 1

我有一个MegaRAID SAS 9361-8i,RAID1中有2x240GB的SATA6Gbps SSD,RAID6中有4x10TB的SATA12Gbps硬盘,RAID5中有4x480 Gbps的SATA6Gbps SSD:

代码语言:javascript
复制
-----------------------------------------------------------------------------
DG Arr Row EID:Slot DID Type  State BT       Size PDC  PI SED DS3  FSpace TR 
-----------------------------------------------------------------------------
 0 -   -   -        -   RAID1 Optl  N  223.062 GB dflt N  N   dflt N      N  
 0 0   -   -        -   RAID1 Optl  N  223.062 GB dflt N  N   dflt N      N  
 0 0   0   8:2      13  DRIVE Onln  N  223.062 GB dflt N  N   dflt -      N  
 0 0   1   8:5      16  DRIVE Onln  N  223.062 GB dflt N  N   dflt -      N  
 1 -   -   -        -   RAID6 Optl  N   18.190 TB enbl N  N   dflt N      N  
 1 0   -   -        -   RAID6 Optl  N   18.190 TB enbl N  N   dflt N      N  
 1 0   0   8:0      9   DRIVE Onln  N    9.094 TB enbl N  N   dflt -      N  
 1 0   1   8:1      11  DRIVE Onln  N    9.094 TB enbl N  N   dflt -      N  
 1 0   2   8:3      10  DRIVE Onln  N    9.094 TB enbl N  N   dflt -      N  
 1 0   3   8:4      12  DRIVE Onln  N    9.094 TB enbl N  N   dflt -      N  
 2 -   -   -        -   RAID5 Optl  N    1.307 TB dflt N  N   dflt N      N  
 2 0   -   -        -   RAID5 Optl  N    1.307 TB dflt N  N   dflt N      N  
 2 0   0   8:6      14  DRIVE Onln  N  446.625 GB dflt N  N   dflt -      N  
 2 0   1   8:7      17  DRIVE Onln  N  446.625 GB dflt N  N   dflt -      N  
 2 0   2   8:9      15  DRIVE Onln  N  446.625 GB dflt N  N   dflt -      N  
 2 0   3   8:10     18  DRIVE Onln  N  446.625 GB dflt N  N   dflt -      N  
-----------------------------------------------------------------------------

---------------------------------------------------------------
DG/VD TYPE  State Access Consist Cache Cac sCC       Size Name 
---------------------------------------------------------------
0/0   RAID1 Optl  RW     Yes     NRWBD -   ON  223.062 GB VD0  
1/1   RAID6 Optl  RW     Yes     RWBD  -   ON   18.190 TB VD1  
2/2   RAID5 Optl  RW     Yes     NRWBD -   ON    1.307 TB VD2  
---------------------------------------------------------------

---------------------------------------------------------------------------------------
EID:Slt DID State DG       Size Intf Med SED PI SeSz Model                     Sp Type 
---------------------------------------------------------------------------------------
8:0       9 Onln   1   9.094 TB SAS  HDD N   N  512B HUH721010AL5200           U  -    
8:1      11 Onln   1   9.094 TB SAS  HDD N   N  512B HUH721010AL5200           U  -    
8:2      13 Onln   0 223.062 GB SATA SSD N   N  512B Micron_5100_MTFDDAK240TCC U  -    
8:3      10 Onln   1   9.094 TB SAS  HDD N   N  512B HUH721010AL5200           U  -    
8:4      12 Onln   1   9.094 TB SAS  HDD N   N  512B HUH721010AL5200           U  -    
8:5      16 Onln   0 223.062 GB SATA SSD N   N  512B Micron_5100_MTFDDAK240TCC U  -    
8:6      14 Onln   2 446.625 GB SATA SSD N   N  512B Micron_5100_MTFDDAK480TCC U  -    
8:7      17 Onln   2 446.625 GB SATA SSD N   N  512B Micron_5100_MTFDDAK480TCC U  -    
8:9      15 Onln   2 446.625 GB SATA SSD N   N  512B Micron_5100_MTFDDAK480TCC U  -    
8:10     18 Onln   2 446.625 GB SATA SSD N   N  512B Micron_5100_MTFDDAK480TCC U  -    
---------------------------------------------------------------------------------------

在这些VDs上测试写入速度:

代码语言:javascript
复制
# lvcreate -ntest1 -L32G vg /dev/sda
# lvcreate -ntest2 -L32G vg /dev/sdb
# lvcreate -ntest3 -L32G vg /dev/sdc
# for i in 1 2 3; do sleep 10; dd if=/dev/zero of=/dev/vg/test$i bs=128M count=256 oflag=direct; done
34359738368 bytes (34 GB, 32 GiB) copied, 120.433 s, 285 MB/s  (test1/VD 0)
34359738368 bytes (34 GB, 32 GiB) copied, 141.989 s, 242 MB/s  (test2/VD 1)
34359738368 bytes (34 GB, 32 GiB) copied, 26.4339 s, 1.3 GB/s  (test3/VD 2)

# for i in 1 2 3; do sleep 10; dd if=/dev/vg/test$i of=/dev/zero bs=128M count=256 iflag=direct; done
34359738368 bytes (34 GB, 32 GiB) copied, 35.7277 s, 962 MB/s  (test1/VD 0)
34359738368 bytes (34 GB, 32 GiB) copied, 147.361 s, 233 MB/s  (test2/VD 1)
34359738368 bytes (34 GB, 32 GiB) copied, 16.7518 s, 2.1 GB/s  (test3/VD 2)

并行运行dd:

代码语言:javascript
复制
# sleep 10; for i in 1 2 3; do dd if=/dev/zero of=/dev/vg/test$i bs=128M count=256 oflag=direct & done
34359738368 bytes (34 GB, 32 GiB) copied, 28.1198 s, 1.2 GB/s  (test3/VD 2)
34359738368 bytes (34 GB, 32 GiB) copied, 115.826 s, 297 MB/s  (test1/VD 0)
34359738368 bytes (34 GB, 32 GiB) copied, 143.737 s, 239 MB/s  (test2/VD 1)

# sleep 10; for i in 1 2 3; do dd if=/dev/vg/test$i of=/dev/zero bs=128M count=256 iflag=direct & done
34359738368 bytes (34 GB, 32 GiB) copied, 16.8986 s, 2.0 GB/s  (test3/VD 2)
34359738368 bytes (34 GB, 32 GiB) copied, 35.7328 s, 962 MB/s  (test1/VD 0)
34359738368 bytes (34 GB, 32 GiB) copied, 153.147 s, 224 MB/s  (test2/VD 1)

VD0和VD1的值是很糟糕的,值得注意的是,在我删除和重新创建VD0和VD1之前,VD2的值与其他的VD2相似,但由于它们包含数据,所以我无法对其他的VD0和VD1进行修改。

我唯一可以解释的限制是VD2的读取速度,它大约是SATA链路速度的三倍--这对于一个有四个磁盘的RAID5来说是有意义的。VD0的读取速度略低于SATA链路速度的两倍,这可能是媒体的限制,也可能是RAID1中请求的非最佳交织,但两者都是可以接受的。

其他数字对我来说毫无意义。控制器显然能够更快地处理数据,并且并行性能与孤立地查看卷没有显着性差异,这也表明它没有选择瓶颈数据路径。

我对这种情况的解释是,从BIOS创建卷,而不是从StorCLI创建卷,某种程度上给了它们一个次优配置。比较来自storcli /c0/v0 show allstorcli /c0/v2 show all的输出并没有显示出无法解释的差异,所以我担心这个错误在堆栈中的某个更深的地方。

  • 是否有已知的配置问题或错误可以解释这种行为?
  • 是否有分析瓶颈配置的工具,或者如果没有,
  • 我可以以某种方式导出内部配置值,以便在卷之间进行比较吗?
EN

回答 1

Server Fault用户

发布于 2021-02-23 23:03:49

首先,dd并不是一个很好的磁盘性能测试工具。您所做的只是测试流、顺序读写。dd在同步读操作和写操作之间交替进行,因此您正在测试的设备在操作之间存在“死区”。

是的,RAID5和RAID6阵列中的多个驱动器甚至允许旋转磁盘保持SSD RAID1镜像的有效性能,或者,对于RAID5数组中的多个SSD,实际上超过了SSD RAID1镜像的性能。

只要你是按顺序传输大量数据。

但是尝试对那些RAID5和RAID6数组进行随机的小块写入,观察性能直线下降(特别是旋转磁盘上的VD .)虽然SSD上的RAID1不会看到任何接近性能下降的地方。

如果要尝试在旋转磁盘上对该RAID6数组执行512个字节的随机写入,那么您的性能可能是几十kb/秒。

当您将小块写入随机位置时,在RAID5和RAID6上发生的是“读-修改-写入”。还记得当您创建RAID5或RAID6数组时选择“条带大小”或“段大小”时吗?根据控制器的不同,这是用于计算奇偶校验的块中的数据量,或者是用于计算奇偶校验的每个数据磁盘的数据量。你选了什么? 64K? 128 K? 2MB是因为“越大越快”?(不,这不是.)用于计算RAID5或RAID6数组上奇偶校验的数据量通常称为“条带大小”。因此,如果您在一个由4个磁盘组成的RAID5数组(3个数据,一个奇偶)上选择了一个2MB的段大小,并且您的控制器将该2MB作为每个磁盘的值,这意味着条带大小为6MB。(不,没有真正的“奇偶校验磁盘”--奇偶校验数据分布在所有磁盘上。但是,这是一种方便的方式,可以考虑保存数据和奇偶校验所需的更大空间。)

而6MB实际上成为您可以操作的RAID数组上最小的数据块。

那么,如果你把512字节写到6MB条纹的中间,你认为会发生什么呢?

控制器必须从所有驱动器中读取整个条带,用新的512字节更新该块的正确部分,重新计算整个条带的奇偶校验,然后将条带和奇偶校验写回所有磁盘。

现在,有许多的优化,好的RAID控制器可以并且确实对“读-修改-写入”操作进行优化,所以您很少看到完全的影响,但从逻辑上讲,这是必须发生的。最终,您可以向任何控制器抛出足够多的小随机写入,使其优化IO和隐藏底层糟糕性能的能力不堪重负。

在旋转硬盘时,控制器必须等待驱动器头找到合适的磁道--这是SSD不需要做的事情。

因此,sequential,流大块写入性能对RAID5和RAID6数组可以非常好。但是,随机的小块写入性能是可怕的,使用大段/条大小通常会加剧这种可怕。旋转盘就更糟了。

IO操作的对齐也很重要。如果您的文件系统块与RAID6 5/RAID6 6条带不对齐,那么您最终会执行过多的读-修改-写入操作。您知道有多少文件系统有6MB的块大小?那将是“没有”。这也是为什么RAID 5/6阵列上的大段/条大小不好的另一个原因,以及您经常看到RAID 5/6阵列具有两个大小的数据磁盘的原因,因此RAID条带大小可以与文件系统块大小相匹配(或小于)。

阅读表演?你在VD0和VD2上已被禁用:

代码语言:javascript
复制
---------------------------------------------------------------
DG/VD TYPE  State Access Consist Cache Cac sCC       Size Name 
---------------------------------------------------------------
0/0   RAID1 Optl  RW     Yes     NRWBD -   ON  223.062 GB VD0  
1/1   RAID6 Optl  RW     Yes     RWBD  -   ON   18.190 TB VD1  
2/2   RAID5 Optl  RW     Yes     NRWBD -   ON    1.307 TB VD2  
---------------------------------------------------------------

这就是NRCache专栏中的意思--不提前阅读。毫不奇怪,VD1在顺序的流式读取性能上破坏了VD0和VD2--控制器可以在VD1上提前读取,并缓存等待下一次读取请求的数据(还记得我之前说过dd在执行数据移动的另一半时留下了“死区时间”吗?),但是它不能在VD0或VD2上提前读取。

票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1054776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档