ASM(Automatic Storage Management)是Oracle10g R2中為了簡化Oracle數據庫的管理而推出來的一項新功能,這是Oracle自己提供的卷管理器,主要用於替代操作系統所提供的LVM,它不僅支持單實例,同時對RAC的支持也是非常好。
一、ASM由來
ASM是Oracle 10g R2中為了簡化Oracle數據庫的管理而推出來的一項新功能,這是Oracle自己提供的卷管理器,主要用於替代操作系統所提供的LVM,它不僅支持單 實例,同時對RAC的支持也是非常好。ASM可以自動管理磁盤組並提供有效的數據冗余功能。使用ASM(自動存儲管理)后,數據庫管理員不再需要對 ORACLE中成千上萬的數據文件進行管理和分類,從而簡化了DBA的工作量,可以使得工作效率大大提高。
二、什么是ASM
ASM它提供了以平台無關的文件系統、邏輯卷管理以及軟RAID服務。ASM可以支持條帶化和磁盤鏡像,從而實現了在數據庫被加載的情況下添加或移除磁盤以及自動平衡I/O以刪除“熱點”。它還支持直接和異步的I/O並使用Oracle9i中引入的Oracle數據管理器 API(簡化的I/O系統調用接口)。
ASM是做為單獨的Oracle實例實施和部署,並且它只需要有參數文件,不需要其它的任何物理文件,就可以啟動ASM實例,只有它在運行的時候,才能被其它數據訪問。在Linux平台上,只有運行了OCSSD服務(Oracle安裝程序默認安裝)了才能和訪問ASM。
三、使用ASM的好處
優點:
(1)將I/O平均分部到所有可用磁盤驅動器上以防止產生熱點,並且最大化性能。在ASM中是DiskGroup概念與LVM卷組管理中VG的概念類似,也是將多塊物理磁盤總成一個磁盤組,一個磁盤組中的數據是均勻分布在各個物理磁盤上的。手工添加和刪除物理磁盤時,數據會自動均衡(ReBalance);
(2) 配置更簡單,並且最大化推動數據庫合並的存儲資源利用;數據文件都存儲在DiskGroup中(簡稱DG),管理相對簡單。
(3) 內在的支持大文件,支持BIGFILE文件。
(4) 在增量增加或刪除存儲容量后執行自動聯系重分配,即自動ReBalance;
(5) 維護數據的冗余副本以提高可用性;
(6) 支持10g、11g的數據存儲及RAC的共享存儲管理,相對來說11g的ASM更穩定,10g中有些BUG。
(7) 支持第三方的多路徑軟件;如powerpath(aix)、mutlipath(linux)
(8) 使用OMF(Oracle Managed Files)方式來管理文件。
缺點:
(1) 數據庫中新增一個ASM實例,維護上需要對ASM進行管理,增加了維護成本;
(2) ASM相對來說是個黑匣子,如果出問題,恢復起來也是個難點。
四、ASM冗余方式
ASM使用獨特的鏡像算法:不鏡像磁盤,而是鏡像盤區。作為結果,為了在產生故障時提供連續的保護,只需要磁盤組中的空間容量,而不需要預備一個熱備(hot spare)磁盤。不建議用戶創建不同尺寸的故障組,因為這將會導致在分配輔助盤區時產生問題。ASM將文件的主盤區分配給磁盤組中的一個磁盤時,它會將該盤區的鏡像副本分配給磁盤組中的另一個磁盤。給定磁盤上的主盤區將在磁盤組中的某個伙伴磁盤上具有各自的鏡像盤區。ASM確保主盤區和其鏡像副本不會駐留在相同的故障組中。磁盤組的冗余可以有如下的形式:雙向鏡像文件(至少需要兩個故障組)的普通冗余(默認冗余)和使用三向鏡像(至少需要3個故障組)提供較高保護程度的高冗余。一旦創建磁盤組,就不可以改變它的冗余級別。為了改變磁盤組的冗余,必須創建具有適當冗余的另一個磁盤組,然后必須使用RMAN還原或DBMS_FILE_TRANSFER將數據文件移動到這個新創建的磁盤組。
三種不同的冗余方式如下:
(1)外部冗余(external redundancy)--常用
表示Oracle不幫你管理鏡像,功能由外部存儲系統實現,比如通過RAID技術;有效磁盤空間是所有磁盤設備空間的大小之和。
(2)默認冗余(normal redundancy)
表示Oracle提供2份鏡像來保護數據,有效磁盤空間是所有磁盤設備大小之和的1/2 (使用最多)
(3)高度冗余(high redundancy)
表示Oracle提供3份鏡像來保護數據,以提高性能和數據的安全,最少需要三塊磁盤(三個failure group);有效磁盤空間是所有磁盤設備大小之和的1/3,雖然冗余級別高了,但是硬件的代價也最高。
五、ASM進程
ASM實例除了傳統的DBWR,LGWR,CKPT,SMON,PMON等進程還包含如下四個新后台進程:
(1) RBAL:負責協調磁盤組的重新平衡活動(負責磁盤組均衡)
(2) ARB0-ARBn:在同一時刻可以存在許多此類進程,它們分別名為ARB0、ARB1,以此類推,執行實際的重新平衡分配單元移動進程。
(3) GMON:用於ASM磁盤組監控
(4) O0nn 01-10:這組進程建立到ASM實例的連接,某些長時間操作比如創建數據文件,RDBMS會通過這些進程向ASM發送信息
ASMB與ASM 實例的前台進程連接,周期性的檢查兩個instance的健康狀況。每個數據庫實例同時只能與一個ASM實例連接,因此數據庫只會有一個ASMB后台進程。如一個節點上有多個數據庫實例,它們只能共享一個ASM實例。
RBAL用來進行全局調用,以打開某個磁盤組內的磁盤。ASMB進程與該節點的CSS守護進程進行通信,並接收來自ASM實例的文件區間映射信息。ASMB還負責為ASM實例提供I/O統計數據
CSS集群同步服務。要使用ASM,必須確保已經運行了CSS集群同步服務,CSS負責ASM實例和數據庫實例之間的同步。
注意:
ASM實例必須要先於數據庫實例啟動,和數據庫實例同步運行,遲於數據庫實例關閉。ASM 實例和數據庫實例的關系可以是1:1,也可以是1:n。如果是1:n,最好為ASM 安裝單獨的ASM_HOME。
六、ASM支持文件類型
ASM支持datafile,logfiles,control files,archivelogs,RMAN backup sets等自動的數據庫文件管理。
一般來說,一個采用ASM單實例數據庫由兩個DG組成。一個是datadg,另外一個是fradg。Datadg主要是存放數據文件,而fradg(flash recovery area)存放archivelog文件,control文件和備份文件等。
七、ASM實例和數據庫實例對應關系
八、Cluster ASM 架構
九、相關視圖
視圖名 |
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重平衡操作 |
|
X$KFKLIB |
可用的ASMLIB路徑 |
|
X$KFDPARTNER |
列出Disk-partners關系 |
|
X$KFFXP |
所有ASM文件的extent map |
|
X$KFDAT |
所有ASM Disk的extent列表 |
|
X$KFBH |
描述ASM cache |
|
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統計信息 |
|
X$KFDFS(new in 11g) |
|
|
X$KFDDD(new in 11g) |
|
|
X$KFGBRB(new in 11g) |
|
|
X$KFMDGRP(new in 11g) |
|
|
X$KFCLLE(new in 11g) |
|
|
X$KFVOL(new in 11g) |
|
|
X$KFVOLSTAT(new in 11g) |
|
|
X$KFVOFS(new in 11g) |
|
|
X$KFVOFSV(new in 11g) |
|
十、參考資料
http://www.jb51.net/article/43527.htm
http://blog.csdn.net/tianlesoftware/article/details/5314541
http://docs.oracle.com/cd/B28359_01/server.111/b31107/asmcon.htm#OSTMG036