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

Oracle ASM KFED 工具查看 Disk Header 完整實戰與欄位解讀

     編輯:Oracle 資料庫基礎

工具簡介

`kfed` (Kernel Filesystem Editor) 是 Oracle ASM 附帶的底層工具,可直接讀取 ASM 磁碟 Header,不需掛載 ASM 實例,適合災難恢復、元資料驗證、磁碟遷移驗證。

實戰指令與輸出範例

[oracle@rac2 ~]$ kfed read /dev/mapper/datap1

關鍵輸出欄位解讀:

欄位範例值含義
kfbh.endian1 (0x01)位元序:1=Little Endian (x86),0=Big Endian
kfbh.typeKFBTYP_DISKHEAD (1)區塊類型:磁碟 Header
kfdhdb.driver.provstrORCLDISKDATA磁碟卷標 (Provisioning String)
kfdhdb.grptypKFDGTP_EXTERNAL (1)冗余類型:EXTERNAL / NORMAL / HIGH
kfdhdb.hdrstsKFDHDR_MEMBER (3)Header 狀態:MEMBER 表示已加入磁碟組
kfdhdb.dsknameDATAASM 磁碟名稱
kfdhdb.grpnameDATA磁碟組名稱
kfdhdb.fgnameDATAFailure Group 名稱
kfdhdb.secsize512磁區大小 (bytes)
kfdhdb.blksize4096ASM 區塊大小 (bytes)
kfdhdb.ausize1048576 (1MB)Allocation Unit 大小
kfdhdb.dsksize11993磁碟大小 (單位:AU,即 11993 * 1MB ≈ 11.7 GB)
kfdhdb.pmcnt2Partner 數 (NORMAL 冗余為 2,HIGH 為 3)
kfdhdb.fstlocn / altlocn1 / 2File Directory / Alias Directory 起始 AU 位置
kfdhdb.crestmp / mntstmp時間戳建立時間 / 掛載時間 (含 hi/lo 解析至微秒)
kfdhdb.dbcompat0x0a100000 (10.1)相容版本

實務應用場景

  1. 磁碟遷移驗證: 新舊存儲遷移後,用 `kfed read` 確認 `provstr`、`grpname`、`dskname` 一致。
  2. Header 損壞評估: `hdrsts` 非 `MEMBER` (3) 可能表示 Header 損壞,需 `kfed repair` 或重建。
  3. 冗余層級確認: `grptyp` 與 `pmcnt` 驗證符合設計 (EXTERNAL=0, NORMAL=2, HIGH=3)。
  4. 容量規劃: `dsksize` × `ausize` 計算單磁碟可用容量,乘以磁碟數得磁碟組原始容量。

進階:修復損壞 Header (謹慎操作)

# 備份原 Header
kfed read /dev/mapper/datap1 > /tmp/disk1_header.txt

# 修復範例:修正磁碟名
kfed write /dev/mapper/datap1 dskname='DATA1'

# 修復群組名
kfed write /dev/mapper/datap1 grpname='DATA_GRP'

警告: `kfed write` 直接修改裝置原始資料,操作前必須完整備份 Header,且建議在 Oracle 支援工程師指導下進行。

結語

`kfed` 是 ASM 管理員的「聽診器」,能在實例無法啟動時洞察磁碟元資料真相。熟練解讀 `kfdhdb.*` 核心欄位(群組名、磁碟名、冗余類型、AU 大小、容量、時間戳),並建立定期 `kfed read` 歸檔機制,可大幅縮短存儲層故障的診斷時間。

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