ASM中required_mirror_free_mb和usable_file_mb具体定义
来源:互联网 发布:淘宝万象客服 编辑:程序博客网 时间:2024/05/21 14:50
客户经常针对REQUIRED_MIRROR_FREE_MB和USABLE_FILE_MB混淆,每次跟客户讲解都很费力
下面用实际例子来验证该问题
首先根据官网文档v$asm_diskgroup视图定义
简单来说,视图V$ASM_DISKGROUP中的FREE_MB就是未使用的剩余空间(MB),REQUIRED_MIRROR_FREE_MB值代表了如果ASM磁盘或ASM磁盘组出现了故障,要重新满足冗余度的定义,要求有多少的空闲空间。USABLE_FILE_MB的值代表了在满足冗余度之后,还有多少的剩余空间可以用。
好吧如果抽象的说大家还不能理解,我们来动手做个试验
由于定义与冗余策略有关,我们逐一测试
a)冗余模式为external时
可见
3块500G的盘,创建external冗余策略的DG组,总容量1500G,由于未写入数据,FREE为1499G,其中少的空间为ASM元数据占用,故REQ_GB为0,而USEABLE_MB为去除REQ_MB后剩余的空间,此情况下与FREE_MB一样。
b)冗余模式为normal时,3块盘,每块盘为一个失败组
此时查看状态
可见,由于冗余策略是normal,有两份冗余,此时创建了3个失败组,如果一个失败组发生故障,则需要重构弥补丢失失败组的空间,就是500G(3个失败组FG1-3,均为500G),仍旧未写入数据,故FREE_MB仍旧是去除ASM元数据的1499GB,而USEABLE_MB则为满足两份冗余后,还剩余的空间公式为use_mb=(free_mb-req_mb)/2
c)冗余模式为normal,但是4块盘,每2块盘一个失败组
此时查看状态
好啦,现在我们有2个失败组,并且每个组2块500G的盘,则FG1和FG2都是1000G
那么此时REQ_MB竟然不是整个FG组大小1000G,说明REQ_MB是根据冗余模式而变化,如果只有2个FG组,ASM会将一个ASM_DISK作为REQ_MB大小500G,而不是整个FG组1000G,
同理USE_MB=(FREE_MB-REQ_MB)/2=749G
d)还不够过瘾,最后再举例一种情况,6块盘,3个失败组,每个失败组1000G
此时查看结果
这下明白了把,normal模式下,尤其compatible到了12以后,要求DG组内的asm_disk大小一致,这样计算req_mb的时候就是一个失败组故障情况下,里面一块asm_disk的大小,500G,
计算USE_mb公式一样 ( free_mb-req_mb)/2
e)normal模式清楚后,我们再看看high模式,6块盘,每块盘一个失败组
查询结果
因为是high模式,所以req_mb等于2个failgroup的大小(如果磁盘组中failgroup的大小不一样,会取两个最大的failgroup大小),这是因为一个high冗余的磁盘组需要能够容忍丢失2个failgroup而不影响数据的可用性.
同样use_mb=(free_mb-req_mb)/3=666G
因为需要3倍冗余,所以分母较normal模式,变为了3
f)最后来个终极实验,normal模式一个磁盘组8块盘,每个盘2T,FG01有两个盘为4T,FG02、03有3个盘为6T
可见req_mb是根据3个失败组中最大的失败组大小来算,(其中FG02和FG03大小为6144)同理use_mb=(free-req)/2
所以经过这些小实验,兄弟们应该彻底搞清这几个参数的意思了吧
总结成一句话:
REQUIRED_MIRROR_FREE_MB的值代表了ASM用来重新满足磁盘组定义的冗余度所需要的空间,这个值的大小依赖于磁盘组的冗余度和FailGroup失败组的数量。
如果有n>2个failgroup的normalDG,REQUIRED_MIRROR_FREE_MB的值等于一个failgroup的大小(如果失败组大小不一致,则以最大的失败组为req_mb大小)
如果只有2个failgroup的normalDG,那么REQUIRED_MIRROR_FREE_MB的值将等于一个磁盘的大小而非一个failgroup的大小。
如果有n>3个failgroup的high冗余磁盘组,REQUIRED_MIRROR_FREE_MB的值等于2个failgroup的大小
如果high冗余的磁盘组只有3个failgroup,那么REQUIRED_MIRROR_FREE_MB的值将会是两个磁盘的大小。
(这里有朋友会问了,那么什么时候req_mb是按失败组算,什么时候按失败组中的asm盘算呢,从规律中可以看出来,
normal模式下,当FG组大于2的时候,那么这个时候,有故障,必须确保有整个失败组来支撑,所以这个时候按失败组算;
而当FG组等于2的时候,这个时候由于normal模式是2份数据,所以,只要来按1块asm_disk来算即可
同理,high模式下,当FG组大于3的时候,那么这个时候,有故障,必须确保有最少2个失败组来弥补,确保3份数据;
当FG等于3的时候,就是2块asm_disk即可)
USABLE_FILE_MB的值代表了总的可用来存储数据的空间,它的值依赖磁盘组的大小,磁盘组的冗余度和REQUIRED_MIRROR_FREE_MB的值,USABLE_FILE_MB的值的计算方法如下:
use_mb=(free_mb-req_mb)/2|3 其中normal模式分母为2,high模式分母为3- ASM中required_mirror_free_mb和usable_file_mb具体定义
- Oracle asm中 Usable_FILE_MB 和 REQUIRED_MIRROR_FREE_MB的含义
- ASM 翻译系列第四十弹:理解ASM中 REQUIRED_MIRROR_FREE_MB和USABLE_FILE_MB的含义
- Demystifying ASM REQUIRED_MIRROR_FREE_MB and USABLE_FILE_MB
- asm diskgroup中的Usable_file_MB和Req_mir_free_MB
- #ASM 翻译系列第三十三弹:ASM 高级知识 REQUIRED_MIRROR_FREE_MB
- Opencv中cvStartFindContours函数的具体定义
- i386和i686的具体定义
- i386和i686的具体定义
- i386和i686的具体定义
- i386和i686的具体定义
- 继承的定义和具体使用-1
- php抽象类定义和具体应用
- php接口定义和具体说明
- 【转】i386和i686的具体定义
- gcc中 __asm__ 和 asm 的区别
- shell中&& 和 || 的具体用法
- hbase javaapi 表定义和列族定义的具体含义
- centos7 Qt5.9.1 编译opencv错误
- Network In Network理解
- CRC校检
- Unity_外观模式_030
- Centos7安装完,找不到网卡配置
- ASM中required_mirror_free_mb和usable_file_mb具体定义
- 再谈光子映射
- 在Eclipse如何打开关闭了的Package Explorer
- switch的简单应用
- sqlite3 取整函数
- tensorflow从已经训练好的模型中,恢复(指定)权重(构建新变量、网络)并继续训练(finetuning)
- css单行及多行文字超出部分显示省略号
- elasticsearch+kibana实现权限控制-search-guard
- python中read()