Exadata FAQ: cache写策略何时会变为write-through模式 ?

http://www.dbaleet.org/exadata_faq_when_raid_cache_write_policy_will_become_write_through/

 

前面的文章介绍了磁盘/flash cache的两种写策略:write-back和write-through,write-through模式会影响Exadata I/O的性能。那么cache的写策略合何时会变为write-through呢?以下简单的介绍几种常见的场景,从而尽可能的避免发生这样的情况:

1. 一种最典型的是电池供电不足导致cache写策略会自动从write-back模式变为write-back模式。这里说的的电池是通用性术语,磁盘阵列控制器的电池专指备用电池单元(Battery Backup Unit 也叫BBU),flash F20卡中专指双电曾电容器(Electric double-layer capacitor也叫EDLC)。如果电池的容量不足以维持特定长一段时间(通常是24小时)的数据时,磁盘阵列控制器的cache模式就会从write-back自动变为write-through。

2. 第二种情况实际是第一种情况的特殊情况: 比如Exadata第一次加电的时候,一般磁盘阵列的cache策略是write-through模式,经过了一段时间以后就自动变为write-back了。这是因为Exadata在出厂之前其磁盘控制器的电量本身就是不足的,需要加电一段时间以后(在快速充电的模式下一般是至少是6个小时,见MegaRAID Battery Backup Unit User’s Guide第16页),电池的电量才能充满。

3. 另外一种情况也是很常见的,就是磁盘阵列控制器的电池温度过高,导致BBU停止充电。进而其cache写模式变为write-through模式。因为磁盘阵列控制器电池是锂电池或者镍氢电池,温度过高会影响到电池本身的寿命。如果电池温度大于或者等于55摄氏度,则磁盘阵列控制器电池的寿命也会从三年缩短到两年。如果电池温度大于或者等于40度,则电池无法进行快速充电(Fast Charging),只能进行微电流充电(Trickle Charging), 可见高温是电池的天敌。

4. 还有一种情况是电池本身的特性决定的,这个特性叫做learn cycle, 即电池会周期性的发生电池电量校准的现象,防止电池老化。(跟famale的period类似,XD),通俗的来说就是周期性的充电与放电的过程。整个过程如下:

1) 控制器把BBU电池充满,如果本身已满则进行下一个步骤;
2) 对BBU电池执行放电, 开始校准;
3) 放电完成后,校准完成。重新开始充电,直到充满。

这个过程叫做auto learn的过程,在不同的Exadata版本,learn cycle的周期是不同的,在Exadata 11.2.1.3之前,这个过程每1个月发生发生一次,在11.2.1.3以后,修改为每3个月一次。 在learn cycle的过程中,磁盘阵列控制器的cache策略自动变为write-through。你可以在cell节点的alert中看到类似的信息:

 "The disk controller battery is executing a learn cycle and may temporarily enter WriteThrough Caching mode as part of the learn cycle. Disk write throughput might be temporarily lower during this time. The flash drives are not affected. The battery learn cycle is a normal maintenance activity that occurs quarterly and runs for approximately 1 to 12 hours.  Note that many learn cycles do not require entering WriteThrough caching mode.  When the disk controller cache returns to the normal WriteBack caching mode, an additional informational alert will be sent.  Battery Serial Number : 484  Battery Type : iBBU08  Battery Temperature   : 45 C  Full Charge Capacity  : 1381 mAh  Relative Charge : 98 %  Ambient Temperature   : 23 C"

在cell上可以通过执行以下指令来查看下次learn cycle的时间:

CellCLI> LIST CELL ATTRIBUTES bbuLearnCycleTime

在learn cycle期间,磁盘阵列的性能可能会下降,这是一个正常的情况。但是如果其发生在业务高峰期间,可以通过以下命令进行修改:

CellCLI> ALTER CELL bbuLearnCycleTime="2012-12-20T02:00:00-08:00"

后面跟的是一个时间戳。另外不要将learn cycle与每天后台正常的充电与放电混淆。 这个过程cache写策略不会发生变化。

6. 还有一种情况就是将磁盘从盘槽拔出来以后,其磁盘控制器对应的cache写策略也会自动变为write-through模式。如果立即将其插回去,则其策略又会恢复正常,或者等rebalance完成以后。

 

以上,目前能想到的暂时只有这么多了。

Comment

*

沪ICP备14014813号

沪公网安备 31010802001379号