【硬件相关】LSI MegaRAID阵列卡性能调优

发布时间 2023-08-15 10:53:35作者: Luxf0

一、前言

1、锂电池vs超级电容

为保证服务器异常掉电后,存在于缓存的数据不出现丢失,raid卡通常会配置锂电池或超级电容用于保存缓存数据

1.1、锂电池

早期raid卡普遍使用锂电池,当异常掉电后,使用锂电池直接给板载DRAM持续供电,进入DRAM自刷新模式,因此锂电池容量需要足够大,一般被设计为足够支撑板载DRAM持续自刷新72小时,即只要异常掉电后72小时能够再次恢复供电,就不会出现缓存丢失问题
此外,锂电池还有以下两个缺点,使得目前已淘汰锂电池使用方式:

  • 故障率高,丢失数据风险仍然很高
  • 不易于维护,需要记录其充电次数、寿命、电量估算、漏电等数据综合评估,做出相应决策

1.2、超级电容

目前raid卡普遍使用超级电容+Flash子板,当异常掉电后,不需要持续刷新DRAM,只需要掉电之后由超级电容提供数十秒供电时间,将非正常掉电脏数据下刷到Flash中永久保存
与锂电池相对较,有以下优点:

  • 采用SLC Flash,数据持久性可以保存几年,没有丢失数据风险
  • 超级电容可以在50°环境下持续使用5年,维护简单

2、缓存模式

2.1、Read Policy

a、策略说明

用于配置RAID读策略,支持以下策略配置

  • No Read Ahead:关闭预读取功能
  • Read Ahead:开启预读取功能,控制器可以预读取顺序数据或预测需要即将使用到的数据并存储在Cache中
b、配置建议
  • 对于HDD(机械硬盘)而言,读策略设置为Read Ahead性能更优
  • 对于SSD(固态硬盘)而言,读策略设置为No Read Ahead性能更优

2.2、Write Policy

a、策略说明

用于配置RAID写策略,支持以下策略配置

  • Write Back:当控制器Cache收到所有的传输数据后,将给主机返回数据传输完成信号
  • Write Through:当硬盘子系统接收到所有传输数据后,控制器将给主机返回数据传输完成信号
  • Always Write Back:在RAID控制卡无电容或电容损坏的情况下,强制使用“Write Back”模式
b、配置建议
  • Always Write Back模式下,当服务器出现异常下电时,如果电容不在位或者在充电状态下,RAID控制卡中DDR(即Cache)的写数据将会丢失。不推荐使用该模式
  • 对于HDD(机械硬盘)而言,写策略设置为Write Back性能更优
  • 对于SSD(固态硬盘)而言,写策略设置为Write Though性能更优

2.3、IO Policy

用于配置RAID I/O策略,支持以下策略配置

  • direct:默认策略
  • cached

2.4、Driver Cache

a、策略说明

用于配置物理硬盘Cache策略,此操作仅对有Cache的硬盘有效,支持以下策略配置:

  • Unchanged:保持当前硬盘Cache策略
  • Enable:读写过程中数据经过硬盘Cache,使读写性能提升。但当系统意外掉电时,如果没有保护机制,Cache中数据会丢失
  • Disable:读写过程中数据不经过硬盘Cache。当系统意外掉电时,数据不会丢失

二、配置说明

1、缓存配置

1.1、设置RAID组读策略(Read Policy)

storcli /cx/vx set rdcache=ra|nora

注:ra表示为Read Aheadnora表示为No Read Ahead

1.2、设置RAID组写策略(Write Policy)

storcli /cx/vx set wrcache=wt|wb|awb

注:wt表示为Write Throughwb表示为Write Backawb表示为Always Write Back

1.3、设置RAID组IO策略(I/O Policy)

storcli /cx/vx set iopolicy=direct|cached

1.4、设置RAID组硬盘cache(Driver Cache)

storcli /cx/vx set pdcache=on|off

三、配置建议

参考文档:浪潮英信服务器3408&3508系列RAID卡配置手册-RAID卡推荐配置方案

1、配置超级电容

1.1、性能最优方案

磁盘类型 RAID组类型 业务类型 Read Policy Write Policy IO Policy Disk Cache
HDD / / Read Ahead Write Back Direct Enable
SSD 不带校验 / No Read Ahead Write Through Direct Unchanged(不可更改)
SSD 带校验 小数据块随机读写 No Read Ahead Write Through Direct Unchanged(不可更改)
SSD 带校验 大数据块顺序读写 No Read Ahead Write Back Direct Unchanged(不可更改)

注:RAID组类型补充说明

  • 不带校验RAID组:RAID 0/RAID 1/RAID 10
  • 带校验RAID组:RAID 5/RAID 6/RAID 50/RAID 60

1.2、数据安全方案

磁盘类型 RAID组类型 业务类型 Read Policy Write Policy IO Policy Disk Cache
HDD / / Read Ahead Write Back Direct Disable
SSD 不带校验 / No Read Ahead Write Through Direct Unchanged(不可更改)
SSD 带校验 小数据块随机读写 No Read Ahead Write Through Direct Unchanged(不可更改)
SSD 带校验 大数据块顺序读写 No Read Ahead Write Back Direct Unchanged(不可更改)

2、不配置超级电容

不配置超级电容情况下,默认不考虑RAID卡数据安全,选择性能最优方案

磁盘类型 RAID组类型 业务类型 Read Policy Write Policy IO Policy Disk Cache
HDD / / Read Ahead Always Write Back Direct Enable
SSD 不带校验 / No Read Ahead Write Through Direct Unchanged(不可更改)
SSD 带校验 小数据块随机读写 No Read Ahead Write Through Direct Unchanged(不可更改)
SSD 带校验 大数据块顺序读写 No Read Ahead Write Back Direct Unchanged(不可更改)
[root@test3 ~]# storcli /c0/v0 show all
CLI Version = 007.1912.0000.0000 Nov 23, 2021
Operating system = Linux 3.10.0-1160.49.1.el7_lustre.x86_64
Controller = 0
Status = Success
Description = None


/c0/v0 :
======

---------------------------------------------------------------
DG/VD TYPE  State Access Consist Cache Cac sCC       Size Name 
---------------------------------------------------------------
0/0   RAID6 Optl  RW     Yes     RWTD  -   ON  116.417 TB vd1  
---------------------------------------------------------------

VD=Virtual Drive| DG=Drive Group|Rec=Recovery
Cac=CacheCade|OfLn=OffLine|Pdgd=Partially Degraded|Dgrd=Degraded
Optl=Optimal|dflt=Default|RO=Read Only|RW=Read Write|HD=Hidden|TRANS=TransportReady
B=Blocked|Consist=Consistent|R=Read Ahead Always|NR=No Read Ahead|WB=WriteBack
AWB=Always WriteBack|WT=WriteThrough|C=Cached IO|D=Direct IO|sCC=Scheduled Check Consistency

PDs for VD 0 :
============
-----------------------------------------------------------------------------
EID:Slt DID State DG      Size Intf Med SED PI SeSz Model            Sp Type 
-----------------------------------------------------------------------------
0:0      41 Onln   0 14.551 TB SAS  HDD N   N  512B ST16000NM004J    U  -    
0:1      64 Onln   0 14.551 TB SAS  HDD N   N  512B ST16000NM004J    U  -    
0:2      30 Onln   0 14.551 TB SAS  HDD N   N  512B ST16000NM004J    U  -    
0:3      71 Onln   0 14.551 TB SAS  HDD N   N  512B ST16000NM004J    U  -    
0:4      68 Onln   0 14.551 TB SAS  HDD N   N  512B ST16000NM004J    U  -    
0:5      12 Onln   0 14.551 TB SAS  HDD N   N  512B ST16000NM004J    U  -    
0:6      11 Onln   0 14.551 TB SAS  HDD N   N  512B ST16000NM004J    U  -    
0:7      38 Onln   0 14.551 TB SAS  HDD N   N  512B ST16000NM004J    U  -    
0:8      21 Onln   0 14.551 TB SAS  HDD N   N  512B ST16000NM004J    U  -    
0:9      39 Onln   0 14.551 TB SAS  HDD N   N  512B ST16000NM004J    U  -    
-----------------------------------------------------------------------------

EID=Enclosure Device ID|Slt=Slot No|DID=Device ID|DG=DriveGroup
DHS=Dedicated Hot Spare|UGood=Unconfigured Good|GHS=Global Hotspare
UBad=Unconfigured Bad|Sntze=Sanitize|Onln=Online|Offln=Offline|Intf=Interface
Med=Media Type|SED=Self Encryptive Drive|PI=Protection Info
SeSz=Sector Size|Sp=Spun|U=Up|D=Down|T=Transition|F=Foreign
UGUnsp=UGood Unsupported|UGShld=UGood shielded|HSPShld=Hotspare shielded
CFShld=Configured shielded|Cpybck=CopyBack|CBShld=Copyback Shielded
UBUnsp=UBad Unsupported|Rbld=Rebuild

VD0 Properties :
==============
Strip Size = 256 KB
Number of Blocks = 250005684224
VD has Emulated PD = Yes
Span Depth = 1
Number of Drives Per Span = 10
Write Cache(initial setting) = WriteBack
Disk Cache Policy = Disk's Default
Encryption = None
Data Protection = Disabled
Active Operations = None
Exposed to OS = Yes
OS Drive Name = /dev/sda
Creation Date = 23-03-2023
Creation Time = 10:04:40 AM
Emulation type = default
Cachebypass size = Cachebypass-64k
Cachebypass Mode = Cachebypass Intelligent
Is LD Ready for OS Requests = Yes
SCSI NAA Id = 600605b01d36fa262baee0b873d25b0f
Unmap Enabled = N/A

四、相关说明

由服务器硬盘组成的RAID阵列读写IO性能差,需要开启cache缓存提升性能,通常为保证数据安全性,建议配置超级电容用于掉电保护
可通过storcli /c0/cv show all查询超级电容的名称及TFM Flash卡缓存容量的大小等信息
注:如查询信息为Cachevault is absent,则表示无超级电容

[root@test-lustre2 ~]# storcli /c0/cv show all 
CLI Version = 007.1912.0000.0000 Nov 23, 2021
Operating system = Linux 3.10.0-1160.49.1.el7_lustre.x86_64
Controller = 0
Status = Failure
Description = None


Detailed Status :
===============


-------------------------------------------------
Ctrl Status Property ErrMsg                ErrCd 
-------------------------------------------------
   0 Failed -        Cachevault is absent!    34 
-------------------------------------------------