深入瞭解Oracle ASM
自動儲存管理 (ASM) 是 Oracle Database 的一個特性,它為資料庫管理員提供了一個在所有伺服器和儲存平臺上均一致的簡單儲存管理介面。作為專門為 Oracle 資料庫檔案建立的垂直整合檔案系統和卷管理器,ASM 提供了直接非同步 I/O 的效能以及檔案系統的易管理性。ASM 提供了可節省 DBA 時間的功能,以及管理動態資料庫環境的靈活性,並且提高了效率。ASM 的主要優點有:
簡化和自動化了儲存管理
提高了儲存利用率和敏捷性
提供可預測的效能、可用性和可伸縮性
Oracle Cloud File System 概述
Oracle Cloud File System (CloudFS) 前所未有地簡化了通用檔案的儲存管理、供應自動化和儲存整合。CloudFS 是一個儲存雲基礎架構,提供資源池、網路可訪問性、快速伸縮以及快速供應 — 這些都是雲端計算環境的關鍵要求。該產品包括:
Oracle ASM Dynamic Volume Manager (ADVM)
ADVM 提供了一個通用卷管理服務和一個標準裝置驅動程式介面,便於系統管理員跨不同平臺進行管理。ACFS 和第三方檔案系統可以使用 ASM 動態卷建立和管理可利用 ASM 特性的所有功能的檔案系統。因此,無需停機即可輕鬆調整 ADVM 卷的大小以適應檔案系統的儲存需求。
Oracle ASM Cluster File System (ACFS)
一個通用的與 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不會替代RDBMS去實施IO讀寫,很多對這一點存在誤解,認為RDBMS傳送IO request給ASM,ASM去做真正的IO操作,這是錯誤的。
真正的IO還是由RDBMS程序去實施,和不用ASM的裸裝置一樣
因此ASM不是IO的中間層,也就不存在因為ASM而出現所謂的IO瓶頸
對於ASM而言LUN DISK可以是裸裝置也可以直接是塊裝置(10.2.0.2以後)
適合存放在ASM中的檔案型別包括:資料檔案datafile、控制檔案controlfile、重做日誌redolog、歸檔日誌archivelog、閃回日誌flashback log、spfile、RMAN備份以及block tracking file、datapump檔案
從11gR2開始,ASM引入了ACFS特性可以存放任何型別的檔案; 但是ACFS不支援存放資料檔案
ASM基礎概念:
ASM的最小儲存單位是一個”allocation unit”(AU),通常為1MB,在Exadata上推薦為4MB
ASM的核心是儲存檔案
檔案被劃分為多個檔案片,稱之為”extent”
11g之前extent的大小總是為一個AU,11g之後一個extent可以是1 or 8 or 64個AU
ASM使用file extent map維護檔案extent的位置
ASM在LUN DISK的頭部header維護其元資料,而非資料字典
同時RDBMS DB會在shared pool中快取file extent map,當server process處理IO時使用
因為ASM instance使用類似於普通RDBMS的原理的instance/crash recovery,所以ASM instance奔潰後總是能復原的。
ASM儲存以diskgroups的概念呈現:
Diskgroup DG對RDBMS例項可見,例如一個DATA DG,對於RDBMS來說就是以’+DATA’表示的一個儲存點, 可以在該DG上建立一個tablespace,例如: create tablespace ONASM datafile ‘+DATA’ size 10M。
Diskgroup下面是一個或者多個failure group (FG)
FG被定義為一組Disk
Disk在這裡可以是裸的物理卷、磁碟分割槽、代表某個磁碟陣列的LUN,亦或者是LVM或者NAS裝置
多個FG中的disk不應當具備相同的單點故障,否則ASM的冗餘無效
ASM所提供的高可用性:
ASM提供資料映象以便從磁碟失敗中恢復
使用者可以選擇EXTERNAL、NORMAL、HIGH三種冗餘映象
EXTERNAL即ASM本身不做映象,而依賴於底層儲存陣列資深實現映象;在External下任何的寫錯誤都會導致Disk Group被強制dismount。在此模式下所有的ASM DISK必須都存在健康,否則Disk Group將無法MOUNT
NORMAL 即ASM將為每一個extent建立一個額外的拷貝以便實現冗餘;預設情況下所有的檔案都會被映象,這樣每一個file extent都有2份拷貝。若寫錯誤發生在2個Disk上且這2個Disk是partners時將導致disk Disk Group被強制dismount。若發生失敗的磁碟不是partners則不會引起資料丟失和不可用。
HIGH 即ASM為每一個extent建立兩個額外的拷貝以便實現更高的冗餘。2個互為partners的Disk的失敗不會引起資料丟失,當然不能有更多的partners Disk失敗了。
資料映象依賴於failure group和extent partnering實現。ASM在NORMAL 或 HIGH 冗餘度下可以容許丟失一個failure group中所有的磁碟。
Failure Group映象的使用
ASM的映象並不像RAID 1那樣
ASM的映象基於檔案extent的粒度,extent分佈在多個磁碟之間,稱為partner
Partner disk會存放在一個或者多個分離的failure group上
ASM自動選擇partner並限制其數量小於10個
若磁碟失敗,則ASM更新其extent map使今後的讀取操作指向剩餘的健康partner
在11g中,若某個disk處於offline狀態,則對於檔案的變更會被追蹤記錄這樣當disk被重現online時則這些變化得以重新應用,前提是offline的時間不超過DISK_REPAIR_TIME所指定的時間(預設為3.6個小時). 這種情況常發生在儲存控制器故障或者類似的短期磁碟故障:
這種對於檔案變更的追蹤基於一個發生變化的file extent的點陣圖,該點陣圖告訴ASM哪些extents需要從健康的partner哪裡拷貝至需要修復的disk,該特性稱之為fast mirror resync
在10g中沒有fast mirror resync特性,若disk出現offline則直接自動被drop掉,不存在允許修復的週期
對於無法再online的disk,則必須被drop掉; 一個新的disk會被ASM選擇並通過rebalancing 操作拷貝資料,這些工作是後臺自動完成的。
重新平衡Rebalancing
Rebalancing是在磁碟之間移動檔案extent以實現diskgroup上的IO負載均衡的過程
Rebalancing在後臺非同步發生,是可監控的
在叢集環境中,一個diskgroup的重平衡只能在一個ASM instance上發生,不能通過叢集多節點同時處理以加速
當disk被加入或移除時,ASM會自動在後臺開始資料重新平衡工作
重平衡的速度和力度可以通過asm_power_limit引數控制
asm_power_limit引數預設為1,其範圍為0~11(從11.2.0.2開始是0-1024),該引數控制實施重平衡後臺程序的數量;Level 0表示不實施重新平衡
在重新平衡過程中IO效能(主要是吞吐量和響應時間)可能受到影響,其影響程度取決於儲存本身的能力和重新平衡的力度,預設的asm_powner_limit=1不會造成過度的影響
效能方面
ASM會通過在DG中條帶化檔案extent分佈以最大化可用的IO頻寬
有2種可用條帶化寬度:coarse粗糙條帶化大小為1個AU,fine精細條帶化為128K
即便是fine精細條帶化仍採用普通大小的file extent,但是條帶化以更小的片形式迴圈式地分佈在多個extent上
ASM預設不讓RDBMS去讀備用的映象拷貝extent,即使這樣請放心IO還是均衡的
預設情況下RDBMS總是去讀取主primary extent,從11.1開始可以通過PREFERRED_READ_FAILURE_GROUP引數設定讓本地節點優先讀取某個failure group中的extent; 該特性主要為extended distance RAC設計,不建議在常規ASM中使用
其他知識
並非RAC才能使用ASM,單節點同樣可以從ASM哪裡獲得好處
節點上的一個ASM instance例項可以為多個RDBMS DB例項服務
RAC環境中的ASM必須也是叢集化的,以便能夠協調更新元資料
從11.2開始,ASM從RDBMS HOME分離出來,而和clusterware一起安裝在GRID HOME下。
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_<process>_<product> (例如: 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 |
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 |
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
[[email protected] ~]$ 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
[[email protected] ~]$ 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
[[email protected] ~]$ 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
[[email protected] ~]$ 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'
[[email protected] ~]$ 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
[[email protected] ~]$ 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'
[[email protected] ~]$ 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
[[email protected] ~]$ 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的誤解,這是以訛傳訛。
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, 重複一千遍。。。。
相關推薦
深入瞭解Oracle ASM
Oracle 自動儲存管理概述 自動儲存管理 (ASM) 是 Oracle Database 的一個特性,它為資料庫管理員提供了一個在所有伺服器和儲存平臺上均一致的簡單儲存管理介面。作為專門為 Oracle 資料庫檔案建立的垂直整合檔案系統和卷管理器,ASM 提供了直接非同
深入瞭解 Oracle Flex ASM 及其優點
深入瞭解 Oracle Flex ASM 及其優點 簡介 Oracle Real Application Cluster (RAC) 是 Oracle 解決方案中的一個著名產品,用於保持業務資料的高可用性。Oracle RAC 允許在所有叢集節點之間共享負載,採用 N-1 容錯配置來應
oracle asm管理
oracle asm oracle asm管理1、asm優點概念:auto storage managedb+instance<=====> raw裸設備性能比較:raw > asm > filesystem管理方便性 filesystem
IP地址是什麼,618IP代理帶你深入瞭解
618IP代理,帶你深入瞭解什麼是IP地址,如何運用好IP地址,已經怎麼更改自己的IP地址QQ3218080091 IP地址對於經常上網的人應該都不陌生,ip地址又可以分成內網ip地址和公網ip地址,今天就來簡單介紹下這兩者的區別。 通常我們所說的內網也就是區域網,是內網的計算機以網路地址轉換協議,通過一
深入瞭解以太坊虛擬機器第2部分——固定長度資料型別的表示方法
在本系列的第一篇文章中,我們已經看到了一個簡單的Solidity合約的彙編程式碼: contract C { uint256 a; function C() { a = 1; } } 該合約歸結於sstore指令的呼叫: // a = 1 sstore(0x0,
深入瞭解以太坊虛擬機器第3部分——動態資料型別的表示方法
Solidity提供了在其他程式語言常見的資料型別。除了簡單的值型別比如數字和結構體,還有一些其他資料型別,隨著資料的增加可以進行動態擴充套件的動態型別。動態型別的3大類: 對映(Mappings):mapping(bytes32 => uint256), mapping(addres
Android LayoutInflater原理分析,帶你一步步深入瞭解View
有段時間沒寫部落格了,感覺都有些生疏了呢。最近繁忙的工作終於告一段落,又有時間寫文章了,接下來還會繼續堅持每一週篇的節奏。 有不少朋友跟我反應,都希望我可以寫一篇關於View的文章,講一講View的工作原理以及自定義View的方法。沒錯,承諾過的文章我是一定要兌現的,而且在View這個話題上我還
用Unity做遊戲,你需要深入瞭解一下IL2CPP
這次我們翻譯了一篇Unity官方部落格上的文章,原文題目為AN INTRODUCTION TO IL2CPP INTERNALS ,作者是從事Unity軟體開發的Joshua Peterson。文章的看點在於,它是以IL2CPP內部開發人員的角度來講述的,所以對於開發者來說非常有參考價值。 如果
JavaScript 深入瞭解物件中的屬性
轉載:JavaScript 深入瞭解物件中的屬性 JavaScript 深入瞭解物件中的屬性 本篇主要介紹JS中物件的屬性,包括:屬性的分類、訪問方式、檢測屬性、遍歷屬性以及屬性特性等內容。 目錄 1. 介紹:描述屬性的命名方式、查詢路徑以及分類 2. 屬
Python核心知識點:深入瞭解字串的拆分,連線及拼接教程
生活中總有幾樣註定的事:死亡、稅單以及需要處理字串的程式設計師。 字串可以有多種形式。 它們可以是非結構化的文字,使用者名稱,產品描述,資料庫列表名,或者其它任何我們使用語言描述的內容。 既然字串資料幾乎無處不在,那麼掌握所使用的工具如何進行字串處理是非常重要的。 幸運的是,與其它語言甚至舊版本的Python
Qt學習筆記(1) — 深入瞭解Hello World的建立過程
年初的時候就準備學習Qt了,因為工作原因被擱淺好久,現在開始學也不晚,以後每週更新2遍博文作為總結。 學過Windows開發的,會覺得Qt很親切,學起來不是很費勁(PS: 環境搭建比較簡單,本文不作說明),但是還得從Hello World開始一步步來。下面,筆者將用4種不同的方
深入瞭解Thread之構造器
xl_echo編輯整理,歡迎轉載,轉載請宣告文章來源。更多IT、程式設計案例、資料請聯絡QQ:1280023003,加群298140694。百戰不敗,依不自稱常勝,百敗不頹,依能奮力前行。——這才是真正的堪稱強大!! 在之前的文章中我們對多執行緒和實現執行緒等基礎知識有了一
深入瞭解JavaScript底層原理
[TOC] 1. 七種內建型別 基本型別: null,undefined,boolean,number(浮點型別),string,symbol(es6)。 物件:Object。 複製程式碼 型別轉換 typeof: typeof 1 // 'number' typeof '1' // 's
一。深入瞭解JDK1.8 從Package java.io開始
Package java.io 通過資料流,序列化和檔案系統提供系統輸入和輸出。 See: 描述 介面摘要 介面
深入瞭解原型
說原型之前先說說物件,好像在工作中,物件用的挺多的,原型基本上沒有用。既然沒有用那我還要不要學習呢?思考了很久,還是學一學,萬一以後的工作用的著呢?領導常說,上一份工作是為下一份工作做準備的,所以在工作中要多學東西,不要因為暫時不用,而放棄學習,目光要放得長遠。既然這樣我就簡單學一學原型。說原型之前先溫習一下
深入瞭解機器學習之降低損失:迭代方法
迭代學習可能會讓您想到“Hot and Cold”這種尋找隱藏物品(如頂針)的兒童遊戲。在我們的遊戲中,“隱藏的物品”就是最佳模型。剛開始,您會胡亂猜測(“w1 的值為 0。”),等待系統告訴您損失是多少。然後,您再嘗試另一種猜測(“ 的值為 0.5。”),看看損失是多少。哎呀,這次更接
深入瞭解機器學習之降低損失 (Reducing Loss):梯度下降法
迭代方法圖(圖 1)包含一個標題為“計算引數更新”的華而不實的綠框。現在,我們將用更實質的方法代替這種華而不實的演算法。 假設我們有時間和計算資源來計算 的所有可能值的損失。對於我們一直在研究的迴歸問題,所產生的損失與 的圖形始終是凸形。換言之,圖形始終是碗狀圖,如下所示: 圖 2
深入瞭解機器學習 (Descending into ML):訓練與損失
簡單來說,訓練模型表示通過有標籤樣本來學習(確定)所有權重和偏差的理想值。在監督式學習中,機器學習演算法通過以下方式構建模型:檢查多個樣本並嘗試找出可最大限度地減少損失的模型;這一過程稱為經驗風險最小化。 損失是對糟糕預測的懲罰。也就是說,損失是一個數值,表示對於單個樣本而言模型預測
Android 四大元件之——Acitivity(三) 深入瞭解Activity的啟動流程
上圖為整個Activity的啟動流程 接下來我們大概分析 在我們的Android系統中,應用程式是由Launcher這個應用啟動起來的。當我們安裝好應用程式之後,就會在Launcher的介面上生成一個圖示,我們點選圖示時Launch就會啟動我們的應用程式。 1.點選
深入瞭解Kubernetes REST API的工作方式
關於Kubernetes REST API的工作方式: 在哪裡以及如何定義從REST路徑到處理REST呼叫的函式的對映? 與etcd的交互發生在哪裡? 從客戶端發出請求到儲存在etcd中物件的端到端路徑是怎樣的? Kubernetes REST框架 Kubernetes