理解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/
,如需转载,请注明出处,否则将追究法律责任。