Exadata和非Exadata平台上,ASM的可用空间如何计算?

联系:QQ(5163721)

标题:Exadata和非Exadata平台上,ASM的可用空间如何计算?

作者:Lunar©版权所有[文章允许转载,但必须以链接方式注明源地址,否则追究法律责任.]

曾经很多次,有客户问到ASM上可用的空闲空间问题,实际上,由于ASM带有3中冗余设置方式,分别应对不同场景的数据冗余情况,因此,通常在Exadata上的选择和非Exadata上的选择是不同的。
.
在非Exadata的环境中,通常我们会使用RAID,比如RAID10,因此ASM中使用External Redundancy,例如:

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  EXTERN  N         512   4096  1048576     51200    45862                0           45862              0             N  CFARCH1/
MOUNTED  EXTERN  N         512   4096  1048576     51200    47653                0           47653              0             N  CFARCH2/
MOUNTED  EXTERN  N         512   4096  1048576    563200   486047                0          486047              0             N  CFDATA/
MOUNTED  EXTERN  N         512   4096  1048576     51200    50804                0           50804              0             Y  CRS/
MOUNTED  EXTERN  N         512   4096  1048576     51200    51057                0           51057              0             N  HEARCH1/
MOUNTED  EXTERN  N         512   4096  1048576     51200    50965                0           50965              0             N  HEARCH2/
MOUNTED  EXTERN  N         512   4096  1048576   1536000  1177575                0         1177575              0             N  HEDATA/
MOUNTED  EXTERN  N         512   4096  1048576     51200    51066                0           51066              0             N  MZARCH1/
MOUNTED  EXTERN  N         512   4096  1048576     51200    50951                0           50951              0             N  MZARCH2/
MOUNTED  EXTERN  N         512   4096  1048576    358400   155375                0          155375              0             N  MZDATA/
MOUNTED  EXTERN  N         512   4096  1048576    102400      967                0             967              0             N  OGGACFS/
MOUNTED  EXTERN  N         512   4096  1048576     51200    49896                0           49896              0             N  TLARCH1/
MOUNTED  EXTERN  N         512   4096  1048576     51200    50157                0           50157              0             N  TLARCH2/
MOUNTED  EXTERN  N         512   4096  1048576    563200   381834                0          381834              0             N  TLDATA/
ASMCMD>

.
此时,不需要考虑使用ASM内部的预留空间做故障盘冗余等操作,因此Req_mir_free_MB这列为0,Free_MB的含义和数值跟Usable_file_MB是一致的。
.
而在Exadata上,我们都知道所有的存储节点是不做RAID的(每个cell的前两快盘的前面29.1G做了软RAID1),数据的冗余和条带划都是通过ASM自身的机制来保证的。
.
因此,在Exadata上不支持External Redundancy,缺省安装采用Normal Redundancy。
.
========================Image 11.2.2.4.2========Oracle 11.2.0.2==========

这个例子是Exadata 1/4 Rack下面的输出:

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  4194304  16625664  16624360          1511424         7556468              0             Y  DATA_DG/
MOUNTED  NORMAL  N         512   4096  4194304    894720    893568            81338          406115              0             N  DBFS_DG/
MOUNTED  NORMAL  N         512   4096  4194304   2863872   2863224           260352         1301436              0             N  RECO_DM01/
ASMCMD>

要知道这里面每一个数据是怎么计算出来的,首先要知道每一个ASM DISK是怎么创建出来的,下面是这套系统安装时创建GRIDDISK的命令:
.
INFO: We will be creating the following disk groups…
INFO: DATA_DM01 with size 451G remaining space 77.734375g
INFO: RECO_DM01 with size ALL=77.734375g remaining space 0
.
cellcli -e create griddisk ALL HARDDISK prefix=testgd,size=528.6875G
cellcli -e create griddisk DBFS_DG_CD_02_dm01cel01 celldisk=CD_02_dm01cel01,size=29.125G —注意,DBFS_DG只在每个cell的后面10块盘上划分,因为前两快盘的那29.125G 用来装OS了
.
cellcli -e drop griddisk ALL prefix=testgd force
cellcli -e create griddisk ALL HARDDISK prefix=DATA_DM01, size=451G
cellcli -e create griddisk ALL HARDDISK prefix=RECO_DM01

这里我们看到,onecommand缺省安装时,在创建grid的时候,总是先划分出来最内侧的528.6875G用来创建了griddisk:testdg
.
之后,创建了29.125的DBFS_DG,再之后又删除了之前的testdg,然后分别划分和创建了DATA_DM01和RECO_DM01。
.
这么做的考虑是Oracle希望按照磁盘的外道和内道进行划分,尽量让速度相对较快的空间给DATA_DM01来使用,RECO_DM01在中间,而DBFS_DG在相对最慢的空间。
.
不过我个人觉得,这个快与慢相对于整个系统来说,其速度恐怕没有太多的影响,因为OLTP,我们会借助FLASH CACHE,而OLAP系统,这点磁盘外道和内道的区别,相比跑几个小时甚至更长时间的系统来说,还有那么重要么?
.
1,1/4配置的Exadata(600G的盘)上,数据库可用的总空间(此处的总空间是不考虑“安全使用的情况”)为TOTAL_MB/2
即,
Total_MB : (16625664+894720+2863872)/2=20384256/2=10192128 MB
其中,每个磁盘组显示的Total_MB的数据的来源:
DATA_DM01 : 451*12*3*1024=16625664 MB
RECO_DM01 : 77.734375*12*3*1024=2865600 MB
DBFS_DG : 29.125*10*3*1024=894720 MB
.
我们都知道,1/4配置的3个cell,每个cell 12块盘600G盘,裸容量是: 600*12*3=22118400MB=21TB,而这里,我们看到ASM可用的总容量是20384256MB(19.44TB),那么其余的1.6TB(21-19.4=1.56T)在哪里呢?
.
我计算了一下,按照上面的划盘操作,每个cell的前两快盘的前面29.125G用来做操作系统了,后面10块盘的最前面的29.125G用来做DBFS_DG了。然后,每块盘上面有528.6875G用来做DATA_DM01和RECO_DM01。
.
即 600-528.6875-29.125=42.19GB
.
也就是说,没块盘上还有42.19G左右的空间既没有做GRIDDISK,也没有做操作系统空间,这个应该就是文档上说的用于管理的空间了。
.
我们计算一下,42.19*12*3=1.48T,这个值跟1.56T已经很接近了。 我猜,文档上说的用于管理的空间,恐怕就是这个了,O(∩_∩)O哈哈~
.
2,目前可以使用的总空间(不考虑“安全使用的情况”为)FREE_MB/2:
Free_MB : (16624360+893568+2863224)/2=10190576
.
3,可以安全使用的总空间是 :(FREE_MB – REQUIRED_MIRROR_FREE_MB)/2,即 USABLE_FILE_MB的值
Usable_file_MB=(FREE_MB – REQUIRED_MIRROR_FREE_MB)/2
其中,每个磁盘组显示的Usable_file_MB的数据的来源:
DATA_DM01 : (16624360-1511424)/2=7556468 MB
RECO_DM01 : (893568-81338)/2=406115 MB
DBFS_DG : (2863224-260352)/2=1301436 MB
.
对于USABLE_FILE_MB为负值的解释如下:
(1)、当Free_MB < Req_mir_free_MB时,可以安全使用的空间(即USABLE_FILE_MB)就会为负值.
比如,这里DATA_DM01为 -2.33 TB,这个表示当磁盘组如果有一个磁盘失效,是不能有效恢复成redundancy的,即也有部分数据会处在”不安全”的状态下。
举例来说,就是,此时如果DATA_DM01所属的某块物理盘损坏(目前采用的是每块600GB的HP盘),那么将会有600GB的数据只能保有一份,不能进行redudancy。
.
(2)、如果在实际运行中,储备了部分磁盘或者可以确定硬件工程师能够很快更换硬盘,那么当有磁盘损坏时,ASM就会使用新更换的硬盘做redundancy.
而不依赖于现有online的磁盘上的空闲空间去进行数据的冗余恢复机制。
此时,USABLE_FILE_MB为负值对系统就没有太大影响了,即,此时Usable_file_MB 只是反映了当前”可安全利用的剩余空间”.
这种情况下,客户只需要关注FREE_MB,只要FREE_MB为正值,就没有问题。
.
当然,不同的版本,使用的空间可能不同,比如更早期的版本,可能使用的是如下的划分方法。但是,变化主要在DATA_DM01和RECO_DM01的大小上:

INFO: We will be creating the following disk groups...
INFO: DATA_DM01 with size 451G remaining space 77.734375g
INFO: RECO_DM01 with size ALL=77.734375g remaining  space 0
INFO: checking nodes in /opt/oracle.SupportTools/onecommand/cell_group...

对于系统预留的管理空间和DBFS_DG的空间,没有变化。
.
SQL> @a.sql
—— DISK and CELL Failure Diskgroup Space Reserve Requirements ——
This procedure determines how much space you need to survive a DISK or CELL failure.
It also shows the usable space available when reserving space for disk or cell failure.
Please see MOS note 1551288.1 for more information.
. . .
Description of Derived Values:
One Cell Required Mirror Free MB : Required Mirror Free MB to permit successful rebalance after losing largest CELL regardless of redundancy type
Disk Required Mirror Free MB : Space needed to rebalance after loss of single or double disk failure (for normal or high redundancy)
Disk Usable File MB : Usable space available after reserving space for disk failure and accounting for mirroring
Cell Usable File MB : Usable space available after reserving space for SINGLE cell failure and accounting for mirroring
. . .
ASM Version: 11.2.0.2 – WARNING DISK FAILURE COVERAGE ESTIMATES HAVE NOT BEEN VERIFIED ON THIS VERSION!
. . .
————————————————————————-
DG Name: DATA_DM01
DG Type: NORMAL
Num Disks: 36
Disk Size MB: 433,152
. . .
DG Total MB: 15,593,472
DG Used MB: 6,222,172
DG Free MB: 9,371,300
. . .
One Cell Required Mirror Free MB: 7,796,736
. . .
Disk Required Mirror Free MB: 504,774
. . .
Disk Usable File MB: 4,433,263
Cell Usable File MB: 787,282
. . .
Enough Free Space to Rebalance after loss of ONE disk: PASS
Enough Free Space to Rebalance after loss of ONE cell: PASS
————————————————————————-
DG Name: DBFS_DG
DG Type: NORMAL
Num Disks: 30
Disk Size MB: 29,824
. . .
DG Total MB: 894,720
DG Used MB: 1,472
DG Free MB: 893,248
. . .
One Cell Required Mirror Free MB: 447,360
. . .
Disk Required Mirror Free MB: 53,619
. . .
Disk Usable File MB: 419,814
Cell Usable File MB: 222,944
. . .
Enough Free Space to Rebalance after loss of ONE disk: PASS
Enough Free Space to Rebalance after loss of ONE cell: PASS
————————————————————————-
DG Name: RECO_DM01
DG Type: NORMAL
Num Disks: 36
Disk Size MB: 108,224
. . .
DG Total MB: 3,896,064
DG Used MB: 1,298,804
DG Free MB: 2,597,260
. . .
One Cell Required Mirror Free MB: 1,948,032
. . .
Disk Required Mirror Free MB: 243,792
. . .
Disk Usable File MB: 1,176,734
Cell Usable File MB: 324,614
. . .
Enough Free Space to Rebalance after loss of ONE disk: PASS
Enough Free Space to Rebalance after loss of ONE cell: PASS
. . .
Script completed.

PL/SQL procedure successfully completed.

SQL>

此条目发表在 ASM, FAQ, 内部机制 分类目录,贴了 , , 标签。将固定链接加入收藏夹。

Exadata和非Exadata平台上,ASM的可用空间如何计算?》有 2 条评论

  1. Kelvin 说:

    Lunar写的文章是有一种揭开谜底的吸引力

  2. vicente 说:

    有时候Usable_file_MB会搞成负数,让我很困惑,哈哈哈

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注