ITPub博客

首页 > 数据库 > Oracle > 关于ASM 磁盘组中 Usable_file_MB 为负值的说明

关于ASM 磁盘组中 Usable_file_MB 为负值的说明

Oracle 作者:不一样的天空w 时间:2017-12-20 17:44:33 0 删除 编辑

理解ASM中 REQUIRED_MIRROR_FREE_MB和USABLE_FILE_MB的含义

https://www.jianshu.com/p/7988378a90ef


TOTAL_MB :Total capacity of the disk group (in megabytes)

--它不会考虑到镜像的因素, 是把所有failgroup中所有磁盘的总空间
 

FREE_MB :Unused capacity of the disk group (in megabytes)

--不考虑到mirror因素, 指目前总的可用空间


REQUIRED_MIRROR_FREE_MB:Amount of space that is required to be available in a given disk group in order to restore redundancy after one or more disk failures. The amount of space displayed in this column takes mirroring effects into account.

--为了使diskgroup能在一个或多个磁盘损坏后能够恢复冗余(redundancy),磁盘组中应该保留的剩余空间.


USABLE_FILE_MB :Amount of free space that can be safely utilized taking mirroring into account and yet be able to restore redundancy after a disk failure

--指能被"安全"利用的总空间, 即在考虑到磁盘损坏后能够恢复以前的冗余水平的前提下(保证原来的冗余级别),可以使用的空间。

所以Usable_file_MB这个值只是一个在安全范围内能正常使用的空间。

简单来说,视图V$ASM_DISKGROUP中的REQUIRED_MIRROR_FREE_MB值代表了如果ASM磁盘或ASM磁盘组出现了故障,要重新满足冗余度的定义,要求有多少的空闲空间。USABLE_FILE_MB的值代表了在满足冗余度之后,还有多少的剩余空间可以用。


假设我们的磁盘组里有3个failgroup,其中一个failgroup挂掉了,如果此时使用的空间在这个Usable_file_MB以下,那么这个时候ASM能正常的完成rebalance,即这个failgroup上的数据还会转移到其他的failgroup上,继续保证2份的冗余。

如果超过了这个阈值,则会因为空间不足,剩余的failgroup节点无法完成rebalance,那么就表示有一部分数据此时只保留了一份(Normal正常情况下,所有的数据都有两份),并且无法完成rebalance。 这个时候如果另外两个节点中出现了坏盘,那么则有可能导致数据的丢失。

总结:In summary

REQUIRED_MIRROR_FREE_MB的值代表了ASM用来重新满足磁盘组定义的冗余度所需要的空间,这个值的大小依赖于磁盘组的冗余度和failgroup的数量。

具有3个failgroup的normal冗余磁盘组,REQUIRED_MIRROR_FREE_MB的值等于一个failgroup的大小,如果 normal冗余的磁盘组只有2个failgroup,那么REQUIRED_MIRROR_FREE_MB的值将等于一个磁盘的大小而非一个failgroup的大小。

具有4个failgroup的high冗余磁盘组,REQUIRED_MIRROR_FREE_MB的值等于2个failgroup的大小,如high冗余的磁盘组只有3个failgroup,那么REQUIRED_MIRROR_FREE_MB的值将会是两个磁盘的大小。

USABLE_FILE_MB的值代表了总的可用来存储数据的空间,它的值依赖磁盘组的大小,磁盘组的冗余度和REQUIRED_MIRROR_FREE_MB的值,USABLE_FILE_MB的值的计算方法如下:

USABLE_FILE_MB = (FREE_MB – REQUIRED_MIRROR_FREE_MB) / [2|3]




 
示例如下:

 

以这里Dave磁盘组(Normal 冗余)为例:

磁盘组总可用空间就是:9216/2= 4608M

目前可用空间:839/2=419M

可以安全使用的总空间:(9216-3072)/2 = 3072M

目前可以安全使用的空间:(839-3072)/2= -1116M

Usable_file_MB的计算方法为:
Usable_file_MB=(Free_MB-Req_mir_free_MB)/冗余度

我们计算出的结果,和查询的一致。

所以,当Free_MB < Req_mir_free_MB,那么Usable_file_MB 肯定是负值,这种情况下磁盘组如果有一个磁盘失效,是不能有效恢复成redundancy的.即处在"不安全"的状态下.
 
在实际环境中,在发生磁盘故障时,一般都是添加新的存储(或者利用备用的设备),add disk之后再保证它达到失败之前的冗余级别。

如果某个磁盘组的USABLE_FILE_MB值变为了负数,你应该增加磁盘组的空间或者释放出一些空间出来。


所以,Usable_file_MB 只是反映了当前"安全可利用的剩余空间", 只要free_mb为正,就没有问题.

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31397003/viewspace-2148969/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2016-09-22

  • 博文量
    916
  • 访问量
    1400392