开工大吉|策马扬鞭,跃启新程!
2026-02-25
浙江省委宣传部副部长、省委网信办主任赵磊:守正创新 辩证施策 全力推动网络生态治理工作迈上新台阶
2026-02-10
美创产品全面入围中直机关2025年网络设备框架协议采购项目
2026-02-04
连续5年!美创再获中国网络安全产业联盟“先进会员单位”表彰
2026-01-21
每周安全速递³⁷¹ | 勒索软件攻击导致心理健康机构超11万人数据泄露
2026-01-06
存储域
数据库加密 诺亚防勒索访问域
数据库防水坝 数据库防火墙 数据库安全审计 动态脱敏流动域
静态脱敏 数据水印 API审计 API防控 医疗防统方运维服务
数据库运维服务 中间件运维服务 国产信创改造服务 驻场运维服务 供数服务安全咨询服务
数据出境安全治理服务 数据安全能力评估认证服务 数据安全风险评估服务 数据安全治理咨询服务 数据分类分级咨询服务 个人信息风险评估服务 数据安全检查服务在DBA的日常运维工作中,对于空间的检查是最基础也是必要的一步。
当然,在各种监控工具的加持下这一步工作被简化,比如美创的运维一体机,客户爸爸再也不用担心空间突然爆掉了。

今天我们着重讲下ASM磁盘组的空间使用,按照磁盘组的冗余模式,分两种情况。
情况一:冗余模式为external
在这种情况下可以很容易的计算出剩余可用空间=Free_MB,如果下图所示,磁盘组DATA的剩余可用空间为22403MB。
情况二:冗余模式为Normal或High
在这种情况下又是如何计算剩余可用空间?
REQUIRED_MIRROR_FREE_MB和USABLE_FILE_MB的值,这个问题的答案跟很多复杂问题的答案一样:要看情况。
首先需要了解下这三个值的描述:

简单来说,视图V$ASM_DISKGROUP中:
FREE_MB:磁盘组中没有被使用的空间。
REQUIRED_MIRROR_FREE_MB:如果ASM磁盘或ASM磁盘组出现故障后,要重新满足冗余度的定义,要求有多少的空闲空间。
USABLE_FILE_MB:在满足冗余度之后,还有多少的剩余空间可以用。
讲到这里有些盆友可能还是晕乎乎的。
那么,ASM是如何计算出这些值的?
接下来可以通过一些不同组合的磁盘组来解答这一问题。
01
Normal模式,2个Failgroup
先创建一个Normal冗余模式的磁盘组DATANEW,然后添加4块磁盘,每个Failgroup2块,其中1块1G,另一块500M。
| | Disk01 | Disk02 |
| Failgroup01 | 1G | 500M |
| Failgroup02 | 1G | 500M |
ASM在磁盘组内使用Failgroup来提供数据的镜像和冗余,数据存储在一个Failgroup的同时,会在另外的Failgroup存储相同的数据副本,以此来保障数据安全,在一个Normal冗余的磁盘组中,会有两份相同的数据,所以在一个Failgroup出现故障时并不会影响整个磁盘组的可用性,ASM还可以根据镜像数据让磁盘组重新达到Normal冗余的要求,但是为了能做到这一点,需要磁盘有足够的剩余空间,因此Failgroup实际有多大就显得非常的重要了。
查看视图V$ASM_DISKGROUP来获得磁盘组的相关信息:

以上输出显示:
TOTAL_MB=3048MB --正好是所有磁盘大小之和。
FREE_MB=2854MB --并不等于TOTAL_MB,说明盘头中有数据。
REQUIRED_MIRROR_FREE_MB=1024M --大小等于最大的磁盘。
USABLE_FILE_MB=915MB
计算公式:USABLE_FILE_MB = (FREE_MB - REQUIRED_MIRROR_FREE_MB) / 磁盘冗余度
从磁盘组可以得到的信息是磁盘中没有被使用的空间为2854MB,如果出现故障,要满足冗余度的定义,要有1024MB的空间,在满足冗余度之后,还有915MB的剩余空间可以用。
那么磁盘组DATANEW到底还剩余多少空间呢?是要看FREE_MB,还是USABLE_FILE_MB?
接下来就来验证这一问题:
1、 磁盘组DATANEW新增一个1000MB的数据文件。

再次查看视图V$ASM_DISKGROUP信息:
![]()
以上输出显示:
FREE_MB=836MB --约等于(2854-1000)/2
USABLE_FILE_MB=-94MB
根据计算公式USABLE_FILE_MB=(836 – 1024) / 2=-94,尽管添加数据文件之前USABLE_FILE_MB为915MB,但还是成功添加了一个1000MB的文件,而FREE_MB的剩余空间减少约等于2个数据文件的大小。
2、再次添加一个500MB的数据文件。

报错DATANEW剩余空间不足,836M的剩余空间无法再创建一个500M的文件。
从上面的测试可以推论出:
a) 在磁盘组为Normal冗余模式下,实际剩余可用空间为FREE_MB / 冗余度,也就是FREE_MB的一半,这是因为根据Normal冗余,数据会存在一份相同的镜像,所以实际占用的空间也会多出一倍。
b) USABLE_FILE_MB可以变为负值,表示ASM并不会强制留出REQUIRED_MIRROR_FREE_MB的空间,但是这意味着如果遭遇了ASM磁盘组故障,有可能会没有足够的剩余空间来重新满足冗余度的要求。如果USABLE_FILE_MB为负数,就应该增加磁盘组的空间或者释放出一些空间来。
02
Normal模式,多个Failgroup
在之前测试的基础上新加2个Failgroup。
| | Disk01 | Disk02 |
| Failgroup01 | 1G | 500M |
| Failgroup02 | 1G | 500M |
| Failgroup03 | 1G | 500M |
| Failgroup04 | 2G | 500M |
查看视图V$ASM_DISKGROUP来获得磁盘组的相关信息:

结果与有些不同,在有2个Failgroup的时候,REQUIRED_MIRROR_FREE_MB的值等于最大磁盘的大小。而在Failgroup大于2的时候,REQUIRED_MIRROR_FREE_MB的值等于最大Failgroup的大小。
ASM会在不同的Failgroup中存储镜像数据,一个normal冗余的磁盘组要求至少有2个Failgroup,一个High冗余的磁盘组要求至少3个Failgroup,如果具有2个Failgroup的Normal冗余磁盘组,其中一个Failgroup发生了故障,那么这个磁盘组如何重新满足冗余度的要求?不能!因此这种情况下,ASM仅仅给出了一个磁盘的大小作为REQUIRED_MIRROR_FREE_MB的值。