首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle ASM 自動存儲管理深度解剖:核心架構、11g 新特性與運維實戰

     編輯:Oracle 資料庫基礎

一、 ASM 核心價值:為什麼企業級數據庫需要它?

ASM (Automatic Storage Management) 自 Oracle 10g 引入,是專為 Oracle 數據庫設計的集成式卷管理器與文件系統。它替代了作業系統層面的 LVM(邏輯卷管理器)與原始設備,提供:

  • 統一管理抽象: DBA 僅需管理少量「磁盤組」,ASM 自動處理數百上千個數據文件的創建、命名、條帶化、鏡像與再平衡。
  • 文件級存儲屬性: 不同於 RAID/LVM 的塊級條帶/鏡像,ASM 在文件級實現,同一磁盤組內可為數據文件、控制文件、日志文件、備份集分別指定冗余級別(High/Normal/External)與條帶粒度。
  • RAC 原生支援: 多實例共享磁盤組,無需集群文件系統(如 OCFS2/GFS),通過實例間鎖協調實現並發訪問。
  • 內核級 I/O 路徑: 繞過文件系統緩存,直接發起異步 I/O,降低延遲、提升吞吐。

二、 核心概念模型

概念說明類比
磁盤組ASM 管理的邏輯存儲池,由多個 ASM 磁盤組成LVM 的 Volume Group
ASM 磁盤磁盤組內的最小分配單元,對應物理磁盤/分區/LUNLVM 的 Physical Volume
分配單元數據在磁盤組內條帶化的基本塊(默認 1MB/4MB)Stripe Unit
文件數據文件、控制文件、日志、備份集等,均為 ASM 文件文件系統中的文件
模板定義文件的冗余、條帶、區域屬性的預設配置文件系統的默認屬性

三、 11g 里程碑新特性:Fast Mirror Resync(快速鏡像重同步)

痛點:傳統磁盤離線後的漫長重建

10g 中,磁盤離線(如纜線鬆動、HBA 故障、電源抖動)導致磁盤組冗余降級。磁盤恢復上線後,ASM 需全量重讀磁盤所有 Extent 並重新鏡像,耗時與磁盤容量成正比,TB 級磁盤可能需數小時甚至數天,期間冗余缺失風險極高。

11g 解決方案:增量追蹤 + 可配置修復窗口

  1. 離線追蹤: 磁盤離線後,ASM 在內存與磁盤組元數據中記錄該磁盤上所有 Extent 的變更位圖(Dirty Region Tracking)。
  2. 快速重同步: 磁盤修復上線(`ALTER DISKGROUP ... ONLINE DISK`)時,僅同步變更的 Extent,而非全量掃描,恢復時間從「小時級」降至「分鐘級」。
  3. DISK_REPAIR_TIME 屬性: 定義磁盤被標記離線後「寬限期」,默認 3.6 小時(單位:H/M,如 `4.5h` 或 `270m`)。窗口內磁盤不被自動剔除,超時則觸發 `DROP AFTER` 邏輯永久移除。

關鍵配置示例

-- 創建磁盤組並啟用 11.1 兼容性(Fast Resync 前提)
CREATE DISKGROUP data_dg NORMAL REDUNDANCY
  DISK '/dev/asm-disk1', '/dev/asm-disk2', '/dev/asm-disk3'
  ATTRIBUTE 'compatible.asm'='11.1', 'compatible.rdbms'='11.1';

-- 修改修復窗口為 6 小時
ALTER DISKGROUP data_dg SET ATTRIBUTE 'disk_repair_time'='6h';

-- 手動離線磁盤並指定 2 小時後自動剔除(覆蓋組級屬性)
ALTER DISKGROUP data_dg OFFLINE DISK data_dg_0001 DROP AFTER 2h;

-- 磁盤修復後上線觸發快速重同步
ALTER DISKGROUP data_dg ONLINE DISK data_dg_0001;

-- 查看離線磁盤剩餘寬限期(秒)
SELECT name, path, state, repair_timer FROM v$asm_disk WHERE group_number = 1;

運維鐵律

  • 兼容性門檻: `compatible.asm` 和 `compatible.rdbms` 必須 ≥ 11.1 才能啟用 Fast Resync。
  • 不可 DROP 離線磁盤: 直接 `DROP DISK` 會報錯,必須先 `ONLINE` 或等待 `DROP AFTER` 到期。
  • 重置陷阱: 同一磁盤連續兩次 `OFFLINE` 會重置計時器;`DROP AFTER 0h` 可強制立即剔除不可修復磁盤。

四、 ASM 實例架構與進程模型

進程所在實例職責
RBALASM / RDBMSASM 端:協調再平衡計劃;RDBMS 端:打開磁盤組、參與再平衡鎖協調
ARBn (n=0-9)ASM實際執行 Extent 遷移的工作進程,由 `ASM_POWER_LIMIT` 控制並行度
ASMBRDBMS連接 ASM 實例的橋樑:傳遞 Extent Map 更新、心跳檢測、元數據同步

啟動順序鐵律: ASM 實例 → RDBMS 實例。關閉順序相反。ASM SGA 默認值(Shared Pool 48M, Large Pool 12M)通常足夠,僅在超大磁盤組(>10TB)需按 Extent Map 大小調大 Shared Pool。

五、 ASMLib 部署最佳實踐

ASMLib 為 Linux 提供內核模塊與用戶態工具,簡化裸設備綁定、權限持久化與多路徑識別。

  1. 內核匹配: 下載 `oracleasm-kernel-version.rpm` 嚴格匹配 `uname -r`(如 `2.6.32-754.el6.x86_64`)。
  2. 配置服務: `oracleasm configure -i` 設置擁有用戶/組、開機自啟、權限修正。
  3. 創建磁盤: `oracleasm createdisk VOL1 /dev/sdb1` 將分區標記為 ASM 磁盤(寫入磁盤頭元數據)。
  4. 掃描同步: 所有節點執行 `oracleasm scandisks` 並驗證 `oracleasm listdisks` 見到同名磁盤。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved