raid basic configure

1. raid 控制器 基本 策略

选项
raid write policy
disk cache
read ahead policy
I/O policy
strip size

2. raid write policy (写策略)

2.1. write back

在该模式下,raid 控制器在数据加载到控制器的缓存后就会立即给 I/O 请求返回确认信息
write back 模式在大多数情况下都能够提供更好的写性能。
但如果 raid 缓存中的数据在写入硬盘前,突然断电,数据就会有丢失的风险。

如要避免数据在断电时丢失,需要 BBU(backup battery status)

2.2. write through

在该模式下,不会使用 raid 控制器的缓存来加速写IO请求,在大多数情况下该模式都慢于 write back 模式
因为数据都直接写到物理硬盘上。

3. disk cache (硬盘缓存)

硬盘缓存策略决定了硬盘的写缓存是否开启。
当 raid write policy 设为 write through 时, 硬盘缓存策略对系统的写性能影响很大
因为此时,如果 关闭 disk cache 所有操作,都要等待数据写到硬盘

相反,如果 raid write policy 设为 write back 时, 硬盘缓存策略对系统的写性能影响很小
但是,在开启 disk cache 时,如果突然断电也会存在丢失数据的风险。

4. read ahead policy (读策略)

read ahead 决定 raid 控制器读取数据时,是只读一个块(block)的数据,还是整个条带(strip)的数据。
该设置对 raid 读性能影响很大

4.1. No Read Ahead

raid卡 在收到请求后,仅读取一个块的数据,在业务随机读取比较多的场景下可以选用该策略。

4.2. Always Read Ahead

raid卡 在收到请求后,会读取整个条带的数据放到raid cache中,每个 read 操作都会消耗比较多的资源
在这种模式下,对顺序读取的业务会有很好的性能提升。

4.3. Adaptive Read Ahead

该策略下由 raid卡 根据读请求的类型自行调整是否预取。可以说是,结合了上述2种策略的优点。
在不清楚读取类型时,可以选用自适应模式。

5. I/O policy

raid卡 的I/O 策略决定了是否保留 raid cache 中的数据,如果请求读的都是同一块数据,
raid cache 则直接返回数据

5.1. Direct I/O

直接读取,不使用 raid cache 功能,大多数场景下都可以使用。

5.2. Cache I/O

在此策略下,raid卡 都会把读、写请求 先从 raid cache 中获取和更新。
如果是读请求,都是同一去数据,则 raid cache 直接返回数据。
如果是写操作,则根据 raid write policy 的不同而不同。

6. strip size

条带大小决定了数据怎么分布到硬盘中,同样由于硬盘数量的原因,条带的大小也可能决定了一次I/O请求
需要访问多少硬盘。

通常条带大小较大(512KB 或 1MB)的话特别适合顺序读取较多的业务,因为单块读取的数据更多。

如果业务类型是随机访问,系统性能则依赖访问数据块的大小和分配的条带大小的值
比较数据库系统中,单个记录是16KB(比如MySQL 一个页的大小默认是 16KB),条带大小也是 16KB的情况下,
raid卡 就能很好的提高系统的性能。