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

ASM 磁碟發現神器 KFOD 完整使用指南:參數詳解、跨平台輸出解讀與實戰技巧

     編輯:Oracle 資料庫基礎

KFOD (Kernel Files OS Dependent) 是 Oracle ASM 內建的底層磁碟掃描工具,繞過 ASM 實例直接讀取裝置標頭,用於安裝前驗證、故障排查、磁碟對應關係確認。雖為內部工具 (Undocumented),但長期被 DBA 社群廣泛使用。本文詳細解析參數、AIX/Linux 實際輸出解讀、常見場景與注意事項。

核心參數完整對照表

參數 (縮寫/全寫)功能典型值/說明
-help顯示幫助—
_asm_allow_only_raw_disks僅掃描原始裝置TRUE / FALSE (預設)
_asm_libraries指定 ASM 函式庫'lib1','lib2' (如 ASMLib)
_asmsid目標 ASM 實例 SID+ASM1
asm_diskstring / -a發現字串 (支援多路徑、通配符)'/dev/raw/*', '/dev/oracleasm/disks/*'
disks / -d掃描範圍RAW | ASM | ALL (預設 ALL)
group / -g群組發現模式controlfile (讀取控制檔獲取磁碟組資訊)
nohdr / -n隱藏標題列TRUE / FALSE
op / -o輸出類型DISKS | GROUPS | ALL
pfile / -p指定參數檔+ASM1.ora
status / -s顯示磁碟標頭狀態TRUE / FALSE (含 MEMBER/CANDIDATE/PROVISIONED/FORMER)
verbose / -v詳細錯誤輸出TRUE / FALSE

實戰輸出解讀:AIX vs Linux

AIX 環境 (原始裝置 /dev/rhdiskN)

$ kfod disks=all
--------------------------------------------------------------------------------
 Disk  Size        Path
================================================================================
 1:    102795 Mb   /dev/rhdisk10
 2:    10240 Mb    /dev/rhdisk3
 3:    10240 Mb    /dev/rhdisk4
 4:    51200 Mb    /dev/rhdisk5
 5:    51200 Mb    /dev/rhdisk6
 6:    51200 Mb    /dev/rhdisk7
 7:    51200 Mb    /dev/rhdisk8
 8:    102400 Mb   /dev/rhdisk9
--------------------------------------------------------------------------------
 ORACLE_SID   ORACLE_HOME
================================================================================
 +ASM2        /opt/oracle/product/10.2.0/db
 +ASM1        /opt/oracle/product/10.2.0/db

解讀:

  • Disk:KFOD 分配的序號 (非 ASM 磁碟號)
  • Size:磁碟容量 (MB)
  • Path:OS 裝置路徑,AIX 慣用 /dev/rhdiskN (原始字元裝置)
  • 底部列出偵測到的 ASM 實例 (SID + Home),確認環境正確

Linux 環境 (ASMLib + 原始裝置混合)

$ kfod disks=all
--------------------------------------------------------------------------------
 Disk  Size        Path
================================================================================
 1:    97660 Mb    ORCL:VOL1
 2:    195321 Mb   ORCL:VOL2
--------------------------------------------------------------------------------
 Disk  Size        Path
================================================================================
 1:    250 Mb      /dev/raw/raw1
 2:    251 Mb      /dev/raw/raw2
--------------------------------------------------------------------------------
 ORACLE_SID   ORACLE_HOME
================================================================================
 +ASM2        /opt/oracle/product/10.2.0/db
 +ASM1        /opt/oracle/product/10.2.0/db

解讀:

  • 第一組 ORCL:VOL* 為 ASMLib 標籤 (Oracle ASM Filter Driver / ASMLib 註冊名稱)
  • 第二組 /dev/raw/raw* 為 原始裝置綁定 (udev 規則或 raw 指令建立)
  • 同一物理磁碟可能出現兩次 (ASMLib 標籤 + 原始路徑),以 Size 對應確認

常見實戰場景

1. 安裝前驗證磁碟可見性

# 掃描所有候選裝置,確認 Size/Path 符合規劃
kfod disks=all asm_diskstring='/dev/oracleasm/disks/*,/dev/raw/*' status=true

2. 磁碟標頭狀態檢查

# 顯示 HEADER STATUS:MEMBER(已加入磁碟組) / CANDIDATE(可用) / FORMER(曾屬於) / PROVISIONED(已配置未用)
kfod disks=all status=true

3. 磁碟組層級資訊 (需 ASM 實例運行)

kfod op=groups group=controlfile
# 讀取控制檔顯示磁碟組名、冗余度、磁碟成員對應

4. 多路徑環境去重驗證

# 僅掃描 multipath 裝置,避免單路徑重複
kfod disks=all asm_diskstring='/dev/mapper/asm*'

關鍵注意事項與避坑

  • 需關閉 ASM 實例:KFOD 直接讀取裝置,若 ASM 實例開啟持有鎖,可能報錯或掛起。建議在 ASM 關閉狀態下執行 (或僅讀取模式極謹慎使用)。
  • Root 權限:掃描原始裝置通常需 root 或 oracle 使用者具備裝置讀取權限 (AIX 需 chmod 660 /dev/rhdisk*、Linux 需 udev 規則)。
  • 版本匹配:KFOD 版本必須與目標 ASM 版本一致 (從對應 $ORACLE_HOME/bin/kfod 執行),跨版本可能誤讀標頭格式。
  • 非官方支援:屬於 Undocumented Tool,生產關鍵決策請以 V$ASM_DISK、ASMCMD lsdsk、kfed (單磁碟詳細標頭) 為準。
  • 12c+ ASMFD:若啟用 ASM Filter Driver,磁碟標頭結構變更,舊版 KFOD 可能無法識別,請使用對應版本工具。

對比:KFOD vs KFED vs ASMCMD

工具層級主要用途需 ASM 實例
KFOD裝置掃描/發現安裝前清查、磁碟對應、標頭狀態否 (建議關閉)
KFED單磁碟標頭解析深度分析單一磁碟標頭結構、修復標頭否
ASMCMD lsdskASM 實例視角運行時磁碟狀態、路徑、磁碟組關係是

KFOD 是 ASM 磁碟層面的「X 光機」,掌握其參數與輸出解讀,能在安裝、遷移、災難恢復關鍵時刻快速獲得真相。配合 KFED (微觀) 與 ASMCMD (宏觀),構建完整的 ASM 可視化工具鏈。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved