ASM 翻譯系列第三十三彈:REQUIRED_MIRROR_FREE_MB的含義

沃趣科技發表於2017-02-24

ASM 翻譯系列第三十三彈:ASM 高階知識 REQUIREDMIRRORFREE_MB

原文: REQUIREDMIRRORFREE_MB 作者: Bane Radulovic譯者:陳亞軍,沃趣科技資料庫技術工程師,主要參與公司產品實施、測試、維護以及最佳化。 審校:魏興華

REQUIRED_MIRROR_FREE_MBUSABLE_FILE_MB是V$ASM_DISKGROUP[_STAT]檢視中非常有趣的兩列。Oracle Support部門收到的很多問題是關於這兩列的意義以及它們的值是怎麼計算的。我本打算寫些文章介紹一下,但是我意識到我不可能比Harald van Breederode做的更出色。因此我徵得了他的同意來直接參考他的文章,所以還是請欣賞他的大作吧。

How much space can I use

既然已經解釋了REQUIRED_MIRROR_FREE_MBUSABLE_FILE_MB,我想補充說明的是ASM不會阻止你使用所有可用空間(NORMAL冗餘模式下總空間的1/2或者HIGH冗餘模式下總空間的1/3)。但是一旦你使用完了所有磁碟組空間,將沒有剩餘空間用來擴充套件或者新增任何其它檔案,在這種情況下,如果有磁碟出現故障,同樣不會有剩餘空間用來讓資料重新滿足需要的冗餘度——直到故障的磁碟被替換並且Rebalance完成。

Exadata with ASM version 11gR2

在安裝了11.2 ASM版本的Exadata中,REQUIRED_MIRROR_FREE_MB等於磁碟組中最大的failgroup的大小(在真實的Exadata環境中,所有的failgroup都預設大小相同)。為了驗證這個說法,讓我們來看一個安裝了11.2 ASM的Exadata的情況。

和大部分的Exadata安裝一樣,這裡有3個磁碟組。

``` [grid@exadb01 ~]$ sqlplus / as sysasm

SQL*Plus: Release 11.2.0.4.0 Production on [date]

SQL> select NAME, GROUPNUMBER from v$asmdiskgroup_stat;

NAME GROUP_NUMBER


DATA 1 DBFS_DG 2 RECO 3

SQL> ```

出於列舉這個例子的目的,我們將會看下DBFS_DG這個磁碟組。通常情況下DBFS_DG的每個failgroup有10個磁碟。為了驗證REQUIRED_MIRROR_FREE_MB就是最大的failgroup的大小,這裡我drop掉了部分磁碟。

``` SQL> select FAILGROUP, count(NAME) "Disks", sum(TOTALMB) "MB" from v$asmdiskstat where GROUPNUMBER=2 group by FAILGROUP order by 3;

FAILGROUP Disks MB


EXACELL04 7 180096 EXACELL01 8 205824 EXACELL02 9 231552 EXACELL03 10 257280

SQL> ```

注意最大的failgroup的總大小為257280MB。

最後,我們發現REQUIRED_MIRROR_FREE_MB就是最大的failgroup的大小:

``` SQL> select NAME, TOTALMB, FREEMB, REQUIREDMIRRORFREEMB, USABLEFILEMB from v$asmdiskgroupstat where GROUPNUMBER=2;

NAME TOTALMB FREEMB REQUIREDMIRRORFREEMB USABLEFILE_MB


DBFS_DG 874752 801420 257280 272070

SQL> ```

ASM中使用如下公式計算USABLE_FILE_MB

USABLE_FILE_MB = (FREE_MB - REQUIRED_MIRROR_FREE_MB) / 2

得到的結果為:272070MB

Exadata with ASM version 12cR1

在安裝12cR1版本ASM的Exadata中,REQUIRED_MIRROR_FREE_MB等於磁碟組中最大的磁碟的大小。 這裡是一個來自安裝了12.1.0.2.0 ASM的Exadata系統的例子。

``` [grid@exadb03 ~]$ sqlplus / as sysasm

SQL*Plus: Release 12.1.0.2.0 Production on [date]

SQL> select NAME, GROUPNUMBER from v$asmdiskgroup_stat;

NAME GROUP_NUMBER


DATA 1 DBFS_DG 2 RECO 3

SQL> ```

同樣,我把DBFS_DG磁碟組中的failgroups設定成不同的大小。

``` SQL> select FAILGROUP, count(NAME) "Disks", sum(TOTALMB) "MB" from v$asmdiskstat where GROUPNUMBER=2 group by FAILGROUP order by 3;

FAILGROUP Disks MB


EXACELL05 8 238592 EXACELL07 9 268416 EXACELL06 10 298240

SQL> ```

最大的failgroup的總大小為298240MB,但是這一次REQUIRED_MIRROR_FREE_MB的大小為29824MB:

``` SQL> select NAME, TOTALMB, FREEMB, REQUIREDMIRRORFREEMB, USABLEFILEMB from v$asmdiskgroupstat where GROUPNUMBER=2; 2 3

NAME TOTALMB FREEMB REQUIREDMIRRORFREEMB USABLEFILE_MB


DBFS_DG 805248 781764 29824 375970

SQL> ```

正如我們看到的,這是磁碟組中最大的磁碟的大小:

``` SQL> select max(TOTALMB) from v$asmdiskstat where GROUPNUMBER=2;

MAX(TOTAL_MB)

 29824 

SQL> ```

USABLE_FILE_MB的大小透過同樣的公式計算獲得:

USABLE_FILE_MB = (FREE_MB - REQUIRED_MIRROR_FREE_MB) / 2

結果為:375970MB

Conclusion

REQUIRED_MIRROR_FREE_MBUSABLE_FILE_MB是為了幫助DBA和儲存管理員來規劃磁碟組的容量和冗餘度而設計的。在ASM中,它們的值只作為參考,並不具有強制性。

在12cR1 ASM版本的Exadata中,REQUIRED_MIRROR_FREE_MB等於磁碟組中最大磁碟的大小,設計就是這樣的,反映了該領域的經驗:磁碟才是發生故障的元件,而不是整個儲存節點。

譯者注:真實的環境中,整個儲存節點整體壞掉的可能性比較小,一般都是瞬時的故障(如斷電),因此整個儲存出問題後,一般能及時修復,而磁碟一般故障後會直接壞掉,大多數情況不可修復,磁碟故障的機率要比整體儲存節點故障的機率高很多。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28218939/viewspace-2134227/,如需轉載,請註明出處,否則將追究法律責任。

相關文章