kfed是一个没有官方文档记录的ASM工具,它可以用来读取和修改ASM的元数据块。它本身是一个独立的工具,独立于ASM实例,因此不管实例是否启动,ASM磁盘组是否mount ,它都可以正常使用。kfed最为强大的地方在于它可以修复ASM损坏的元数据。
kfed的二进制文件在最近的ASM版本中直接可用,如果你没有在$ORACLE_HOME/bin
看到,可以通过如下步骤来编译获得:
$ cd $ORACLE_HOME/rdbms/lib
$ make -f ins* ikfed
译者注,在11G之前的版本,kfed工具默认没有编译,需要手工编译后才能使用。11G之后版本软件安装完成后就已经对kfed完成了编译,直接可以使用。
kfed read
使用kfed来可以读取一个ASM元数据块(4K大小),它的语法是:
$ kfed read [aun=ii aus=jj blkn=kk dev=]asm_disk_name
命令行参数的介绍:
- aun-读取的AU号,如果不提供值,默认为AU 0
- aus-AU的大小,默认为1048576字节(1MB),如果磁盘组不是默认的AU大小,那么需要在命令行中显式的指定AU的大小
- blkn-读取的块号,默认为块0或者是AU的第一个block
- dev-ASM磁盘或设备名称。注意dev关键字可省略,但是磁盘名是必须输入的
Use kfed to read ASM disk header block
接下来是一个使用kfed工具的例子,展示了读取ASM磁盘/dev/sda1的磁盘头:
$ kfed read /dev/sda1 | more
kfbh.endian: 1 ; 0x000: 0x01
kfbh.hard: 130 ; <