關於ASM的failgroup概念的探索方法
關於ASM的failgroup概念的探索方法
大家問到過的的含義,或者問到failgroup跟normal/high redundancy的關聯。
1.是不是normal就一定是2個failgroup,high就一定是3個failgroup呢?
2.如果設定normal,我如果設定許多的failgroup(>2)能行麼?
於是今天在搜尋相關資料時,找到一篇不錯的PPT,名字叫《A Closer Look inside Oracle ASM》,大家可以去下。
先從最基本的概念講起,什麼是failgroup?
首先failgroup必須是diskgroup的一個子集,一個failgroup只能屬於一個diskgroup。
當我們有mirror的要求時(例如normal redundancy),資料會被存兩份,第一份假設存在failgroup A裡,那麼另一份就一定會存入非failgroup A的任意一個failgroup裡。
所以,我們就知道了,當normal redundancy時( copy=2),任意一個failgroup fail了,都沒問題。
這樣就回到了前面的問題1,答案就是No。normal的redundancy可以有>2個failgroup,high的redundancy可以有>3的failgroup。
2個或3個failgroup的只是他們的下限,而非上限。
從文件裡只是說到:
A normal redundancy disk group must contain at least two failure groups.
A high redundancy disk group must contain at least three failure groups.
為什麼說這個問題很迷惑人?
因為當redundancy=normal時,並且failgroup=2時,那麼每一個failgroup都包含完全的一整套資料映象,大家認為這是最合理的。
但當failgroup>2時,由於data copy=2,自然而然每一個failgroup就不能包含所有的資料了,但這也是合理的。
因為failgroup帶來的好處是,丟失一個(normal redundancy)或者兩個(high redundancy)failgroup的所有資料,沒有任何問題。
這篇文章的目的是帶來一種大家自己做來驗證的方法,也其實帶來的是一個x$表的用法。
它就是x$kffxp。
它提供的是ASM中每個檔案的每個extent在disk上的mapping關係。
由於通常我們的AU是1MB,所以一個10MB的檔案會被切成10個extents存放在不同的磁碟上以達到分散磁碟IO的目的。
它每個列的具體含義在我前面提到的PPT裡有。
這裡我簡單的提一下重要的列的意思:
1.是不是normal就一定是2個failgroup,high就一定是3個failgroup呢?
2.如果設定normal,我如果設定許多的failgroup(>2)能行麼?
於是今天在搜尋相關資料時,找到一篇不錯的PPT,名字叫《A Closer Look inside Oracle ASM》,大家可以去下。
先從最基本的概念講起,什麼是failgroup?
首先failgroup必須是diskgroup的一個子集,一個failgroup只能屬於一個diskgroup。
當我們有mirror的要求時(例如normal redundancy),資料會被存兩份,第一份假設存在failgroup A裡,那麼另一份就一定會存入非failgroup A的任意一個failgroup裡。
所以,我們就知道了,當normal redundancy時( copy=2),任意一個failgroup fail了,都沒問題。
這樣就回到了前面的問題1,答案就是No。normal的redundancy可以有>2個failgroup,high的redundancy可以有>3的failgroup。
2個或3個failgroup的只是他們的下限,而非上限。
從文件裡只是說到:
A normal redundancy disk group must contain at least two failure groups.
A high redundancy disk group must contain at least three failure groups.
為什麼說這個問題很迷惑人?
因為當redundancy=normal時,並且failgroup=2時,那麼每一個failgroup都包含完全的一整套資料映象,大家認為這是最合理的。
但當failgroup>2時,由於data copy=2,自然而然每一個failgroup就不能包含所有的資料了,但這也是合理的。
因為failgroup帶來的好處是,丟失一個(normal redundancy)或者兩個(high redundancy)failgroup的所有資料,沒有任何問題。
這篇文章的目的是帶來一種大家自己做來驗證的方法,也其實帶來的是一個x$表的用法。
它就是x$kffxp。
它提供的是ASM中每個檔案的每個extent在disk上的mapping關係。
由於通常我們的AU是1MB,所以一個10MB的檔案會被切成10個extents存放在不同的磁碟上以達到分散磁碟IO的目的。
它每個列的具體含義在我前面提到的PPT裡有。
這裡我簡單的提一下重要的列的意思:
uMaps file extents to allocation units
uOnly populated in ASM instance
uColumns include:
Column Name |
Description |
GROUP_KFFXP |
Disk Group Number |
NUMBER_KFFXP |
File Number |
COMPOUND_KFFXP |
Disk Group Number || File Number |
INCARN_KFFXP |
Incarnation Number |
PXN_KFFXP |
Physical Extent Number (within file) |
XNUM_KFFXP |
Logical Extent Number (within file) |
LXN_KFFXP |
0=primary, 1=first mirror, 2=second mirror |
DISK_KFFXP |
Disk Number |
AU_KFFXP |
Allocation Unit Number (within disk) |
SIZE_KFFXP |
Size (# allocation units) |
NUMBER_KFFXP:對應v$asm_file.FILE_NUMBER
XNUM_KFFXP:ASM檔案的extent號。如果我們設定normal redundancy,那麼一個extent會出現兩份。high則出現三份。
DISK_KFFXP:對應v$asm_disk.DISK_NUMBER
LXN_KFFXP:0->primary extent, 1->mirror extent, 2->2nd mirror copy (high redundancy and metadata)
於是我做了個簡單的小實驗:
首先我是normal redundancy:
SQL> select type from v$asm_diskgroup;
TYPE
------------------
NORMAL
建立了一個4M大小的datafile:
SQL> create tablespace HAO datafile '+DATA' size 4M;
Tablespace created.
透過我自己的指令碼找到這個datafile的file number=295:
> asm alias|grep HAO
DATA 295 +DATA/xxx/DATAFILE/HAO.295.729556673
於是我們檢視這個4M大小的檔案在disk上的分佈情況:
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=295
and xnum_kffxp!=65534
order by 2;
DISK# EXTENT# TYPE
---------- ---------- ------------------------------
1 0 Primary Copy
2 0 Mirrored Copy
2 1 Primary Copy
1 1 Mirrored Copy
0 2 Primary Copy
1 2 Mirrored Copy
1 3 Primary Copy
0 3 Mirrored Copy
2 4 Primary Copy
0 4 Mirrored Copy
如上可以看到,每一個extent都被存了兩份,這是期望的。
我們有3塊disks。
由於在建diskgroup時我並沒有指明failgroup,這裡看到,
每個diskgroup的failgroup就是他自己本身,於是說明了當前我擁有3個failgroups,但我現在為normal redundancy。
說明其實failgroup的數量跟redundancy normal/high沒有直接關係。只有下限的關係。
SQL> select name,FAILGROUP from v$asm_disk;
NAME FAILGROUP
---------- ----------
DATA01 DATA01
DATA02 DATA02
DATA03 DATA03
接著我們來到另一個external redundancy的磁碟組上看:
SQL> select TYPE from v$asm_diskgroup;
TYPE
------------------
EXTERN
同樣的,由於我並沒有顯示指明failgroup,當前failgroup數量為磁碟數量為2。
但由於data copy=2,所以不用存第二份映象,所以failgroup此時無含義。
SQL> select name,FAILGROUP from v$asm_disk;
NAME FAILGROUP
------------------------------ ------------------------------
DATA01 DATA01
DATA02 DATA02
SQL> create tablespace HAO datafile '+DATA' size 4M;
Tablespace created.
> asm alias|grep HAO
DATA 287 +DATA/xxx/DATAFILE/HAO.287.729561149
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=287
and xnum_kffxp!=65534
order by 2;
DISK# EXTENT# TYPE
---------- ---------- --------------------
1 0 Primary Copy
0 1 Primary Copy
1 2 Primary Copy
0 3 Primary Copy
1 4 Primary Copy
此時只有primary copy。
大家可以多用用這個檢視做做實驗就明白failgroup和redundancy之間的聯絡了。
所以此文僅僅叫做“探索方法”,點到為止
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27042095/viewspace-742323/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於ASM的一些理論ASM
- 關於Oracle 10g ASM磁碟大小的限制Oracle 10gASM
- 關於leetcode中的高度和深度的概念LeetCode
- 關於 Angular 程式設計中的 shim 概念Angular程式設計
- 6 個必知必會的關於容器的概念
- 關於Validation的方法使用
- 關於分散式計算的一些概念分散式
- 關於c、c++之前比較模糊的概念C++
- 關於迴流與重繪優化的探索優化
- 關於Java中的equals方法Java
- 關於Promise後續的方法。Promise
- 關於檔案的open方法
- 關於量子技術的一些概念糾正
- 使Ultraedit支援ASM語法高亮的方法ASM
- 關於python訪問字典的方法Python
- 關於我做事的方法經驗
- 關於sass、scss、less的概念性知識彙總CSS
- 文字識別:關鍵資訊提取的3種探索方法
- ASM磁碟組更換磁碟的操作方法ASM
- 關於《死亡細胞》美術工作流的初步探索
- 關於ubuntu修改hosts檔案的方法Ubuntu
- 關於如何獲取資料的方法
- 關於無限註冊的可行方法
- 有關於宇宙的探索,我的小宇宙2022最新版本
- 分散式系統–>(關於系統應用的基本概念)分散式
- 關於Css的垂直居中的一些方法CSS
- 關於Java的取時間方法的爭論Java
- 區塊鏈相關的關鍵概念區塊鏈
- 多值依賴的有關概念
- RMAN 備份相關的概念
- 這些年,關於”硬核“的概念在社會上提及非常多
- 關於jenkins自動化打包探索Jenkins
- 關於 Angular 應用 Module 的 forRoot 方法的討論Angular
- 關於npm install失敗的解決方法NPM
- Java--- 關於null的處理若干方法JavaNull
- Java 面試題關於方法的重寫Java面試題
- 如何檢視Oracle RAC的asm磁碟的udev對應關係OracleASMdev
- 基於vue-ssr的探索Vue
- 基於裸裝置的ASM磁碟組擴容方案ASM