Oracle ASM无法识别扩展分区的磁盘设备

在linux 环境下,我们一般通过udev或者asmlib来绑定磁盘分区作为ASM的候选存储单元。在使用udev的情况下,一般只要我们可以看到被绑定的磁盘的设备,并且这些设备的属主和权限没有问题,ASM就可以识别并使用这些设备了。 但是也有例外情况:

1. 首先观察到的现象:在ASMCA的“"show eligible" 页面,看不到udev绑定的设备/dev/data2

2. udev的rule,和设备的权限以及属主都没有问题

cat 99-oracle-asmdevices.rules

......
KERNEL=="sda1",BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent",RESULT=="360a980004430753872244b6e4a376f70",NAME="data2",OWNER="grid", GROUP="asmadmin", MODE="0660"

ls -l /dev |grep data
......
brw-rw---- 1 grid asmadmin 8, 1 Nov 1 09:36 data2

3. 通过kfed来读取这个设备,好像也没有问题:

$ kfed read /dev/data2
kfbh.endian: 0 ; 0x000: 0x00
kfbh.hard: 0 ; 0x001: 0x00
kfbh.type: 0 ; 0x002: KFBTYP_INVALID
kfbh.datfmt: 0 ; 0x003: 0x00
kfbh.block.blk: 0 ; 0x004: blk=0
kfbh.block.obj: 0 ; 0x008: file=0
kfbh.check: 0 ; 0x00c: 0x00000000
kfbh.fcn.base: 0 ; 0x010: 0x00000000
kfbh.fcn.wrap: 0 ; 0x014: 0x00000000
kfbh.spare1: 0 ; 0x018: 0x00000000
kfbh.spare2: 0 ; 0x01c: 0x00000000
7FFCA34D0400 00000000 00000000 00000000 00000000 [................]
Repeat 255 times
KFED-00322: Invalid content encountered during block traversal: [kfbtTraverseBlock][Invalid OSM block type][][0]

那么这是什么鬼???看似权限,属主,盘的读取都没有问题啊。。。

后来经过确认,原来这个分区/dev/sda1是个扩展分区(Extended)。。。

fdisk -l

......

Disk /dev/sda: 322.2 GB, 322163441664 bytes
255 heads, 63 sectors/track, 39167 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc4ca7a41

Device Boot Start End Blocks Id System
/dev/sda1 1 39167 314608896 5 Extended

总结,Oracle不能直接使用扩展分区作为ASM的首选存储设备,对于一块磁盘,或者把它分区成主分区,或者在扩展分区上创建逻辑分区。如果发现磁盘的权限,属主,读写都没有问题的话,ASM还是不识别设备,那就再确认一下这个分区是不是个扩展分区。

posted @ 2019-12-10 12:27  ZYLONG-SYS  阅读(766)  评论(0编辑  收藏  举报