原作者:Harald van Breederode
译者: 魏兴华
审核: 魏兴华
DBGeeK社区联合出品
原文链接:https://prutser.wordpress.com/2013/01/03/demystifying-asm-required_mirror_free_mb-and-usable_file_mb/
在我的课上一个经常被问到的问题是ASM如何计算磁盘组REQUIRED_MIRROR_FREE_MB和USABLE_FILE_MB的值,这个问题的答案跟很多复杂问题的答案一样:要看情况。
简单来说,视图V$ASM_DISKGROUP中的REQUIRED_MIRROR_FREE_MB值代表了如果ASM磁盘或ASM磁盘组出现了故障,要重新满足冗余度的定义,要求有多少的空闲空间。USABLE_FILE_MB的值代表了在满足冗余度之后,还有多少的剩余空间可以用。
问题是:ASM怎么计算出这些值的?
问题的答案可以通过创建一些不同配置的磁盘组,然后观察视图V$ASM_DISKGROUP中的REQUIRED_MIRROR_FREE_MB 和 USABLE_FILE_MB。为了找到答案,我们仅仅只需要一些磁盘而已。
ASM> select label,os_mb from v$asm_disk
2 where label like 'SAN%' order by label;
LABEL OS_MB
------------------------------- ----------
SAN01 255
SAN02 255
SAN03 255
SAN04 255
SAN05 255
SAN06 255
REQUIRED_MIRROR_FREE_MB and USABLE_FILE_MB in external redundancy disk groups
我们先从创建一个外部冗余的磁盘组开始,这里使用到了我们上面列出的6块盘,每个盘的大小是255MB:
ASM> create diskgroup demo external redundancy
2 disk 'ORCL:san01'
3 disk 'ORCL:san02'
4 disk 'ORCL:san03'
5 disk 'ORCL:san04'
6 disk 'ORCL:san05'
7 disk 'ORCL:san06'
8 attribute 'compatible.asm' = '11.2.0.0.0';
Diskgroup created.
我们查询视图V$ASM_DISKGROUP中的几个列来获得磁盘组的相关信息:
ASM> select name, state, type, total_mb, free_mb, REQUIRED\_MIRROR\_FREE\_MB req_free, USABLE\_FILE\_MB use_mb
2 from v$asm_diskgroup where name = 'DEMO';
NAME STATE TYPE TOTAL_MB FREE_MB REQ_FREE USE_MB
---------- ----------- ------ ---------- ------- -------- ------
DEMO MOUNTED EXTERN 1530 1468 0 1468
以上输出显示了磁盘组的总大小为1530MB(TOTAL_MB),其中1468MB(FREE_MB)是空闲的空间,由于这是一个外部冗余的磁盘组,因此所有的空闲空间都可以用来存放文件,USABLE_FILE_MB列的值也显示了这一点,REQUIRED_MIRROR_FREE_MB的值为0。