做运维的朋友,应该会经常做服务器硬盘的 RAID,常规的 RAID 卡有一些通用的参数配置,这里简单总结一下。
采购建议
好的 RAID 卡会比较影响服务器硬盘的 IO 性能,目前主流应该是带有大容量缓存,以及配戴电池(BBU)的 RAID卡。
如:戴尔 DELL PERC H730P 是 2G 缓存带电池的卡。
参数详解
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 Back
比Write 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 | # Write Policy |
常用操作:
1 | # 查看 RAID 卡支持 |
EXSI 安装 MegaCli
1 | esxcli software vib install -v /tmp/vmware-esx-MegaCli-8.07.06.vib --no-sig-check |