RHEL 6.7 使用multipathd reload命 令有导致DB实例Crash风险,特发Alert提醒,请关注!

RHEL 6.7 使用multipathd reload命 令有导致DB实例Crash风险,特发Alert提醒,请关注!


Ø  背景介绍

在Redhat 6.7 kernel或者OL6.7 的RHCK中, 如果使用类似OS命令service multipathd reload" 或者" kpartx -a /dev/mapper/asm1时,可能会导致IO短暂中断,引发LGWR,DBWR等进程IO操 作失败,最终DB实例Crash。

Ø  故障现象

1.  执 行OS命令service multipathd reload" 或者" kpartx -a /dev/mapper/asm1, 例如需要增加ASM磁盘时;

2.  在RHEL6.7中 会导致LGWR,DBWR进 程IO操作失败,导致DB实 例Crash;

以下是一些报错示例:

最常见的报错发生在DB实例的alert日志中,类似如下:

ORA-63999: data file suffered media failure

ORA-01114: IO error writing block to file 7(block # 1158)

ORA-01110: data file 7: '+DATA _DG/datafile/data.256.818069029'

ORA-15081: failed to submit an I/O operation to a disk

ORA-15081: failed to submit an I/O operation to a disk

DBW3 (ospid: 11370): terminating the instance due to error 63999

 

Ø  影响的产品及版本

ASMLib+OL6.7 RHCK(2.6.32-573.xx) 或者

ASMLib+Redhat 6.7 kernel(2.6.32-573.el6.x86_64)

Ø  原因和触发条件

由于在RHEL6.7中引入了新的Kernel bug(1163769)。 当执行 OS命令service multipathd reload" 或者类似" kpartx -a /dev/mapper/asm1时。会短暂地将block设备的queue limits设置为默认值。 而ASMLib会 不断读取这个值,当发现这个值改变时,会将IO fail,从而 引发DB Crash。

例如:在增加ASM磁盘的场景中, 如果使用multipath reload会触发;

 

Ø  详细说明

在multipathd reload的 时候,在多路径设备上的磁盘,短暂的把它的队列限制( queue limits)设置成了默认的值。如果这时候ASMlib正 在发起I/O,那么这个默认的值会导致错误。

当没有使用ASMlib的时候,kernel走的是另一个代码路径,不会触发队列限制( queue limits)的修改,因此不会出现这个问题。

这个问题是在RHEL6.7 kernel中 由下面的补丁引起的:

dm: remove request-based logic from make_request_fn wrapper

然而这个fix不够周全,它会把已 经设置了队列限制的设备恢复到默认值,因此这个补丁还需要一个补丁来修复。

 

Ø  解决方案

这个bug 已经提交给Linux社区和RedHat公 司,但是目前RedHat6.7 和 RH 6.8 还没有 发布修复;

在Oracle Linux 6.7的Redhat kernel里也有这个问题.但Oracle Linux 6.7的UEK里是没有这个问题的.

 

Ø  临时规避方案

执 行以上OS命令之前,请确保数据库处于关闭状态;

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值