[转帖]raid缓存策略设置

raid,缓存,策略,设置 · 浏览次数 : 0

小编点评

**BBU相对充电状态** 为了记录电池的状态,例如最大和最小电压等,以及为了延长电池的寿命,默认会启用自动校准模式。自动校准模式会监测电池的电压和电流,当电池达到一定的状态时会进行充电或放电操作。 **Learn Cycle** Learn Cycle 是自动校准模式的阶段,在电池达到一定的状态时会进行充电或放电操作。 Learn Cycle 的目的是让电池在充电过程中保持一定的状态,并在放电过程中保持一定的状态。 **Auto-Learn Mode 和 Learn Delay Interval** Auto-Learn Mode 是 Learn Cycle 的自动设置选项,它可以设置 Learn Cycle 的运行模式。默认情况下,Auto-Learn Mode 为 "Enable",这意味着 Learn Cycle 会在电池达到一定的状态时进行充电或放电操作。 Learn Delay Interval 是 Learn Cycle 的一个设置选项,它指定了 Learn Cycle 的启动时间。默认情况下,Learn Delay Interval 为 7 天。 **强制启动Learn Cycle 操作** 如果要强制启动 Learn Cycle 操作,可以使用以下命令: ```bash /usr/local/sbin/MegaCli -AdpBbuCmd -BbuLearn -aALL ``` **修改 Auto-Learn Mode** 如果要修改 Auto-Learn Mode,可以使用以下命令: ```bash echo 'autoLearnMode=1' > /tmp/megaraid.conf ``` **确认是否生效** 可以使用以下命令检查 Auto-Learn Mode 的设置: ```bash /usr/local/sbin/MegaCli -AdpBbuCmd -GetBbuProperties -aALL ``` **其他提示** * 最佳情况下,建议将 Auto-Learn Mode 设置为 "Disable",以避免频繁的 Learn Cycle 操作。 * Learn Delay Interval 的值应该根据电池的规格和使用情况进行设置。 * 如果电池损坏或功能不正常,请尽快更换电池。

正文

RAID卡缓存策略

不同的RAID卡缓存策略对IO的性能影响较大,常见的策略有:

1、写操作策略,可设置为WriteBack或WriteThrough

WriteBack:进行写操作时,将数据写入RAID卡缓存,并直接返回,RAID卡控制器将在系统负载低或者Cache满了的情况下把数据写入硬盘。该设置会大大提升RAID卡写性能,绝大多数的情况下会降低系统IO负载。 数据的可靠性由RAID卡的BBU(Battery Backup Unit)进行保证。

WriteThrough: 数据写操作不使用缓存,数据直接写入磁盘。RAID卡写性能下降,在大多数情况下该设置会造成系统IO负载上升。

2、读操作策略,可选参数:ReadAheadNone, ReadAdaptive, ReadAhead。

ReadAheadNone: 不开启预读。这是默认的设置

ReadAhead: 在读操作时,预先把后面顺序的数据加载入Cache,在顺序读取时,能提高性能,相反会降低随机读的性能。

ReadAdaptive: 自适应预读,当Cache memory和IO空闲时,采取顺序预读,平衡了连续读性能及随机读的性能,需要消耗一定的计算能力。

3、缓存策略,可选参数: Direct, Cached

Direct: Direct IO模式,读操作不缓存到cache memory中,数据将同时传输到controller cache中和应用系统中,如果接下来要读取相同的数据块,则直接从controller cache中获取. Direct IO是默认的设置

Cached: Cached IO模式,所有读操作都会缓存到cache memory中。

4、BBU不可用时策略,可选参数: Write Cache OK if Bad BBU 和No Write Cache if Bad BBU

No Write Cache if Bad BBU: 如果BBU出问题,则关闭Write Cache。由WriteBack自动切换到WriteThrough模式。如果没有特殊要求,强烈建议采用该设置,以确保数据的安全。

Write Cache OK if Bad BBU: 如果BBU出问题,依然启用Write Cache. 这是不推荐的设置,BBU出问题将无法保证断电情况下数据的正常,如果此时依然采用WriteBack模式,遇到断电将发生数据丢失。除非有UPS作额外保证,不然不推荐采用这个设置。

查看MegaSAS RAID卡的Cache策略

##查看MegaSAS RAID卡的Cache策略

/usr/local/sbin/MegaCli -LDInfo -Lall -aALL

输出结果为:

Adapter 0 -- Virtual Drive Information:

Virtual Drive: 0 (Target Id: 0)

Name                :

RAID Level          : Primary-5, Secondary-0, RAID Level Qualifier-3

Size                : 1.633 TB

Sector Size         : 512

Parity Size         : 278.875 GB

State               : Optimal

Strip Size          : 64 KB

Number Of Drives    : 7

Span Depth          : 1

Default Cache Policy: WriteBack, ReadAdaptive, Direct, Write Cache OK if Bad BBU

Current Cache Policy: WriteBack, ReadAdaptive, Direct, Write Cache OK if Bad BBU

Default Access Policy: Read/Write

Current Access Policy: Read/Write

Disk Cache Policy   : Disk‘s Default

Encryption Type     : None

Default Power Savings Policy: Controller Defined

Current Power Savings Policy: None

Can spin up in 1 minute: Yes

LD has drives that support T10 power conditions: Yes

LD‘s IO profile supports MAX power savings with cached writes: No

Bad Blocks Exist: No

Is VD Cached: Yes

Cache Cade Type : Read Only

BBU Learn Cycle
BBU由锂离子电池和电子控制电路组成。 锂离子电池的寿命取决于其老化程度,从出厂之后,无论它是否被充电及它的充放电次数多与少,锂离子电池的容量将慢慢的减少。这意味着一个老电池无法像新电池那么持久。 也就决定了BBU的相对充电状态(Relative State of Charge)不会等于绝对充电状态(Absolute State of Charge)。

为了记录电池的放电曲线,以便控制器了解电池的状态,例如最大和最小电压等,同时为了延长电池的寿命,默认会启用自动校准模式(AutoLearn Mode). 在learn cycle期间, raid卡控制器不会启用BBU直到它完成校准。整个过程可能需要高达12小时。这个过程中,会禁用WriteBack模式,以保证数据完整性,同时会造成性能的降低. 整个Learn Cycle分为三个步骤:
1、控制器把BBU电池充满电(该步骤可能是放电后充电或直接充电,如果电池刚好满电,则直接进入第二阶段)
2、开始校准, 对BBU电池执行放电
3、放电完成后,完成校准,并重新开始充电, 直接达到最大电量, 整个Learn Cycle才算完成
注意: 如果第二或第三阶段被中断,重新校准的任务会停止,而不会重新执行

IBM的服务器默认设置是30天执行一次Learn Cycle, 而DELL是90天。不推荐关闭Auto Learn模式,通过这个校准,能延长电池寿命,不作电池校准的Raid卡,电池寿命将从正常的2年降为8个月

查看RAID卡BBU属性设置:

##查看BBU设置

/usr/local/sbin/MegaCli -AdpBbuCmd -GetBbuProperties -aALL

正常输出结果为:

BBU Properties for Adapter: 0

  Auto Learn Period: 90 Days

  Next Learn time: None  Learn Delay Interval:0 Hours

  Auto-Learn Mode: Disabled

输出结果含义:

Auto Learn Period: 自动校准间隔, 单位秒,IBM的服务器默认设置是30天执行一次Learn Cycle, 而DELL是90天。 该设置无法修改。

Next Learn time: 下一次自动校准的时间,从2000年1月1日算起的秒数,这个设置无法修改,根据上一次自动校准的完成时间加上自动校准间隔计算得来。该时间转化为实际时间时,需要加上RAID卡时间的误差,部分RAID卡时间转成GMT时间后,依然是错误的。

Learn Delay Interval: 自动校准启动后的延迟时间,单位小时,最大设置为7天。该设置只针对下次Learn Cycle,下次Learn Cycle完成后,该值将自动归零。

Auto-Learn Mode: 是否打开自动校准模式

查看RAID卡BBU状态:

## 查看当前BBU状态

/usr/local/sbin/MegaCli -AdpBbuCmd -GetBbuStatus -aALL

正常输出结果为:

BBU status for Adapter: 0

BatteryType: BBU

Voltage: 3913 mV

Current: 0 mA

Temperature: 75 C

Battery State: Optimal

BBU Firmware Status:

  Charging Status              : None

  Voltage                                 : OK

  Temperature                             : OK

  Learn Cycle Requested                             : No

  Learn Cycle Active                      : No

  Learn Cycle Status                      : OK

  Learn Cycle Timeout                     : No

  I2c Errors Detected                     : No

  Battery Pack Missing                    : No

  Battery Replacement required            : No

  Remaining Capacity Low                  : No

  Periodic Learn Required                 : No

  Transparent Learn                       : No

  No space to cache offload               : No

  Pack is about to fail & should be replaced : No

  Cache Offload premium feature required  : No

  Module microcode update required        : No

BBU GasGauge Status: 0x0828

Relative State of Charge: 91 %

Charger Status: Unknown

Remaining Capacity: 410 mAh

Full Charge Capacity: 451 mAh

isSOHGood: Yes

Exit Code: 0x00

输出结果含义:

Charging Status: 当前电池处于什么状态,有Charging, Discharging, None等值,分别代表电池充电,放电,及没有充放电操作的状态

Learn Cycle Requested: Learn Cycle请求,当为Yes时,并且下面的Learn Cycle Active为No, 说明已经开始了Learn Cycle的第一阶段, 此时策略开始变为WriteThrough, 电池将经历一个放电后充电或者充电的过程

Learn Cycle Active: 是否处于Learn Cycle的校准阶段,如果为Yes, 则进入了Learn Cycle的第二阶段,控制器开始校准电池.

Battery Replacement required: 电池是否需要维修,如果为Yes, 请尽快更换电池

Remaining Capacity Low: 剩余电容量低, 如果为Yes, 需要更换电池

当RAID卡写操作策略自动从WriteBack切换为WriteThrough时,可能情况有:

1、BBU损坏

2、BBU正在进行充放电

3、BBU准备进入充放电状态

BBU设置中只有Learn Delay Interval和Auto-Learn Mode两项可以进行设置,Auto-Learn Mode选项不推荐关闭,而Learn Delay Interval最大仅能设置为7天,因此很难通过修改BBU设置来将BBU充放电操作避开业务高峰期。

为避免BBU充放电操作在业务高峰期运行,可以采用以下方式:
1、在非业务高峰期强制启动Learn Cycle,使下一次Learn Cycle错过高峰期。

##强制启动Learn Cycle操作

/usr/local/sbin/MegaCli -AdpBbuCmd -BbuLearn -aALL

2、将自动充放电模式修改为手动,然后在非业务高峰期手动触发。

## 修改Auto-Learn Mode

## 1为Disable, 0为Enable, 从Disable切换到Enable时,Relearn操作会立刻执行

echo ‘autoLearnMode=1‘ >/tmp/megaraid.conf

/usr/local/sbin/MegaCli -AdpBbuCmd -SetBbuProperties -f /tmp/megaraid.conf -aAll

## 确认是否生效

/usr/local/sbin/MegaCli -AdpBbuCmd -GetBbuProperties -aALL

文章知识点与官方知识档案匹配,可进一步学习相关知识
CS入门技能树Linux入门初识Linux24521 人正在系统学习中

与[转帖]raid缓存策略设置相似的内容:

[转帖]raid缓存策略设置

RAID卡缓存策略 不同的RAID卡缓存策略对IO的性能影响较大,常见的策略有: 1、写操作策略,可设置为WriteBack或WriteThrough WriteBack:进行写操作时,将数据写入RAID卡缓存,并直接返回,RAID卡控制器将在系统负载低或者Cache满了的情况下把数据写入硬盘。该设

[转帖]阵列卡缓存模式- 透写(Write Through)和回写(Write Back)

https://www.unicaca.com/info/detail/195.html 分享到: Write Through和Write Back是阵列卡Cache的两种使用方式,也称为透写和回写。 Write Through也是RAID阵列卡的默认模式。 当选用write through方式时,

[转帖]浪潮PM8222-SHBA、RAID 2GB PM8204、RAID 4GB PM8204,阵列卡配置方法

1.8222和8204对比 这几个型号的阵列卡都很相似,配置方法也基本一样 8204就是在8222上的基础上增加了缓存,可以通过下图对比 正面8204比8222多一个掉电保护接口 8204背面多了几个闪存颗粒 2.配置RAID 2.1.UEFI下配置RAID 我个人比较喜欢UEFI引导下配置整列卡,

[转帖]浪潮PM8222-SHBA、RAID 2GB PM8204、RAID 4GB PM8204,阵列卡配置方法

1.8222和8204对比 这几个型号的阵列卡都很相似,配置方法也基本一样 8204就是在8222上的基础上增加了缓存,可以通过下图对比 正面8204比8222多一个掉电保护接口 8204背面多了几个闪存颗粒 2.配置RAID 2.1.UEFI下配置RAID 我个人比较喜欢UEFI引导下配置整列卡,

[转帖]10GB/s 存储方案设计测试:用PCIe 5.0单盘还是SSD RAID?

https://zhuanlan.zhihu.com/p/558884542 - 测试平台介绍 - M.2 NVMe SSD散热方案浅析 - Intel RST RAID的Write Back写缓存适用于SSD吗? - RAID 0、10读写带宽线性提升 - 选择软RAID还是硬RAID? - SL

[转帖]RAID, RAID, RAID

https://zhuanlan.zhihu.com/p/138888698 什么是 RAID RAID (Redundant Array of Inexpensive Disks)由加州伯克利大学的几位教授在上世纪八十年代提出, 刚开始的设想是使用廉价的硬盘, 但是随着越来越多硬盘产商进入这个领域

[转帖]RAID 5写带宽11.7GB/s:当SAS 24G阵列卡嵌入PCIe Switch

https://zhuanlan.zhihu.com/p/576562821 引言:在SAS/SATA RAID卡开始转向Tri-Mode即支持NVMe之后,关于软硬RAID哪个更好的讨论还在继续。而Broadcom和Microchip这两家大厂的手里,正好都掌握着PCIe Switch芯片技术。不

[转帖]【MegaCli】RAID工具管理工具学习与整理

https://blog.yelvlab.cn/archives/608/ 95年小孩写的文章. MegaCli MegaCli是一款管理维护硬件RAID软件,可以通过它来了解当前raid卡的所有信息,包括 raid卡的型号,raid的阵列类型,raid 上各磁盘状态,等等。通常,我们对硬盘当前的状

[转帖]浅谈RAID写惩罚(Write Penalty)与IOPS计算

介绍 通常在讨论不同RAID保护类型的性能的时候,结论都会是RAID-1提供比较好的读写性能,RAID-5读性能不错,但是写入性能就不如RAID-1,RAID-6保护级别更高,但写性能相对更加差,RAID10是提供最好的性能和数据保护,不过成本最高等等。其实决定这些性能考虑的因素很简单,它就是RAI

[转帖]浅谈RAID写惩罚(Write Penalty)与IOPS计算_文字版

https://www.cnblogs.com/IvanChen/p/4491984.html 介绍 通常在讨论不同RAID保护类型的性能的时候,结论都会是RAID-1提供比较好的读写性能,RAID-5读性能不错,但是写入性能就不如RAID-1,RAID-6保护级别更高,但写性能相对更加差,RAID