ASM數(shù)據(jù)庫自動存儲管理淺析
關(guān)于自動存儲管理(ASM)的討論很多,但是到底什么是ASM?ASM是一個有效的抽象層,使你的Oracle數(shù)據(jù)庫可以與叫做diskgroups的抽象空間一起使用,而不是直接使用datafiles。這帶來了很多好處,但是也要求學(xué)習(xí)一些新的概念、命令、使用和管理任務(wù)。所以在投入你的生產(chǎn)系統(tǒng)之前,看看它解決什么、管理什么,以及對它的正反面評價。
為什么創(chuàng)建它?
回答這個問題的***方式是直接追溯源頭,Bill Bridge--自動存儲管理的最初架構(gòu)師。在Oracle Press標(biāo)題中的Oracle ASM,Bill提供了一個鏈接,他在那里討論了使用供應(yīng)商特定操作系統(tǒng)的文件系統(tǒng)來管理Oracle數(shù)據(jù)文件放置所遇到的問題:
1. 對于歸檔日志和備份,操作系統(tǒng)供應(yīng)商不提供共享磁盤文件系統(tǒng)。
2. 邏輯卷管理器隱藏了文件的位置,使得很難管理磁盤I/O和提供良好的統(tǒng)計。
3. 當(dāng)磁盤數(shù)超過100時,現(xiàn)有的lvm不能工作得很好。
4. 當(dāng)數(shù)據(jù)庫有1000以上的數(shù)據(jù)文件時,操作系統(tǒng)和Oracle不能很好地處理數(shù)據(jù)庫。
5. 當(dāng)有大量數(shù)據(jù)文件時命名就變得很困難了。
6. 特性和文件系統(tǒng)限制隨操作系統(tǒng)的不同而不同。
7. 操作系統(tǒng)級的用戶可以通過標(biāo)準(zhǔn)使用接觸到Oracle文件,而Oracle并不知道。
所以,他通過建立Oracle自己的文件系統(tǒng)開始解決這些問題。他的目標(biāo)是提供這些特性:
1. 與Oracle緊密集成,并與集群一起使用(并行服務(wù)器)。
2. 自動使用新的存儲,作為磁盤單元或磁盤組來管理。
3. 支持成千上萬的磁盤。
4. 文件不會名字,并會在操作系統(tǒng)中隱藏起來。
誰需要它?
現(xiàn)在快速瀏覽一下上面那些問題和解決方案會幫助你確定誰需要ASM。起初,它是用來處理現(xiàn)在很大型的聯(lián)機(jī)數(shù)據(jù)庫。所以如果它包括你的商店,那么你可能已經(jīng)在關(guān)注它了,或者開始執(zhí)行ASM。如果你的數(shù)據(jù)庫較小,數(shù)據(jù)文件也不多,那么你可能需要再一些理由使你考慮采用它。
1. 你將要熟悉一些新技術(shù),并且應(yīng)該從在你的開發(fā)環(huán)境中建立它開始,并測試幾個月。
2. 如果你想從你現(xiàn)有的磁盤子系統(tǒng)中獲得更高的性能,并獲得更好的統(tǒng)計用于預(yù)測磁盤I/O。
3. 如果你正在使用RAC,那么就需要考慮ASM了。
開始
ASM是由一個實例管理,非常類似于Oracle數(shù)據(jù)庫。但是初始參數(shù)是非常有限的,而且啟動過程也簡單得多。
a. 將你的ORACLE_SID設(shè)置為+ASM1
b. 編輯init.ora
# as opposed to RDBMS for a normal Oracle instance
INSTANCE_TYPE=ASM
# these names will be used in place of datafile names when you create tablespaces
ASM_DISKGROUPS=SEAN, AARON
processes=100
# this parameter is platform specific and is the path to the raw disk device
ASM_DISKSTRING='/dev/cciss/c0d0p1'
# on 11g you should use diagnostic_dest instead of these
background_dump_dest=/opt/oracle/admin/+ASM/bdump'
core_dump_dest=/opt/oracle/admin/+ASM/cdump'
user_dump_dest=/opt/oracle/admin/+ASM/udump'
c. 啟動ASM實例
$ sqlplus / as sysdba
SQL> startup
d. 創(chuàng)建磁盤組
SQL> create diskgroup SEAN disk '/dev/cciss/c0d0p1';
e. 檢查表空間的創(chuàng)建
你可能會猜測,創(chuàng)建一個表空間會有輕微的改變。默認(rèn)方法如下所示:
SQL> create tablespace sean_space datafile '+SEAN' size 1GB;
不過想一下這個很好的特性。如果在你的數(shù)據(jù)庫中init.ora文件你設(shè)置參數(shù)為:
db_create_file_dest=+SEAN
那么你可以這樣做:
SQL> create tablespace sean_space;
然后讓Oracle做其余的工作。在這兩種情形下,你將發(fā)現(xiàn)在v$datafile中列出的文件路徑是和抽象的+SEAN 磁盤組有關(guān),而不是與一個實際的操作系統(tǒng)數(shù)據(jù)文件。
f. 更多的
當(dāng)然簡化文件名稱和表空間的創(chuàng)建只是ASM可以為你做的工作的冰山一角。它還可以提供一個冗余級別。
在數(shù)據(jù)庫方面,外部冗余能力主要是當(dāng)你在硬件級別(RAID)上或Oracle可以看到的其它外部方法中具有冗余。換句話說,如果asm_diskstring設(shè)備是它們自己的邏輯,隱藏物理磁盤于一些冗余的硬件層后面,那么你就會有外部冗余能力。
但是,如果你沒有這個冗余能力,那么ASM可以提供。你可以指定冗余、失敗組和一組其它的選項來防止損失一個或多個磁盤、控制器或甚至是整個SAM失效。ASM還提供了在磁盤組中均勻分布的I/O。因為ASM很好的了解背后發(fā)生了什么,所以O(shè)racle可以自動的為你提供I/O到磁盤的一個更好的平衡。
使用ASM遇到的挑戰(zhàn)
ASM當(dāng)然是一個具有很大潛能的強(qiáng)大技術(shù)。但是對于每一個技術(shù)解決方案,都會有很多的挑戰(zhàn)。對于ASM,它潛在地破壞了Unix系統(tǒng)管理組和數(shù)據(jù)庫/數(shù)據(jù)庫管理員組間力量的普通平衡。以前的組管理磁盤、硬件和操作系統(tǒng)級別,使數(shù)據(jù)庫管理員與它們協(xié)作獲取新的資源。這將在某種程度上挑戰(zhàn)這個平衡,而這會引起一些來自于這個組的阻力。
***,應(yīng)該是業(yè)務(wù)需求促使了它的采用。還要注意到ASM仍然是處于企業(yè)計算認(rèn)識階段,相對還比較新。有一些供應(yīng)商他們的核心業(yè)務(wù)已經(jīng)放在邏輯空間管理器/文件系統(tǒng)空間中很多年了。一般來說,對于軟件系統(tǒng)和可靠性來說成熟是很重要的。
總結(jié)
自動存儲管理很強(qiáng)大,它為目前部署的不斷發(fā)展的大型數(shù)據(jù)庫系統(tǒng)提供了解決方案。它還可以為較小數(shù)據(jù)庫安裝或者那些使用集群的數(shù)據(jù)庫提供解決方案。如同對于任何新技術(shù)一樣,評估、測試,然后更多的測試。
【編輯推薦】