专栏首页沃趣科技ASM磁盘容量改变的故障处理

ASM磁盘容量改变的故障处理

某个数据库环境中的ASM磁盘,由于历史原因,全部配置为没有RAID信息的JBOD模式。今天在做产品升级,由于软件需要,需要将原来加入到ASM中每个JBOD的磁盘配置为RAID0。配置过程采用了rolling up的方式,每次对一个diskgroup中的一个failgroup的磁盘配置RAID。 大体步骤为,以磁盘组ssddg的failgroup1为例:

1、在ASM中操作,将failgroup1的磁盘全部offline;

2、在OS层将这些磁盘卸载;

3、配置failgroup1的磁盘为raid0;

4、在OS层将这些磁盘加载;

5、在ASM中操作,将failgroup1的磁盘全部online。

有自信去做这件事是考虑到磁盘的数据不会受到影响,但是没有考虑到元数据。于是遇到下面的问题:所有节点通过存储软件正常加载上来已经做成RAID0的磁盘。然而在asm磁盘组中要把这些盘online上来时报了下面这个错误:

初步一看,以为是自己操作的疏漏,共享磁盘在另一个RAC节点没有加载,才会报“磁盘不是集群范围可见”的错误;但检查了/dev下的路径以及通过dd命令确认可读写以后,可以确认这些盘都正常加载了,在OS层是集群可见的。

下一步,只能去ASM的alert日志看看是否有更具体的报错信息。在alert日志的最后部分能看到上图中的报错。这个信息暂时不足以分析问题。向前追溯日志一直到最开始的错误信息,可以看到,在online磁盘的操作发起以后,对应每个磁盘都有如下报错:

WARNING: group 4/0xff88596d (SSDDG) disk 0: disk size(762496M) is smaller than disk header value(763097M)

报错的字面意思很明白:磁盘头元信息记录的磁盘大小(763097M)要大于磁盘的实际大小(762496M)。紧跟着是如下信息:

NOTE: process _rbal_+asm1 (16016) initiating offline of disk 0.3915950646 (SSDDG_0000) with mask 0x7e in group 4 NOTE: sending set offline flag message 2479816269 to 1 disk(s) in group 4 WARNING: Disk SSDDG_0000 in mode 0x11 is now being offlined WARNING: Disk SSDDG_0000 in mode 0x11 is now being offlined

到这里,可以推出由于ASM元信息记录的磁盘size超过了实际的size,磁盘在online时自检失败,online动作立刻终止。而后面的ORA-15282报错,只是假象。

下面我想先把这个warning排除,来验证我的推测。

在mos上没有搜到该案例,只能用掌握的那点元数据的知识解决了。首先用kfed把盘头的元数据读取出来,重定向到文本。搜索

763097这个数字,找到了下面这行:

从条目的名称kfdhdb.dsksize也可以看出这个条目记录的是磁盘的大小。在创建ASM磁盘组时,会把盘的大小更新到这个条目,如果没有指定size子句,一般都是磁盘(或者分区)的真实大小。操作系统识别到的磁盘大小可以用fdisk查看到,结果显示两者确实如报错所说,大小有差异。产生差异的原因大家都应该猜到了,对盘做了RAID配置之后,可用大小发生了变化(可能是因为RAID信息占据了更多的磁盘大小,这块谁可以解释比较清楚欢迎提出)。

下面要解决ASM元信息与实际情况不一致的问题。考虑到ASM中可以通过resize命令改变ASM磁盘的可用大小,该操作包括两个方面:更新ASM元信息(disk header和at表等等)和rebalance磁盘组的数据。但是这个操作前提是磁盘需要是online状态。

现在出问题这些磁盘online都会报错,因此需要非常规手段先让online这一步成功:

首先用kfed read命令将磁盘头数据重定向到文本文件中,然后vi编辑文本,将dsksize的值修改成762496,最后将改过的文本kfed merge到原磁盘。

做这个操作时我有几点考虑:

1、ASM磁盘头的元信息在1号au的倒数第二个块有备份,如果修改元数据发生意外,可以用kfed repair修复;

2、导出的元数据的文本,也可以作为一个备份;

3、先对其中一块磁盘做修改,试试效果。

对其中一块ASM磁盘完成以上操作之后,在ASM中做online该单块磁盘的动作就成功了。有了这个验证之后,再将所有的ssddg磁盘的dsksize都改掉并在ASM中online起来

用asmcmd命令行的lsdsk命令去看盘的大小时,发现确实是修改后的762496M。

之后在mos搜到了另外一个报错,有相同的解决方法,见(doc id 1077175.1) ASM disk group mount fails with ORA15036: disk <name> is truncated。

有兴趣的同学可以参考《解密Oracle ASM 内核》这本书中的ASM元信息AT表,stride等相关知识,去验证:resize这一步除了更新磁盘头部记录的磁盘可用大小以外,还会更新at表最后一个块记录的可用au的信息等等元数据;而且resize动作发起之后,ASM会对现有数据做rebalance。而手工使用kfed修改,只会改变磁盘头部记录的磁盘可用大小。

本文分享自微信公众号 - 沃趣科技(woqutech),作者:邱大龙

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-11-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ASM 翻译系列第十一弹:高级知识 Offline or drop?

    原作者:Bane Radulovic 译者: 庄培培 审核: 魏兴华 DBGeeK社群联合出品 Offline or drop? 当一个ASM磁盘不...

    沃趣科技
  • ASM 翻译系列第七弹:高级知识 How many partners?

    原作者:Bane Radulovic 译者: 庄培培 审核: 魏兴华 DBGeeK社群联合出品 ASM的数据冗余机制是通过将extent的镜像副本复...

    沃趣科技
  • 沃趣科技火线救援某公安系统核心业务数据

    求助电话 只剩下键盘敲打声的办公室,被一个突如其来的电话打破了宁静。电话那头,是某公安客户的紧急求助。 案发现场 其核心数据库,由于存储突然断电,导致数据库实例...

    沃趣科技
  • 开发应该知道的Linux系统分析-IO篇

    小文件读写的性能瓶颈是磁盘的寻址(随机读写性能更差),评估的标准是tps。大文件读写的性能瓶颈是带宽,评估的标准是持续的读写速度。Linux可以利用空闲内存作文...

    只喝牛奶的杀手
  • ASM 翻译系列第十一弹:高级知识 Offline or drop?

    原作者:Bane Radulovic 译者: 庄培培 审核: 魏兴华 DBGeeK社群联合出品 Offline or drop? 当一个ASM磁盘不...

    沃趣科技
  • ASM 翻译系列第七弹:高级知识 How many partners?

    原作者:Bane Radulovic 译者: 庄培培 审核: 魏兴华 DBGeeK社群联合出品 ASM的数据冗余机制是通过将extent的镜像副本复...

    沃趣科技
  • 视频流媒体平台EasyNVR直播出现卡顿及重复播放视频片段问题应该如何解决?

    我们之前为大家解答过不少关于流媒体服务器可能出现的问题,比如降低直播延迟、302重定向、播放中断等问题,都为大家提出了适合的解决办法。我们的流媒体服务器一次授权...

    EasyNVR
  • 沃趣科技火线救援某公安系统核心业务数据

    求助电话 只剩下键盘敲打声的办公室,被一个突如其来的电话打破了宁静。电话那头,是某公安客户的紧急求助。 案发现场 其核心数据库,由于存储突然断电,导致数据库实例...

    沃趣科技
  • 云计算RAID的六种应用场景

    1、客户要求高可靠性:客户的数据最终存储到了磁盘,如SATA、SAS、SSD介质,如果磁盘损坏,数据不能丢失,怎么办?

    希望的田野
  • 每周学点大数据 | No.21磁盘算法概述

    No.21期 磁盘算法概述 Mr. 王:现在我们谈谈磁盘算法的问题。根据你的了解,跟我说说计算机中都采用了哪些种类的存储器? 小可:这个我还是略知一二...

    灯塔大数据

扫码关注云+社区

领取腾讯云代金券