Oracle ASM是Oracle提供的一種存儲管理技術(shù),將物理磁盤抽象成ASM磁盤組,然后創(chuàng)建ASM磁盤組下的ASM磁盤或稱為ASM設(shè)備,最后將其分配給Oracle數(shù)據(jù)庫,使其可以使用這些設(shè)備進(jìn)行數(shù)據(jù)讀寫和存儲。ASM設(shè)備不是真正的硬件磁盤設(shè)備,而是一個(gè)邏輯設(shè)備,由ASM自動管理,可以通過在ASM磁盤組的內(nèi)部擴(kuò)展和收縮,來滿足不斷增長的數(shù)據(jù)需求,提高了存儲的靈活性和可擴(kuò)展性。
在創(chuàng)建ASM磁盤組時(shí),ASM會自動將磁盤分為若干個(gè)區(qū)域,每個(gè)區(qū)域稱為AU(Allocation Unit)。AU作為ASM的最小基本單位,通過AU大小的設(shè)置,可以調(diào)整整個(gè)系統(tǒng)的性能和效率。如果AU太小,磁盤上創(chuàng)建的ASM文件數(shù)會很多,會導(dǎo)致大量的小文件,訪問時(shí)會增加IO負(fù)載;如果AU太大,則會浪費(fèi)磁盤空間,且在大文件訪問時(shí)需要更長的時(shí)間,影響系統(tǒng)的響應(yīng)效率。
--創(chuàng)建ASM磁盤組 CREATE DISKGROUP asm_diskgroup EXTERNAL REDUNDANCY DISK '/dev/sdb1','/dev/sdc1' ATTRIBUTE 'au_size'='4M'; --查詢磁盤組信息 SELECT NAME, STATE, TOTAL_MB, FREE_MB FROM V$ASM_DISKGROUP;
ASM磁盤組可以配置為兩種冗余方式:外部冗余和內(nèi)部冗余。外部冗余既可以配置為無冗余(Normal)模式,也可以配置為高可靠性(High)模式,High模式下,ASM會為每一個(gè)AU作鏡像,將數(shù)據(jù)與鏡像存儲在不同的磁盤上,當(dāng)其中一個(gè)磁盤出現(xiàn)問題時(shí),可以仍然是數(shù)據(jù)不會丟失。內(nèi)部冗余可以選項(xiàng)為重復(fù)(Duplicated)模式,ASM會將同一個(gè)AU副本存儲在不同的磁盤上。
--創(chuàng)建帶有內(nèi)部冗余的ASM磁盤組 CREATE DISKGROUP asm_dul_diskgroup REDUNDANCY DISK '/dev/sdb1','/dev/sdc1' ATTRIBUTE 'au_size'='4M' FAILGROUP a DISK '/dev/sdd1' FAILGROUP b DISK '/dev/sde1'; --查詢磁盤組狀態(tài) SELECT NAME, STATE, TYPE, TOTAL_MB, FREE_MB FROM V$ASM_DISKGROUP;
ASM設(shè)備和非ASM設(shè)備的不同在于,ASM設(shè)備會被自動管理,由ASM統(tǒng)一進(jìn)行分配和創(chuàng)建。當(dāng)需要新增設(shè)備時(shí),只需要將磁盤Format成ASM并加入ASM磁盤組,在數(shù)據(jù)庫中即可使用。而非ASM設(shè)備則需要手動分配和管理,會增加管理的工作量,并可能出現(xiàn)管理不當(dāng)造成數(shù)據(jù)丟失的風(fēng)險(xiǎn)。
在Oracle RAC環(huán)境下,ASM設(shè)備的管理尤為重要。通過ASM磁盤組來創(chuàng)建ASM設(shè)備,并且將其通過Oracle Clusterware集群服務(wù),分配給各個(gè)節(jié)點(diǎn)。如果在節(jié)點(diǎn)間進(jìn)行數(shù)據(jù)傳輸時(shí),出現(xiàn)了某個(gè)節(jié)點(diǎn)訪問自己節(jié)點(diǎn)的ASM設(shè)備,而其他節(jié)點(diǎn)無法訪問該設(shè)備的情況,就會導(dǎo)致數(shù)據(jù)文件損壞或不一致的問題。此時(shí)需要通過Oracle Clusterware在各個(gè)節(jié)點(diǎn)間進(jìn)行通信和協(xié)調(diào)。
總體來說,Oracle ASM設(shè)備是一種高效、安全、可靠的存儲管理技術(shù),通過ASM磁盤組和ASM設(shè)備的結(jié)合,可以幫助提高存儲的可用性和可擴(kuò)展性,同時(shí)減少管理工作,使運(yùn)維人員可以更加專注于數(shù)據(jù)庫的性能和優(yōu)化工作,提升生產(chǎn)效率。