问题:
ASM实例的后台日志出现大量的rebalance空间不够提示WARNING: No free space to complete rebalance after disk failure: diskgroup XXXX,导致ASM日志增长很快。
问题分析:
从报错的日志可以看到,提示rebalance空间不够的磁盘组为PDBXXX,检查当前的ASM磁盘使用情况,可以看到PDBXXX磁盘组的冗余模式为Normal,当前的可用空间Usable_file_GB小于0,为-3553GB。
这里讲一下Usable_file_GB的含义,它表示ASM磁盘组的可用空间大大小,在External冗余模式下,Usable_file_GB的值等于Free_MB的大小,可以直接理解为ASM磁盘组的剩余空间,在Normal模式或是High模式,它表示减去维持故障冗余镜像保留空间之后的可用空间大小,在Normal冗余模式下,Usable_file_GB的计算公式为:
Usable_file_GB=(Free_MB - Req_mir_free_MB)/2
在high冗余模式下,Usable_file_GB的计算公式为:
Usable_file_GB=(Free_MB - Req_mir_free_MB)/3
Free_MB:ASM磁盘组的剩余空间
Req_mir_free_MB:ASM磁盘组在故障丢盘的情况下,为了维持冗余模式下的镜像数量所预留的空间,计算公式为:
Normal模式:
2个Failgroup:Req_mir_free_MB = 2 disk size
3个Failgroup:Req_mir_free_MB = 1 failgroup size
4个Failgroup+:Req_mir_free_MB = 1 failgroup size
High模式:
3个Failgroup: Req_mir_free_MB = 3 disk size
4个Failgroup:Req_mir_free_MB = 1 failgroup size + 3 disk size
5个Failgroup+:Req_mir_free_MB = 2 failgroup size
根据公式可以得知,在Req_mir_free_MB大于Free_MB的情况下,Usable_file_GB会出现负数,此时如果丢盘的磁盘空间大于Req_mir_free_MB,会出现没有足够空间rebalance的情况。
关于WARNING:的提示信息我们在Oracle官方的Understanding ASM Capacity and Reservation of Free Space in Exadata (Doc ID 1551288.1)文档中找到了这样的说明,在GI 19.16版本之后, ASM日志的后台日志,如果磁盘组没有足够的空间rebalance会出现WARNING: No free space to complete rebalance after disk failure: diskgroup XXXXX的告警信息,这里磁盘组没有足够的空间应该就是指在ASM磁盘组Usable_file_GB小于0的情况下,但该文档没有说明告警信息触发的操作或是禁用该告警信息的方法。
问题解决:
从上述分析来看,如果磁盘组Usable_file_GB小于0就会出现该告警信息,所以修复该告警信息的直接方式就是扩容ASM磁盘组,增加磁盘组Free_MB的大小,进而将Usable_file_GB的值调整到大于0,当前磁盘组为Normal模式,由于磁盘组里面的Failgroup数量大于2,因此Req_mir_free_MB大小的估算算法偏大,等于1个 failgroup size大小,并且后续我们发现其他19.16的集群,Usable_file_GB小于0的都出现该告警信息,总体扩容的磁盘容量较大,短期内无法进行,需要寻求其他方式进行规避。
一方面,我们通过比对不同RAC环境的告警日志出现时间,发现它们出现的频率并不相同,推测是由某种操作触发,后面通过测试发现当执行对数据字典表v$asm_diskgroup的查询操作,就会触发后台日志显示rebalance空间不足的告警信息,怀疑有可能是监控平台的ASM磁盘组监控语句触发导致,可以通过减少语句的执行频率,从而减少告警信息的触发。
另一方面,我们也通过安装最新版本的GI RU补丁,以测试新版本补丁是否有对该告警信息进行优化改进,在19.21 GI集群,测试发现该版本的ASM 磁盘组,在Usable_file_GB小于0的情况下,并未出现该告警信息,但在Oracle官方并未查到相关问题修复说明,后面通过Oracle SR进一步确认,该问题是由补丁35285795所修复,该补丁包含在 19.20及以上的RU,修复的Bug 35285795 - Issue Insufficient Space For Restoring Redundancy With Smart Rebalance (Doc ID 35285795.8)
总的来说,解决方式有4种
1 扩容ASM磁盘组,确保Usable_file_GB的值大于0
2 通过减少v$asm_diskgroup的查询操作,减少告警触发的频率
3 安装补丁35285795进行修复
4 GI RU升级到19.20及以上的RU
注:Oracle 官方最新在2024年3月4日也发布了关于该告警信息的文档说明"WARNING: No free space to complete rebalance after disk failure" Is Seen In ASM Alert Log When Diskgroup USABLE_FILE_MB Is Negative (Doc ID 3007349.1)
文章评论