磁盤組的屬性是asm 11.1版本引入的,是磁盤組層面而非asm執行個體層面的。磁盤組的屬性有一些隻能在建立磁盤組時指定,有一些隻能在建立之後指定,還有一些可以在任何時候指定。
本篇内容是對本系列文章-【asm attributes directory】的展開。
access_control.enabled屬性指定了一個磁盤組的asm file access control是否啟用,參數的值可以設定為true或者false(預設)。
如果這個屬性設定為true,asm檔案的通路權限就會受到控制。如果設定為false,任何使用者都可以通路磁盤組上的任意檔案。該屬性隻影響檔案的通路,不影響其他操作。
這個屬性可以用alter disk group文法來修改。
access_control.umask屬性與通常os層面的umask類似。用來設定asm檔案的屬主,屬組和其他使用者的權限。這個特性對磁盤組中所有檔案生效。
屬性的值是3位數的組合,每一位可以是0,2,6數字中的一個。預設情況下為066.
某一位的值設定為0表示不排除任何權限;設定為2,表示排除掉寫權限;設定為6表示把讀寫權限都排除。
在設定該屬性之前,要先設定access_control.enabled為true。
這個屬性隻能使用alter diskgroup 文法設定。
au_size屬性控制了磁盤組au的大小,隻能在建立磁盤組時指定。值得一提的是每個磁盤組可以有不同的au_size。
在exadata環境下,使用來自存儲節點的磁盤建立的磁盤組可以設定cell.smart_scan_capable屬性。對于磁盤組中的對象,這個屬性可以開啟smart scan功能。
compatible.asm屬性指定了可以使用磁盤組的asm執行個體的最低軟體版本。
這個屬性也會影響asm中繼資料結構的格式。
當使用create diskgroup文法,asmcmd mkdg指令和em中的create disk group頁面時,compatible.asm預設為10.1。在asm版本11gr2中,當使用asmca建立磁盤組時,預設為11.2,在版本12.1中,預設為12.1.
compatible.rdbms屬性指定了可以使用磁盤組的db執行個體的最小compatible參數值。
在修改該屬性的值之後,要確定所有正在通路磁盤組的db執行個體compatible參數大于等于這個值。
compatible.advm屬性指定了磁盤組是否可以包含asm卷,其值要不小于11.2.
要設定該屬性,compatible.asm必須在11.2(含)以上,環境中需要加載advm卷驅動。預設情況下,該屬性的值為空。
content.check屬性的作用是控制磁盤組在rebalance時,是否進行内容校驗。該屬性的值可以設定為true或者false。
内容校驗包括使用者資料的hard(hardware assisted resilient data)校驗,檔案目錄中檔案類型和檔案目錄資訊的校驗,以及鏡像内容的對比。
該屬性設定為true以後,将啟用所有rebalance操作的邏輯校驗。内容校驗也被稱為磁盤清理特性。
content.type屬性将磁盤組指定為幾種類型:data, recovery或者system。它還決定了到最近的partner磁盤或者failgroup的距離。預設值是data,同時指定了距離為1;值為recovery則指定了距離為3;值為system指定了距離為5.
距離為1的意思是asm認為所有的磁盤都具有partner關系。
距離為3的意思是每第三個磁盤具有partner關系。距離為5的意思是每第五個磁盤具有partner關系。
該屬性可以在建立磁盤組時指定,也可以通過alter diskgroup文法指定。如果用alter diskgroup文法修改 ,新配置将在下一次顯式地指定了rebalance之後生效。
該屬性隻在normal或者high備援的磁盤組中可用。并且compatible.asm要設定為11.2.0.3及以上才能啟用該屬性。
disk_repair_time的值指定了asm保持磁盤offline狀态的時間,超過這個時間之後,将該盤drop。和fast mirror resync特性一樣,compatible.asm屬性要設定為11.1或者更高。 該屬性隻能使用alter diskgroup文法修改。
failgroup_repair_time屬性指定了磁盤組中failgroup的修複時間。當asm判定一整個failgroup發生故障時,這個參數就會啟用。預設值為24小時。如果在alter diskgroup offline disk語句中加入drop after子句,指定的repair time會覆寫failgroup_repair_time。
這個屬性隻能通過alter fiskgroup設定,并且隻對normal和high備援的磁盤組可用。
這兩個屬性用來配置exadata存儲,和intelligent data placement 特性相關。
phys_meta_replicated屬性用來跟蹤磁盤組中繼資料的複制狀态。當磁盤組的asm相容性設定為12.1或者更高時,每個磁盤的實體中繼資料會做複制。這些中繼資料包括此盤頭,fst表和at表。
中繼資料的複制是線上異步做的。如果磁盤組中每個磁盤的中繼資料都做了複制,那麼該屬性的值就會被asm設定為true.
該屬性隻有在compatible.asm設定為12.1或者更高的磁盤組中才可以定義。使用者無法設定或者修改該屬性的值,隻是用來提供中繼資料複制狀态的資訊,要麼為true,要麼為false.
sector_size屬性指定了磁盤組中磁盤的扇區大小,隻能在建立磁盤組時指定。
sector_size可以設定為512,4096或者4k(如果磁盤支援這些值)。預設值依平台而定。如果要修改該屬性的值,需要把compatible.asm和compatible.rdbms設定為11.2或者更高。
注意:acfs不支援扇區為4kb的裝置。
storage.type屬性指定了磁盤組中磁盤的類型。屬性的值可以是exadata,pillar,zfsas和other。如果設定為 exadata|pillar|zfsas,那麼磁盤組中所有的磁盤類型必須和設定的吻合。如果設定為other,那麼磁盤組中可以加入任意類型的磁盤。
如果屬性值設定為pillar或者zfsas,那麼對于磁盤組中的對象可以啟用hcc(hybrid columnar compression)功能。exadata本身已經支援hcc。
注意:zfs類型的存儲必須是通過dnfs(direct nfs)提供;pillar axion類型的存儲必須是通過scsi或者光纖通道提供。
要設定storage.type屬性,compatible.asm和compatible.rdbms屬性都要設定為11.2.0.3或者更高。
如果要支援zfs存儲,compatible.asm和compatible.rdbms屬性要設定為11.2.0.4或者更高。
storage.type屬性可以在建立磁盤組時設定,也可以通過alter diskgroup文法修改。當有用戶端連接配接到磁盤組時,屬性是無法修改的。比如說,當磁盤組上有advm卷啟用時,無法修改該磁盤組的storage.type屬性。
在修改該屬性之前,無法在v$asm_attribute視圖或者通過asmcmd lsattr指令看到它。
thin_provisioned屬性值用來控制在磁盤組reblance結束後,是否丢棄未使用的存儲空間。
支援thin provisioning的存儲産品可以重用丢棄的存儲空間,這樣可以有效提升實體存儲的使用率。
appliance.mode屬性可以在磁盤組drop一塊或多塊asm磁盤時,縮短磁盤rebalance的完成時間。這也就意味着在有(磁盤)故障發生後,資料備援可以更快的恢複。在exadata中建立磁盤組可以自動打開該屬性。已經建立的磁盤組必須使用alter diskgroup文法來設定該屬性。這個特性也被稱為fixed partnering。
隻有滿足以下條件的磁盤組才能啟用該屬性:
compatible.asm設定為11.2.0.4或者更高
cell.smart_scan_capable屬性設定為true
磁盤組中的磁盤是同一類型,比如都是普通硬碟或者都是閃存盤
磁盤組中的磁盤大小相同
磁盤組中所有failgroup有相同的磁盤數量
磁盤組中沒有磁盤是offline狀态
最低軟體版本要求: oracle exadata storage server software release 11.2.3.3; oracle database 11g release 2 (11.2) release 11.2.0.4 注意:在oracle 12.1.0.1中該特性不可用。
不是所有的磁盤組屬性都在官方文檔中有記錄,下面列舉一些比較有意思的屬性。
_rebalance_compact屬性和rebalance過程中的compact階段有關。屬性值可以為true(預設)或者false。設定為false則可以禁止磁盤組rebalance過程中做compact。
_extent_counts屬性和可變區大小特性有關,它決定了區大小在何時會增加。
屬性值設定為“20000 20000 214748367”,意指前20000個區的大小為1個au,接下來20000個區大小由_extent_sizes屬性的第二個值決定,剩下的區大小由_extent_sizes屬性的第三個值決定。
_extent_sizes屬性也和可變區大小特性有關,指定了區大小的增幅 -- 以au為機關。
在asm版本11.1,該屬性值為1 8 64,在11.2及更高版本中,屬性值為1 4 16。
磁盤組的屬性可以通過v$asm_attribute視圖或者asmcmd lsattr指令檢視。
下面是檢視磁盤組play的屬性的一個方法:
可以通過sql的alter diskgroup set attribute文法,asmcmd setattr指令和asmca來修改磁盤組屬性值。下面是使用asmcmd setattr修改play磁盤組的disk_repair_time屬性值的例子:
asm 11.1推出的磁盤組屬性,可以用來優化磁盤組的使用。有些屬性值是專門針對exadata,還有一些隻在特定版本可用。(前文都有标注)
大部分屬性在官方文檔中都有記錄,并且可以通過v$asm_attribute視圖檢視。有一些沒有官方文檔記錄的屬性前面也有所介紹,這些屬性值除非有orcle support,否則不要修改。
<b>本文來自雲栖社群合作夥伴“dbgeek”</b>