(二十三)大白话数据库服务器上的RAID存储架构的电池充放电原理

1、RAID卡的缓存

服务器使用多块磁盘组成的RAID阵列的时候,一般会有一个RAID卡,这个RAID卡是带有一个缓存的,这个缓存不是直接用我们的服务器的主内存的那种模式,他是一种跟内存类似的SDRAM,当然,你大致就认为他也是基于内存来存储的吧!

然后我们可以把RAID的缓存模式设置为write back,这样的话,所有写入到磁盘阵列的数据,会按照如下流程:

  • 先会缓存在RAID卡的缓存里,
  • 后续慢慢再写入到磁盘阵列里去

这种写缓冲机制,可以大幅度提升我们的数据库磁盘写的性能。我们看下图,他说的就是这个RAID卡的缓存机制。
在这里插入图片描述

2、RAID卡的缓存里的数据会突然丢失怎么办?

那么现在有一个问题来了,假设突然断电了,或者是服务器自己故障关闭了,那么是不是这个RAID卡的缓存里的数据会突然丢失?那你MySQL写入磁盘的数据不就没了吗?我们看下图。
在这里插入图片描述
所以正是因为如此,为了解决这个问题,RAID卡一般都配置有自己独立的锂电池或者是电容,如果服务器突然掉电了,无法接通电源了,RAID卡自己是基于锂电池来供电运行的,然后他会赶紧把缓存里的数据写入到阵列中的磁盘上去,如下图所示。
在这里插入图片描述

3、锂电池存在性能衰减问题

但是锂电池是存在性能衰减问题的,所以一般来说锂电池都是要配置定时充放电的,也就是说每隔30天~90天(不同的锂电池厂商是不一样的),就会自动对锂电池充放电一次,这可以延长锂电池的寿命和校准电池容量。

如果你要是不这么做的话,那么可能锂电池用着用着就会发现容量不够了,可能容纳的电量在你服务器掉电之后,都没法一次性把缓存里的数据写回磁盘上去,那就会导致数据丢失了!

所以在锂电池充放电的过程中,

  • RAID的缓存级别会从write back变成write through,我们通过RAID写数据的时候,IO就直接写磁盘了,此时会有重大问题;
  • 如果写内存的话,性能也就是0.1ms这个级别,但是直接写磁盘,就性能退化10倍到毫秒级了!

所以说,对于那些在生产环境的数据库部署使用了RAID多磁盘阵列存储技术的公司来说,通常都会开启RAID卡的缓存机制,但是此时就一定要注意这个RAID的锂电池自动充放电的问题,因为只要你用了RAID缓存机制,那么锂电池就必然会定时进行充放电去延长寿命,保证服务器掉电的时候可以把缓存数据写回磁盘,数据不会丢失。

所以这个时候一旦RAID锂电池自动充放电,往往会导致你的数据库服务器的RAID存储定期的性能出现几十倍的抖动,间接导致你的数据库每隔一段时间就会出现性能几十倍的抖动!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值