您好,登錄后才能下訂單哦!
相關文章鏈接:
Asm Instance Parameter Best Practice
為什么RHEL 6上沒有ASMLIB?
Unix上如何查看文件名開頭為”+asm”的TRACE文件
asm_power_limit對IO的影響
針對11.2 RAC丟失OCR和Votedisk所在ASM Diskgroup的恢復手段
10g ASM lost disk log
11gR2 RAC ASM啟動揭秘
在11gR2 RAC中修改ASM DISK Path磁盤路徑
在Linux 6上使用UDEV解決RAC ASM存儲設備名問題
Script:找出ASM中的Spfile參數文件
如何診斷ASMLIB故障
Script:收集ASM診斷信息
Comparation between ASM note [ID 373242.1] and note [ID 452924.1]
Why ASMLIB and why not?
ASM file metadata operation等待事件
幾個關于oracle 11g ASM的問題
利用UDEV服務解決RAC ASM存儲設備名
Discover Your Missed ASM Disks
Oracle內部視圖X$KFFXP
Fixed X$ Tables in ASM
了解AMDU工具生成的MAP文件
使用AMDU工具從無法MOUNT的DISKGROUP中抽取數據文件
自動存儲管理 (ASM) 是 Oracle Database 的一個特性,它為數據庫管理員提供了一個在所有服務器和存儲平臺上均一致的簡單存儲管理接口。作為專門為 Oracle 數據庫文件創建的垂直集成文件系統和卷管理器,ASM 提供了直接異步 I/O 的性能以及文件系統的易管理性。ASM 提供了可節省 DBA 時間的功能,以及管理動態數據庫環境的靈活性,并且提高了效率。ASM 的主要優點有:
Oracle Cloud File System (CloudFS) 前所未有地簡化了通用文件的存儲管理、供應自動化和存儲整合。CloudFS 是一個存儲云基礎架構,提供資源池、網絡可訪問性、快速伸縮以及快速供應 — 這些都是云計算環境的關鍵要求。該產品包括:
ADVM 提供了一個通用卷管理服務和一個標準設備驅動程序接口,便于系統管理員跨不同平臺進行管理。ACFS 和第三方文件系統可以使用 ASM
動態卷創建和管理可利用 ASM 特性的所有功能的文件系統。因此,無需停機即可輕松調整 ADVM 卷的大小以適應文件系統的存儲需求。
一個通用的與 POSIX、X/OPEN 和 Windows 兼容的文件系統,專為單節點和單集群的配置而設計。使用操作系統自帶的命令、ASM asmcmd 和 Oracle Enterprise Manager 對 ACFS 進行管理。ACFS 支持高級數據服務,如時間點復制快照、文件系統復制和標簽,以及文件系統安全性和加密。
Automatic Storage Management是Oracle 在版本10g中率先(對比其他RDBMS)提出的數據庫存儲自動解決方案,在版本11g中得到進一步升華。ASM提供了數據庫管理所需要的一個簡單、有效 的存儲管理接口,該接口實現了跨服務器和存儲平臺。 ASM是文件系統filesystem和volume manager卷管理軟件的一體化,專門為Oracle的數據庫文件鎖設計的; ASM在保證如文件系統般管理簡單的基礎上提供高性能的異步Async IO。ASM的引入提高了數據庫的可擴展容量,同時節約了DBA的時間,使其能夠更敏捷、更高效地管理一個流動性較大的數據庫環境。
ASM的出現是為RDBMS管理文件存儲
ASM基礎概念:
ASM存儲以diskgroups的概念呈現:
ASM所提供的高可用性:
Failure Group鏡像的使用
重新平衡Rebalancing
性能方面
其他知識
Disk Group:
Disk Group”磁盤組” 是ASM管理的邏輯概念對象,一個Disk Group由多個ASM disk組成。每一個Disk Group都是子描述的,如同一個標準的文件系統一樣。所有關于該Diskgroup 空間使用信息的元數據均完整地包含在這個磁盤組中。 若ASM可以找到所有屬于該ASM diskgroup的DISK則他不需要任何其他額外的元數據。
文件空間從Disk Group中分配。任何一個ASM文件總是完整地包含在一個單獨的Disk Group中。但是,一個Disk Group可能包含了屬于多個數據庫的文件,一個單獨的數據庫的文件也可以存放在多個不同的Disk Group中。 在大多數實際的部署中,不會創建太多數量的Disk Groups,一般在3~4個。
Disk Group提供三種不同的redundancy冗余度,詳見上文。
ASM Disk
一個ASM Disk是組成Disk Group的基本的持久的存儲。 當一個ASM Disk加入到Disk Group中時,它要么采用管理員指定的ASM Disk Name要么采用系統自動分配的Disk Name。 這不同于OS 給用于訪問該設備的”藝名”。 在一個Cluster集群中, 同一個Disk 可能在不同的節點上顯示不同的Device Name設備名,例如在 Node1上的 /dev/sdc ,對應于Node2上的/dev/sdd。 ASM Disk必須在所有使用該Disk Group的實例上可用直接磁盤I/O訪問。
實際上對于RDBMS Oracle而言訪問ASM disk和訪問普通的文件并沒有什么不同,除非使用了ASMLIB(ASMLIB不是ASM必須的,再次強調!)。常規情況下ASM Disk是OS上可見的LUN的partition,該分區覆蓋了所有不被操作系統所保留的磁盤的空間。 大多數操作系統需要保留LUN的第一個block作為分區表(partition table); 由于ASM總是會寫ASM Disk的第一個塊,所以要保證ASM不會去覆蓋前幾個block上的分區表(partition table),例如在Solaris上分區時不要把前幾個柱面劃給partition。LUN可以是簡單的物理JBOD,或者是由高級存儲陣列管理的虛擬 LUN。既可以是直連的設備也可以是SAN。ASM Disk可以是任何被開發系統調用所訪問的東西,除了本地文件系統。 甚至于NFS上的文件都可以被當做一個ASM Disk來用,這樣便于喜歡NAS的用戶使用ASM,當然比起NFS來我更建議干脆用ISCSI。
注意雖然可以使用普通logical Volume Manager LVM管理的logical volume作為ASM Disk,但是這并不是推薦組合,除非你想不到其他更好的辦法。 即便你一定要這樣用,但是注意也不要在LVM級別做鏡像和條帶化。
ASM將任何文件以AU大小均勻分布在Disk Group的所有Disk上。每一個ASM Disk均被維護以保持同樣的使用比率。這保證同一個Disk Group中的所有Disk的IO負載基本一致。由于ASM在一個Disk Group中的磁盤上的負載均衡,所以為同一個物理磁盤的不同區域劃分為2個ASM Disk不會對性能有所影響;而同一個物理磁盤上劃分2個不同分區置于不同的2個Disk Group則有效。
當ASM Disk Group啟用冗余時單個ASM Disk僅是一個失敗單元。對于該ASM Disk的寫失敗在10g會自動從該Disk Group drop掉該Disk,前提是該Disk的丟失被容許。
Allocation Unit
每一個ASM Disk都被劃分為許多個AU allocation units(單個AU 的大小在 1MB ~64MB,注意總是2的次方MB)。而且AU allocation unit也是Disk Group的基本分配單元。一個ASM Disk上的可用空間總是整數倍個AU。在每一個ASM Disk的頭部均有一個表,該表的每一條記錄代表該ASM Disk上的一個AU。文件的extent指針(pointer)給出了ASM Disk Number磁盤號和AU號,這就描述了該extent的物理位置。由于所有的空間操作都以AU為單位,所以不存在所謂ASM碎片這樣的概念和問題。
一個AU(1M~64M)足夠小,以便一個文件總是要包含很多個AU,這樣就可以分布在很多磁盤上,也不會造成熱點。一個AU又足夠大以便能夠在一 個IO操作中訪問它,以獲得更加的吞吐量,也能提供高效的順序訪問。訪問一個AU的時間將更多的消耗在磁盤傳輸速率上而非花在尋找AU頭上。對于Disk Group的重新平衡也是對每一個AU逐次做的。
了解ASM后臺進程的作用:
GMON: ASM Diskgroup監控進程
ASMB: ASM后臺網絡進程
RBAL: ASM reblance master process 重新平衡主進程
ARBx: reblance slave process實際實施reblance的后臺進程
MARK: AU resync AU重新同步的指揮家進程
了解ASM前臺進程的作用:
ASM的client(主要是RDBMS DB和CRSD))在連接ASM實例時會產生前臺進程,前天進程的名字一般為oracle+ASM__ (例如: oracle+ASM_DBW0_DB1)。
OCR 特有的前臺進程foreground: oracle+ASM1_ocr
ASM相關的V$和X$視圖
視圖名 | X$基表名 | 描述 |
V$ASM_DISKGROUP | X$KFGRP | 實施磁盤發現disk discovery和列出磁盤組 |
V$ASM_DISKGROUP_STAT | X$KFGRP_STAT | 顯示disk group狀態 |
V$ASM_DISK | X$KFDSK, X$KFKID | 實施磁盤發現disk discovery和列出磁盤以及這些磁盤的使用度量信息 |
V$ASM_DISK_STAT | X$KFDSK_STAT,X$KFKID | 列出磁盤和其使用度量信息 |
V$ASM_FILE | X$KFFIL | 列出ASM文件也包括了元數據信息 |
V$ASM_ALIAS | X$KFALS | 列出了ASM的別名,文件和目錄 |
V$ASM_TEMPLATE | X$KFTMTA | 列出可用的模板和其屬性 |
V$ASM_CLIENT | X$KFNCL | 列出鏈接到ASM的DB實例 |
V$ASM_OPERATION | X$KFGMG | 列出rebalancing重平衡操作 |
N/A | X$KFKLIB | 可用的ASMLIB路徑 |
N/A | X$KFDPARTNER | 列出Disk-partners關系 |
N/A | X$KFFXP | 所有ASM文件的extent map |
N/A | X$KFDAT | 所有ASM Disk的extent列表 |
N/A | X$KFBH | 描述ASM cache |
N/A | X$KFCCE | ASM block的鏈表 |
V$ASM_ATTRIBUTE(new in 11g) | X$KFENV(new in 11g) | Asm屬性,該X$基表還顯示一些隱藏屬性 |
V$ASM_DISK_IOSTAT(new in 11g) | X$KFNSDSKIOST(new in 11g) | I/O統計信息 |
N/A | X$KFDFS(new in 11g) |
|
N/A | X$KFDDD(new in 11g) |
|
N/A | X$KFGBRB(new in 11g) |
|
N/A | X$KFMDGRP(new in 11g) |
|
N/A | X$KFCLLE(new in 11g) |
|
N/A | X$KFVOL(new in 11g) |
|
N/A | X$KFVOLSTAT(new in 11g) |
|
N/A | X$KFVOFS(new in 11g) |
|
N/A | X$KFVOFSV(new in 11g) |
|
X$KFFXP包含了文件、extent和AU之間的映射關系。 從該X$視圖可以追蹤給定文件的extent的條帶化和鏡像情況。注意對于primary au和mirror au讀操作的負載是均衡的, 而寫操作要求同時寫2者到磁盤。以下是X$KFFXP視圖列的含義
X$KFFXP Column Name | Description |
ADDR | x$ table address/identifier |
INDX | row unique identifier |
INST_ID | instance number (RAC) |
NUMBER_KFFXP | ASM file number. Join with v$asm_file and v$asm_alias |
COMPOUND_KFFXP | File identifier. Join with compound_index in v$asm_file |
INCARN_KFFXP | File incarnation id. Join with incarnation in v$asm_file |
PXN_KFFXP | Progressive file extent number |
XNUM_KFFXP | ASM file extent number (mirrored extent pairs have the same extent value) |
GROUP_KFFXP | ASM disk group number. Join with v$asm_disk and v$asm_diskgroup |
DISK_KFFXP | Disk number where the extent is allocated. Join with v$asm_disk |
AU_KFFXP |
Relative position of the allocation unit from the beginning of the disk. The allocation unit size (1 MB) in v$asm_diskgroup |
LXN_KFFXP | 0->primary extent, ->mirror extent, 2->2nd mirror copy (high redundancy and metadata) |
FLAGS_KFFXP | N.K. |
CHK_KFFXP | N.K. |
X$KFDAT該X$視圖包含了所有allocation unit AU的細節,不管是FREE的還是USED。
X$KFDAT Column Name | Description |
ADDR | x$ table address/identifier |
INDX | row unique identifier |
INST_ID | instance number (RAC) |
GROUP_KFDAT | diskgroup number, join with v$asm_diskgroup |
NUMBER_KFDAT | disk number, join with v$asm_disk |
COMPOUND_KFDAT | disk compund_index, join with v$asm_disk |
AUNUM_KFDAT |
Disk allocation unit (relative position from the beginning of the disk), join with x$kffxp.au_kffxp |
V_KFDAT | V=this Allocation Unit is used; F=AU is free |
FNUM_KFDAT | file number, join with v$asm_file |
I_KFDAT | N/K |
XNUM_KFDAT | Progressive file extent number join with x$kffxp.pxn_kffxp |
RAW_KFDAT | raw format encoding of the disk,and file extent information |
X$KFDPARTNER 這個X$視圖包含了 disk-partner(1-N)的映射關系,在一個給定ASM Diskgroup,若2個Disk存有同一個extent的鏡像拷貝,則將2個disk視作partners。因此partners必須屬于同一個 diskgroup下的不同的failgroup。
X$KFDPARTNER Column Name | Description |
ADDR | x$ table address/identifier |
INDX | row unique identifier |
INST_ID | instance number (RAC) |
GRP | diskgroup number, join with v$asm_diskgroup |
DISK | disk number, join with v$asm_disk |
COMPOUND | disk identifier. Join with compound_index in v$asm_disk |
NUMBER_KFDPARTNER | partner disk number, i.e. disk-to-partner (1-N) relationship |
MIRROR_KFDPARNER | if=1 in a healthy normal redundancy config |
PARITY_KFDPARNER | if=1 in a healthy normal redundancy config |
ACTIVE_KFDPARNER | if=1 in a healthy normal redundancy config |
研究ASM必要的技巧
1)找出ASM的鏡像mirror extent,在例子中是ASM的spfile
[grid@localhost ~]$ sqlplus / as sysasm SQL*Plus: Release 11.2.0.3.0 Production on Wed Feb 13 11:13:39 2013 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Automatic Storage Management option INSTANCE_NAME ---------------- +ASM SQL> SQL> show parameter spfile NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string +SYSTEMDG/asm/asmparameterfile /registry.253.805993079 select GROUP_KFFXP, DISK_KFFXP, AU_KFFXP from x$kffxp where number_kffxp = (select file_number from v$asm_alias where name = 'REGISTRY.253.805993079'); GROUP_KFFXP DISK_KFFXP AU_KFFXP ----------- ---------- ---------- 3 2 38 3 1 39 3 0 44 也可以這樣定位 select GROUP_KFDAT, NUMBER_KFDAT, AUNUM_KFDAT from x$kfdat where fnum_kfdat = (select file_number from v$asm_alias where name = 'REGISTRY.253.805993079') GROUP_KFDAT NUMBER_KFDAT AUNUM_KFDAT ----------- ------------ ----------- 3 0 44 3 1 39 3 2 38 ==> 找到該 DISK對應的路徑 SQL> select path,DISK_NUMBER from v$asm_disk where GROUP_NUMBER=3 and disk_number in (0,1,2); PATH DISK_NUMBER -------------------- ----------- /dev/asm-diski 2 /dev/asm-diskh 1 /dev/asm-diskg 0 SQL> create pfile='/home/grid/pfile' from spfile; File created. SQL> Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Automatic Storage Management option [grid@localhost ~]$ cat pfile +ASM.asm_diskgroups='EXTDG','NORDG'#Manual Mount *.asm_diskstring='/dev/asm*' *.asm_power_limit=1 *.diagnostic_dest='/g01/app/grid' *.instance_type='asm' *.large_pool_size=12M *.local_listener='LISTENER_+ASM' *.remote_login_passwordfile='EXCLUSIVE' 通過dd讀取該AU [grid@localhost ~]$ dd if=/dev/asm-diski of=/tmp/spfile.dmp skip=38 bs=1024k count=1 1+0 records in 1+0 records out 1048576 bytes (1.0 MB) copied, 0.00328614 seconds, 319 MB/s [grid@localhost ~]$ strings /tmp/spfile.dmp +ASM.asm_diskgroups='EXTDG','NORDG'#Manual Mount *.asm_diskstring='/dev/asm*' *.asm_power_limit=1 *.diagnostic_dest='/g01/app/grid' *.instance_type='asm' *.large_pool_size=12M *.local_listener='LISTENER_+ASM' *.remote_login_passwordfile='EXCLUSIVE' [grid@localhost ~]$ dd if=/dev/asm-diskh of=/tmp/spfile1.dmp skip=39 bs=1024k count=1 1+0 records in 1+0 records out 1048576 bytes (1.0 MB) copied, 0.0325114 seconds, 32.3 MB/s [grid@localhost ~]$ strings /tmp/spfile1.dmp +ASM.asm_diskgroups='EXTDG','NORDG'#Manual Mount *.asm_diskstring='/dev/asm*' *.asm_power_limit=1 *.diagnostic_dest='/g01/app/grid' *.instance_type='asm' *.large_pool_size=12M *.local_listener='LISTENER_+ASM' *.remote_login_passwordfile='EXCLUSIVE' [grid@localhost ~]$ dd if=/dev/asm-diskg of=/tmp/spfile2.dmp skip=44 bs=1024k count=1 1+0 records in 1+0 records out 1048576 bytes (1.0 MB) copied, 0.0298287 seconds, 35.2 MB/s [grid@localhost ~]$ strings /tmp/spfile2.dmp +ASM.asm_diskgroups='EXTDG','NORDG'#Manual Mount *.asm_diskstring='/dev/asm*' *.asm_power_limit=1 *.diagnostic_dest='/g01/app/grid' *.instance_type='asm' *.large_pool_size=12M *.local_listener='LISTENER_+ASM' *.remote_login_passwordfile='EXCLUSIVE'
2) 顯示asm disk failure group和 disk partners的映射關系:
1* select DISK_NUMBER,FAILGROUP,path from v$asm_disk where group_number=3 SQL> / DISK_NUMBER FAILGROUP PATH ----------- ------------------------------ -------------------- 3 SYSTEMDG_0003 /dev/asm-diskj 2 SYSTEMDG_0002 /dev/asm-diski 1 SYSTEMDG_0001 /dev/asm-diskh 0 SYSTEMDG_0000 /dev/asm-diskg SQL> select disk,NUMBER_KFDPARTNER,DISKFGNUM from X$KFDPARTNER where grp=3; DISK NUMBER_KFDPARTNER DISKFGNUM ---------- ----------------- ---------- 0 1 1 0 2 1 0 3 1 1 0 2 1 2 2 1 3 2 2 0 3 2 1 3 2 3 3 3 0 4 3 1 4 3 2 4 12 rows selected.
ASM常見問題, FAQ:
Q:ASM做 rebalance和 mirror 的基本顆粒是什么?
A: ASM做mirror 鏡像的基本顆粒是file的extent,默認情況下一個extent等于一個AU,11g之后一個extent可以是1 or 8 or 64個AU
ASM做rebalance重新平衡的基本顆粒也是extent,雖然重新平衡是對每一個AU逐次做的。
Q:ASMLIB和ASM的關系是什么?
A:ASMLIB是一種種基于Linux module,專門為Oracle Automatic Storage Management特性設計的內核支持庫(kernel support library)。
簡單來說ASMLIB是一種Linux下的程序包,它不屬于Oracle ASM kernel。 通過ASMLIb可以做到設備名綁定,便于ASM使用的目的; 但是Linux上能實現設備名綁定并便于ASM使用的服務有很多,例如udev、mpath等;
所以ASMLIB并不是ASM必須的組件; 國內的中文文章對于該概念的描述大多不清晰,造成了ASMLIB=ASM或者ASM必須用ASMLIB的誤解,這是以訛傳訛。
ASMLIB的缺點見拙作《Why ASMLIB and why not?》一文
Q: ASM是否是raid 10或者raid 01?
A:ASM的mirror是基于file extent的,而不是像raid那樣基于disk或者block。 所以ASM既不同于Raid 10,也不是Raid 01。 如果硬要說相似點的話,因為ASM是先mirror鏡像后stripe條帶化,所以在這個特征上更像Raid 10。 但是注意,再次強調,ASM既不是RAID 10也不是RAID 01, 重復一千遍。。。。。。。。。。。。。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。