Exadata Griddisk Can't be auto added

简介:

  近日遇到Exadata 的磁盘故障,在更新完physical disk后,其中一个griddisk没有自动添加的到ASM实例中,在问题解决后,整理出整个问题分析的思路。

1.在磁盘失败的情况下,如果有LED灯亮,如果怀疑是硬件问题需要首先收集硬件日志

   首先需要使用sundiag.sh脚本收集cell硬件的信息,检查是否有硬件损坏,并定位具体设备,更换故障设备。

(注:sundiag.sh是oracle提供的硬件检查脚本,下面是在compute node上执行,然后到每一个compute node和cell的/tmp下找到生成的日志)

 
 
  1. #dcli -l root -g /opt/oracle.SupportTools/onecommand/all_group "/opt/oracle.SupportTools/sundiag.sh" 
  2.  
  3. For example 
  4. dmorlcel09: Success in AdpEventLog 
  5. dmorlcel09: 
  6. dmorlcel09: Exit Code: 0x00 
  7. …… 
  8. dmorlcel09: sundiag_2012_07_10_06_08/dmorlcel09_megacli64-status_2012_07_10_06_08.out 
  9. dmorlcel09: ============================================================================== 
  10. dmorlcel09: Done the report files are in bzip2 compressed /tmp/sundiag_2012_07_10_06_08.tar.bz2 
  11. dmorlcel09:  
2.但是在还盘后问题没有解决, ASM不能自动增加griddisk到磁盘组, 下面是我的分析步骤
 
 
  1. $ sqlplus / as sysasm 
  2.  
  3. (1)Check sum of griddisk  
  4. column "Diskgroup" format A30 
  5. column "Imbalance" format 99.9 Heading "Percent|Imbalance" 
  6. column "Variance" format 99.9 Heading "Percent|Disk Size|Variance" 
  7. column "MinFree" format 99.9 Heading "Minimum|Percent|Free" 
  8. column "DiskCnt" format 9999 Heading "Disk|Count" 
  9. column "Type" format A10 Heading "Diskgroup|Redundancy" 
  10. SELECT g.name "Diskgroup", 
  11. 100*(max((d.total_mb-d.free_mb)/d.total_mb)-min((d.total_mb-d.free_mb)/d.total_mb))/max((d.total_mb-d.free_mb)/d.total_mb) "Imbalance", 
  12. 100*(max(d.total_mb)-min(d.total_mb))/max(d.total_mb) "Variance", 
  13. 100*(min(d.free_mb/d.total_mb)) "MinFree", 
  14. count(*) "DiskCnt", 
  15.  g.type "Type" 
  16.  FROM v$asm_disk d, v$asm_diskgroup g 
  17.  WHERE d.group_number = g.group_number and 
  18.  d.group_number <> 0 and 
  19.  d.state = 'NORMAL' and 
  20. d.mount_status = 'CACHED' 
  21. GROUP BY g.name, g.type; 
  22. --- 
  23.  
  24. Diskgroup          Percent Imbalance   Percent Disk Size Variance   Minimum Percent Free  Disk Count Redundancy 
  25. ----------------        ---------         ---------                  -------              ----- ---------- 
  26. DBFS_DG               84.6                 .0                        99.8              220   NORMAL 
  27. DG_DAT1                7.1                 .0                        8.9               264  NORMAL 
  28. DG_DAT2                 .1                 .0                        65.1              263  NORMAL                       <<<<<<<<This lack one disk then DG_DAT1 
  29.  
  30. (2) We can find one griddisk isn’t mounted. 
  31. set line 300 
  32. column "PATH" format A100 
  33. SQL> select name, path, header_status from v$asm_disk order by path; 
  34. DG_DAT1_CD_11_DM02CEL04        o/192.168.10.34/DG_DAT1_CD_11_dm02cel04                      MEMBER          
  35. DG_DAT1_CD_00_DM02CEL04        o/192.168.10.34/DG_DAT1_CD_00_dm02cel04                      MEMBER                                                                                                                                                                                                                                                                                                         
  36.                                                      o/192.168.10.34/DG_DAT2_CD_00_dm02cel04                FORMER          <<<<<<<<<<<<<<<<<<  This status is unnormal 
  37. DG_DAT2_CD_01_DM02CEL04        o/192.168.10.34/DG_DAT2_CD_01_dm02cel04                      MEMBER 
  38. ------------------------------------ 
  39. Comments 
  40. FORMER status  indicate Disk was once part of a disk group but has been dropped cleanly from the group. It may be added to a new disk group with the ALTER DISKGROUP statement.  
  41.   
  42.  
  43. (3)Determine DG_DAT2_CD_00_dm02cel04 was missed 
  44.  
  45. select NAME,HEADER_STATUS,MOUNT_STATUS,STATE,GROUP_NUMBER from V$ASM_DISK where NAME like '%CD_03_DM01CEL03'; <<<<<<This need modify as cell name  
  46. NAME                                                         HEADER_STATUS            MOUNT_STATUS   STATE            GROUP_NUMBER 
  47. ------------------------------------------------------------ ------------------------ -------------- ---------------- ------------ 
  48. DG_DAT1_CD_00_DM02CEL04                                      MEMBER                   CACHED         NORMAL                      2 
  49.                                                                                                                   <<<<<<DG_DAT2_CD_00_dm02cel04 is missed 

3.解决方法及步骤

Exadata硬盘错误更换后的ASM磁盘组重新添加操作顺利完成。 
在exadata上面通过grid用户把RECO_DM01_CD_03_DM01CEL03重新加入到ASM中。 
整个操作过程如下:

(1)、操作之前查询的磁盘组相关信息:

 
 
  1. SQL> select name,header_status,mount_status,state,group_number from v$asm_disk where name like '%CD_03_DM01CEL03'; 
  2. NAME                                       HEADER_STA MOUNT_S STATE    GROUP_NUMBER 
  3. ------------------------------ ---------- ------- -------- ------------ 
  4. DBFS_DG_CD_03_DM01CEL03          MEMBER     CACHED  NORMAL              2 
  5. DATA_DM01_CD_03_DM01CEL03      MEMBER     CACHED  NORMAL              1  

(2)、把硬盘重新添加回磁盘组:

 
 
  1. SQL> alter diskgroup RECO_DM01 add disk 'o/192.168.252.5/RECO_DM01_CD_03_dm01cel03' rebalance power 10; 
  2.        Diskgroup altered. 

(3)、添加之后,查看磁盘组信息:          

 
 
  1.         SQL> select name,header_status,mount_status,state,group_number from v$asm_disk where name like '%CD_03_DM01CEL03'; 
  2. NAME                                                         HEADER_STATUS            MOUNT_STATUS   STATE            GROUP_NUMBER 
  3. ------------------------------------------------------------ ------------------------ -------------- ---------------- ------------ 
  4.        DBFS_DG_CD_03_DM01CEL03                                         MEMBER                   CACHED         NORMAL                      2 
  5.        RECO_DM01_CD_03_DM01CEL03                                    MEMBER                   CACHED         NORMAL                      3 
  6.        DATA_DM01_CD_03_DM01CEL03                                    MEMBER                   CACHED         NORMAL                      1  

4.故障原因分析,分析Alert+ASM.log

 
 
  1. Name 
  2. -------- 
  3. === ODM Data Collection === 
  4. NOTE: cache opening disk 192 of grp 3: DG_DAT2_CD_00_DM02CEL04 path:o/192.168.10.34/DG_DAT2_CD_00_dm02cel04 
  5. NOTE: Attempting voting file refresh on diskgroup DG_DAT2 
  6. GMON querying group 3 at 19 for pid 19, osid 12228 
  7. SUCCESS: refreshed membership for 3/0xa4c726c6 (DG_DAT2) 
  8. Tue Jun 05 22:33:40 2012 
  9. NOTE: Attempting voting file refresh on diskgroup DG_DAT2 
  10. Tue Jun 05 22:33:43 2012 
  11. SUCCESS: /* Exadata Auto Mgmt: ADD ASM Disk in given FAILGROUP */ 
  12. alter diskgroup DG_DAT2 add 
  13.  failgroup DM02CEL04 
  14.  disk 'o/192.168.10.34/DG_DAT2_CD_00_dm02cel04' 
  15.  name DG_DAT2_CD_00_DM02CEL04 
  16.  rebalance nowait 
  17. NOTE: starting rebalance of group 3/0xa4c726c6 (DG_DAT2) at power 4 
  18. Starting background process ARB0 
  19. Tue Jun 05 22:33:46 2012 
  20. ARB0 started with pid=39, OS id=5039 
  21. NOTE: assigning ARB0 to group 3/0xa4c726c6 (DG_DAT2) with 4 parallel I/Os                  <<<<<<<<<<<<<<<我以为是在两个griddisk同时reblance的时候产生I/O压力导致的故障的griddisk添加失败 
  22. NOTE: F1X0 copy 2 relocating from 23:2 to 249:2 for diskgroup 3 (DG_DAT2) 
  23. NOTE: F1X0 copy 3 relocating from 249:2 to 255:9441 for diskgroup 3 (DG_DAT2) 
  24. ...... 
  25. Tue Jun 05 22:36:04 2012                                                                                          <<<<<<<当时认为这个分析就是对的,但是后来发现其实root cause是在硬盘最开始报错时就决定的 
  26. NOTE: stopping process ARB0                                                                                     <<<<<<<<<<<<<<<<<<<<<<< 
  27. NOTE: rebalance interrupted for group 3/0xa4c726c6 (DG_DAT2)                                   <<<<<<<<<<<<<<<<<<<<<<< rebalance interrupted 
  28. NOTE: membership refresh pending for group 3/0xa4c726c6 (DG_DAT2) 
  29. Tue Jun 05 22:36:11 2012 
  30. GMON querying group 3 at 22 for pid 19, osid 12228 
  31. SUCCESS: refreshed membership for 3/0xa4c726c6 (DG_DAT2) 
  32. Tue Jun 05 22:36:17 2012 
  33. NOTE: Attempting voting file refresh on diskgroup DG_DAT2 
  34. Tue Jun 05 23:19:15 2012 
  35. NOTE: cache closing disk 192 of grp 3: DG_DAT2_CD_00_DM02CEL04 
  36. Tue Jun 05 23:19:15 2012 
  37. NOTE: membership refresh pending for group 3/0xa4c726c6 (DG_DAT2) 
  38. GMON querying group 3 at 23 for pid 19, osid 12228 
  39. GMON querying group 3 at 24 for pid 19, osid 12228 
  40. NOTE: Disk  in mode 0x8 marked for de-assignment 
  41. SUCCESS: refreshed membership for 3/0xa4c726c6 (DG_DAT2) 
  42.   

5.Root Cause的最终分析

    这个是由于一个physical disk最终划分到两个griddisk,当磁盘某一个扇区损坏,导致其中的一个griddisk直接被drop掉,另一个griddisk受到影响,但是并不会被drop,而是报警,在更坏新physical disk后,未损坏部分的griddisk直接被自动添加,而另一个必须手动添加。

   针对这个问题深入分析,磁盘删除后会不会被ASM自动添加,取决于磁盘删除的方式

 
 
  1. alter diskgroup DG_DAT2 drop disk DG_DAT2_CD_00_DM02CEL04             <<<<<<<<<<<<<<<<<<<<<<没有force参数的,系统不会再次尝试自动添加磁盘 
  2.  
  3. alter diskgroup DG_DAT2 drop force disk DG_DAT2_CD_00_DM02CEL04       <<<<<<<<<<<<<<<<<<<<<<有force参数,系统认为不是正常删除的磁盘,所以会尝试自动添加新磁盘 

    下面是继续分析,问题发生时,具体是什么问题导致的磁盘drop,才能分析出,后续为什么不能自动添加到ASM磁盘组中 
=== 收集alert_+ASM.log信息,问题发生时 。这部分显示的是能正常被自动添加的grid disk===

 
 
  1. Tue Jun 05 16:34:56 2012 
  2. XDWK started with pid=30, OS id=13410 
  3. WARNING: Exadata Auto Management: OS PID: 13410 Operation ID: 3131: ONLINE disk DG_DAT1_CD_00_DM02CEL04 in diskgroup DG_DAT1 Failed 
  4.  SQL    : 
  5.  Cause  : 
  6.  Action : Check alert log to see why this operation failed. 
  7.           Also check process trace file for matching Operation ID. 
  8. ................................... 
  9. Tue Jun 05 22:25:59 2012 
  10. WARNING: Exadata Auto Management: OS PID: 20903 Operation ID: 3246: ONLINE disk DG_DAT1_CD_00_DM02CEL04 in diskgroup DG_DAT1 Failed 
  11.  SQL    : 
  12.  Cause  : 
  13.  Action : Check alert log to see why this operation failed. 
  14.           Also check process trace file for matching Operation ID. 

===  收集alert_+ASM.log信息,问题发生时 。这部分显示的是不能正常被自动添加的grid disk===

 
 
  1. Tue Jun 05 13:35:58 2012 
  2. XDWK started with pid=30, OS id=26485 
  3. SQL> /* Exadata Auto Mgmt: Proactive DROP ASM Disk */                                     <<<<<<<<<<<<<<<<<<<<<<<<<Exadata Auto Mgmt: Proactive DROP ASM Disk 
  4. alter diskgroup DG_DAT2 drop 
  5.  disk DG_DAT2_CD_00_DM02CEL04 
  6. NOTE: GroupBlock outside rolling migration privileged region 
  7. NOTE: requesting all-instance membership refresh for group=3 
  8. Tue Jun 05 13:36:00 2012 
  9. GMON updating for reconfiguration, group 3 at 10 for pid 30, osid 26485 
  10. NOTE: group 3 PST updated. 
  11. Tue Jun 05 13:36:00 2012 
  12. NOTE: membership refresh pending for group 3/0xa4c87c09 (DG_DAT2) 
  13. GMON querying group 3 at 11 for pid 19, osid 15396 
  14. SUCCESS: refreshed membership for 3/0xa4c87c09 (DG_DAT2) 
  15. SUCCESS: /* Exadata Auto Mgmt: Proactive DROP ASM Disk */ 
  16. alter diskgroup DG_DAT2 drop 
  17.  disk DG_DAT2_CD_00_DM02CEL04 
  18. NOTE: Attempting voting file refresh on diskgroup DG_DAT2 
  19. NOTE: starting rebalance of group 3/0xa4c87c09 (DG_DAT2) at power 4 
  20. Starting background process ARB0 
  21. Tue Jun 05 13:36:05 2012 
  22. ARB0 started with pid=38, OS id=26796 
  23. NOTE: assigning ARB0 to group 3/0xa4c87c09 (DG_DAT2) with 4 parallel I/Os 
  24. NOTE: membership refresh pending for group 2/0xa4c87c08 (DG_DAT1) 
  25. GMON querying group 2 at 12 for pid 19, osid 15396 
  26. SUCCESS: refreshed membership for 2/0xa4c87c08 (DG_DAT1) 
  27. Tue Jun 05 13:36:11 2012 
  28. NOTE: Attempting voting file refresh on diskgroup DG_DAT1 
  29. Tue Jun 05 13:49:26 2012 
  30. Starting background process XDWK 
  31. Tue Jun 05 13:49:26 2012 
  32. XDWK started with pid=30, OS id=25037 
  33. Tue Jun 05 14:04:28 2012 
  34. Starting background process XDWK 
  35. Tue Jun 05 14:04:29 2012 
  36. XDWK started with pid=39, OS id=26978 
  37. Tue Jun 05 14:19:31 2012 
  38. Starting background process XDWK 
  39. Tue Jun 05 14:19:31 2012 
  40. XDWK started with pid=30, OS id=28260 
  41. Tue Jun 05 14:34:34 2012 
  42. Starting background process XDWK 
  43. Tue Jun 05 14:34:34 2012 
  44. XDWK started with pid=39, OS id=32093 
  45. Tue Jun 05 14:43:59 2012 
  46. NOTE: GroupBlock outside rolling migration privileged region 
  47. NOTE: requesting all-instance membership refresh for group=3 
  48. Tue Jun 05 14:44:22 2012 
  49. GMON updating for reconfiguration, group 3 at 13 for pid 30, osid 21558 
  50. Tue Jun 05 14:44:23 2012 
  51. NOTE: group 3 PST updated. 
  52. Tue Jun 05 14:44:34 2012 
  53. SUCCESS: grp 3 disk DG_DAT2_CD_00_DM02CEL04 emptied 
  54. NOTE: erasing header on grp 3 disk DG_DAT2_CD_00_DM02CEL04 
  55. NOTE: process _x000_+asm1 (21558) initiating offline of disk 192.3915944441 (DG_DAT2_CD_00_DM02CEL04) with mask 0x7e in group 3 
  56. NOTE: initiating PST update: grp = 3dsk = 192/0xe96891f9, mask = 0x6aop = clear 
  57. Tue Jun 05 14:44:34 2012 

6.总结

开始自己考虑到一个celldisk被分为两个griddisk,在reblance的时候一定是导致了I/O争用的问题导致了其中一个加载失败,但是后来重新分析日志,发现问题不在这里。

从源头开始查找,查找该griddisk第一报错的时候是什么原因,最后发现这行日志,这里就引出另一个问题,ASM实例磁盘组删除的问题,所以在分析问题没有足够说服力的时候,尝试从头来,换个思路,兴许,问题就解决了。

 
 
  1. alter diskgroup DG_DAT2 drop disk DG_DAT2_CD_00_DM02CEL04 









本文转自 hsbxxl 51CTO博客,原文链接:http://blog.51cto.com/hsbxxl/931731,如需转载请自行联系原作者

目录
相关文章
|
Oracle 关系型数据库 数据库
|
SQL 关系型数据库 对象存储
Database Recovery in GitLab – Implementing Database Disaster Tolerance & High Availability
How can we restore accidentally deleted database in GitLab? How can we implement database backup, recovery, disaster tolerance, and high availability?
2146 0