先看一组查询结果:
[grid@asm ~]$ asmcmd lsdg State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name MOUNTED NORMAL N 512 4096 1048576 18427 12166 3072 4547 0 N DATA/ MOUNTED NORMAL N 512 4096 1048576 9216 839 3072 -1116 0 N DAVE/ MOUNTED EXTERN N 512 4096 1048576 6144 5589 0 5589 0 N DGAMDU/ MOUNTED NORMAL N 512 4096 1048576 9216 3747 3072 337 0 N FRA/
这里Dave磁盘组的Usable_file_MB 值为-1116.
这里Lsdg命令的结果也是从v$asm_diskgroup获取的,所以可以获取这个视图中有关字段的说明:
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这个值只是一个在安全范围内能正常使用的空间。
假设我们的磁盘组里有3个failgroup,其中一个failgroup挂掉了,如果此时使用的空间在这个Usable_file_MB以下,那么这个时候ASM能正常的完成rebalance,即这个failgroup上的数据还会转移到其他的failgroup上,继续保证2份的冗余。
如果超过了这个阈值,则会因为空间不足,剩余的failgroup节点无法完成rebalance,那么就表示有一部分数据此时只保留了一份(Normal正常情况下,所有的数据都有两份),并且无法完成rebalance。 这个时候如果另外两个节点中出现了坏盘,那么则有可能导致数据的丢失。
做个算术题:
已这里Dave磁盘组(Normal 冗余)为例:
磁盘组总可用空间就是:9216/2= 4608M
目前可用空间:839/2=419M
可以安全使用的总空间:(9216-3072)/2 = 3072M
目前可以安全使用的空间:(839-3072)/2= -1116M
我们计算出的结果,和查询的一致。
所以,当Free_MB < Req_mir_free_MB,那么Usable_file_MB 肯定是负值,这种情况下磁盘组如果有一个磁盘失效,是不能有效恢复成redundancy的.即处在"不安全"的状态下.
在实际环境中,在发生磁盘故障时,一般都是添加新的存储(或者利用备用的设备),add disk之后再保证它达到失败之前的冗余级别。
所以,Usable_file_MB 只是反映了当前"安全可利用的剩余空间", 只要free_mb为正,就没有问题.
版权声明:本文为博主原创文章,未经博主允许不得转载。