0%

服务器 RAID 卡参数配置

做运维的朋友,应该会经常做服务器硬盘的 RAID,常规的 RAID 卡有一些通用的参数配置,这里简单总结一下。

采购建议

好的 RAID 卡会比较影响服务器硬盘的 IO 性能,目前主流应该是带有大容量缓存,以及配戴电池(BBU)的 RAID卡。

如:戴尔 DELL PERC H730P 是 2G 缓存带电池的卡。

server-raid

参数详解

Strip Size (条带大小)

64K-128K 比较平衡。一般数据库推荐更小,文件服务器推荐更大,考虑512KB

Access Policy(进入策略)

通常采用 RW 模式。

Write Policy(写入策略)

写入策略对顺序写入性能影响比较大(应用其实基本上都是顺序写)。

这个配置一般有三个选项:Write Through(透写)、Write Back(回写)、Write Back with BBU

Write Through(透写) 并不利用 Raid 卡的 Cache,直接与磁盘进行交互。

Write Back(回写)是先写 Raid 卡缓存,再传入磁盘。因为写入缓存,操作系统就认为成功了,所以测试会发现写入性能非常快。

如果带有缓存与电池推荐使用强制 Write Back With BBU 方式,但是注意电池充放电周期时会回退到 Write Through。追求极致性能可以采用强制 Write Back(当 BBU 出现问题时可能会丢数据)。举例比如我是个 Web 应用服务器或者爬虫服务器,服务器上除了安装系统,不会存有效数据,可以直接使用 Write Back

如果硬盘是 SATA 的 SSD ,场景需要具体测试决定看怎么样会比较快(如看 Raid 缓存大小和性能是否收益,比如 RAID5 回写会提高写性能,RAID0 不受影响),

Tips 在《MySQL 技术内幕-InnoDB存储引擎》 第二版第9章,性能调优部分。有关于 Write Policy 的介绍,根据作者实测 MySQL,Write BackWrite Through 快将近 40 倍差距。即使是 innodb_flush_log_at_trx_commit=0 情况下,也要快 50% 差距。

Read Policy (读取策略)

只对读有影响。预读是指是否读取整个 Strip Size 条带大小。

Read-ahead (预读,适合顺序读),
Adaptive Read Ahead(自适应,通常情况下混合场景推荐),
No-Read-Ahead(Normal非预读,一般在 Windows 服务器下推荐)

开启预读对顺序读影响很大测试会差20%-40%性能。

SATA SSD 应当关闭预读。

IO/Cache Policy (IO策略)

决定是否保存数据在 RAID 缓存中

推荐 Direct IO,因为通常文件系统或应用都有缓存机制。不会对 Read Policy 有任何影响。

Disk/Drive Cache Policy (磁盘缓存策略)

开启磁盘缓存会有数据丢失的风险,如果 RAID 卡带有比较大缓存和电池,应该关闭,因为开启也不会有太大的效果。

如果 RAID 卡只有缓存不带电池,也应该关闭,因为风险是一致的。

如果使用 Write Through,那么开启缓存可以提高顺序写性能。

RAID 信息查看工具

可以使用 MegaCli64 工具进行 RAID 信息查看,以上信息除了Strip Size (条带大小),都是可以通过该工具动态调整的。

MegaCli 支持所有主流的操作系统,甚至是虚拟化的 EXSI。

不过命令比较复杂,可以通过下面的地址查阅:

https://www.broadcom.com/support/knowledgebase/1211161498596/megacli-cheat-sheet--live-examples

MegaCli64 下载地址:

ftp://download2.boulder.ibm.com/ecc/sar/CMA/XSA/ibm_utl_sraidmr_megacli-8.00.48_linux_32-64.zip

常用命令

配置项缩写:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Write Policy
WT (Write through
WB (Write back)

NoCachedBadBBU
CachedBadBBU

# Read Policy
NORA (No read ahead)
RA (Read ahead)
ADRA (Adaptive read ahead)

# IO/Cache Policy
Cached
Direct

# Disk Cache Policy
DisDskCache
EnDskCache

常用操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 查看 RAID 卡支持
/opt/MegaRAID/MegaCli/MegaCli64 -AdpAllInfo -aALL

# 查看 RIAD 卡全部信息(型号、缓存级别,电池、当前 RAID 信息,物理磁盘信息)
/opt/MegaRAID/MegaCli/MegaCli64 -cfgdsply -aALL

# 查看当前 RAID 级别以及配置
/opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aALL

# 查看硬盘信息
/opt/MegaRAID/MegaCli/MegaCli64 -PDList -aALL

# 查看电池信息
/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -aAll

# 设置 Write Policy 为
/opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp WB -Lall -aAll

# 设置 Write Policy BBU
/opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp CachedBadBBU -Lall -aAll

# 设置 Disk Cache Disabled
/opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp DisDskCache -Lall -aAll

# 设置 IO Prolicy
/opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp Direct -Lall -aAll

# 设置 Read Prolicy
/opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp ADRA -Lall -aAll

EXSI 安装 MegaCli

1
esxcli software vib install -v /tmp/vmware-esx-MegaCli-8.07.06.vib --no-sig-check