CREATE DISKGROUP dgroup1 NORMAL REDUNDANCY
FAILGROUP test1 DISK '/dev/raw/raw5', '/dev/raw/raw6', '/dev/raw/raw7', '/dev/raw/raw8'
FAILGROUP test2 DISK '/dev/raw/raw9', '/dev/raw/raw10', '/dev/raw/raw11', '/dev/raw/raw12';
select disk_kffxp disk#,
XNUM_KFFXP extent#,
case lxn_kffxp
when 0 then 'Primary Copy'
when 1 then 'Mirrored Copy'
when 2 then '2nd Mirrored Copy or metadata'
else 'Unknown' END TYPE
from x$kffxp
where
number_kffxp=256
and xnum_kffxp!=65534
order by 2;
SQL> 1* select GROUP_NUMBER,NAME,TOTAL_MB ,FREE_MB , USABLE_FILE_MB from v$asm_diskgroup
GROUP_NUMBER NAME TOTAL_MB FREE_MB USABLE_FILE_MB
------------ ---------------------------------------- ---------- ---------- --------------
1 CRS 2892 1966 501
2 DATA 20000 17631 17631
3 DGROUP1 7840 7640 3330
创建一个3000M的表空间
1* select GROUP_NUMBER,NAME,TOTAL_MB ,FREE_MB , USABLE_FILE_MB from v$asm_diskgroup
GROUP_NUMBER NAME TOTAL_MB FREE_MB USABLE_FILE_MB
------------ ---------------------------------------- ---------- ---------- --------------
1 CRS 2892 1966 501
2 DATA 20000 17631 17631
3 DGROUP1 7840 1636 328
再创建一个 400m 的
1* select GROUP_NUMBER,NAME,TOTAL_MB ,FREE_MB , USABLE_FILE_MB from v$asm_diskgroup
GROUP_NUMBER NAME TOTAL_MB FREE_MB USABLE_FILE_MB
------------ ---------------------------------------- ---------- ---------- --------------
1 CRS 2892 1966 501
2 DATA 20000 17631 17631
3 DGROUP1 7840 832 -74
变成了负的了
这里Dave磁盘组的Usable_file_MB 值为 -1116.
什么意思呢?
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。 这个时候如果另外两个节点中出现了坏盘,那么则有可能导致数据的丢失。
目前可用空间: 839/2=419M
目前可以安全使用的空间:( 839-3072 ) /2= -1116M
我们计算出的结果,和查询的一致。
<p style="box-sizing:border-box;word-break:break-all;color:#333333;font-family:Arial, " font-size:16px;line-height:30px;white-space:normal;widows:1;background-color:#ffffff;"=""> 所以,当 Free_MB < Req_mir_free_MB , 那么 Usable_file_MB 肯定是负值,这种情况下磁盘组如果有一个磁盘失效 , 是不能有效恢复成 redundancy 的 . 即处在 " 不安全 " 的状态下 .
所以 ,Usable_file_MB 只是反映了当前 " 安全可利用的剩余空间 ", 只要 free_mb 为正 , 就没有问题 .
normal 3个failgroup
primary copy 和mirrored copy 肯定不在同一个磁盘组中。
关于lsdg的 -Req_mir_free_MB 和Usable_file_MB讨论帖 from Lunar: 可以使用的总空间(不考虑oracle所说的安全使用的情况)为 Total_MB/2 <--------初始部署时,以这个值来判断容量 目前可以使用的总空间 (不考虑到安全使用)为 Free_MB/2 <---------在使用一段时间后,用这个值来判断可用容量 --(已验证) 可以安全使用的总空间是 (Total_MB-Req_mir_free_MB)/2 目前可以安全使用的空间是 (Free_MB-Req_mir_free_MB)/2 即Usable_file_MB 的值 Usable_file_MB意味着 Free_MB < Req_mir_free_MB,即空闲空间小于镜像要求的空余空间, 这会导致 如果丢失磁盘 后将不能 rebalance 。 如果你允许这种情况发生,那么 你可以让Usable_file_MB 仍为负值。 否则: 将部分非必要的文件移出该diskgroup or 扩容diskgroup空间 |
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29990276/viewspace-2142136/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29990276/viewspace-2142136/