问题原因是裸设备没有- T O,-T O 对于大 vg 格式卷组,-T O 选项表示逻辑卷控制块不会占用逻辑卷的首块。因此,该空间可供应用程序数据使用。应用程序可以用 IOC INFO ioctl 识别此类逻辑卷。逻辑卷具有设备子类型 DS_LVZ。不使用该选项创建的逻辑卷具有设备子类型 DS_LV。对于旧的且可伸缩的 vg 格式卷组忽略该选项。
一般情况下,AIX的每一个逻辑卷前512字节被称为logical-volume control block (LVCB),包含了LV的一些信息。在 Oracle 9iR2 之前,为了避免和LVCB的冲突,Oracle 软件会跳过前4k字节不用。LVCB的和Oracle跳过4K的特点带来的问题:
如果一个VG中包含多个PV,PV做了条带化(stripe),创建的LV跨在不同的PV上,这样会导致下面的问题,例如:如果stripe是 32K,db_block是8K,如果没有offset,则4个db_block就全在一个stripe里了,不会跨PV。而有了4K的offset,则肯定第四个db_block就跨stripe了,也就成了一个Oracle DB block跨在多个LUN/PV上了,如下图(例子来自于老农的文章):
Big VG的一个bug,就是使用-T O,创建成功的DS_LVZ类型的LV,在经过chlv或者是其它lvm命令,如varyoff/varyon之后,这个标志会消失。这个情况是比较可怕的,如你采用新创建的lv创建了数据文件,但是,后来,因为HA切换或者其它原因varyoff/varyon了这个VG,甚至exportvg /importvg了这个VG,新的LV在数据库看来,不是DS_LVZ类型的LV,数据库将试图跳过4k的偏移,但是偏移其实是不存在的。具体解决方案就是,请使用scalable类型的VG或者是打以上的补丁:
Problem is caused by defect IY94343 in AIX Operating System.
Users of BIG volume groups with the bos.rte.lvm fileset at the 5.3.0.53 or 5.3.0.54 level.
Veritas VM的解决方法
在AIX操作系统环境下Veritas VM 兼容AIX Logical Volume Manager (LVM), Oracle同样跳过4k。Veritas VM同样使用一种新的LV类型(devsubtype:DS_VMZ)。
Oracle相关支持的信息:
Oracle is enhancing both 9iR2 and 10g to recognize this new type of Volume Manager volume. A patch from Oracle will be available soon that needs to be applied to 9.2.0.5 and 10.1. The reference bug number for this Oracle patch is 3712203.
AIX OS相关支持的信息
This ODM patch recognizes DS_VMZ type RAW Volume Manager volumes. Without this patch, when ODM is enabled, the Oracle instance will fail with error "ORA-01251: Unknown File Header Version read".
要想得到完美的东西太难了, AIX 在 BIG VG 上仍然还有很多问题,目前已知的当属这个“MKLV -TO ON BIG VOLUME GROUPS FAILS TO PUT SOME LV INFORMATION”最为严重--得不到正确的devsubtype 类型,Oracle 则会报告读取数据文件头错误
Warning, cannot write lv control block data
用户为了能够让应用程式直接访问逻辑卷而创建了一个裸逻辑卷,大多数情况下应用程式会覆盖逻辑卷的LVCB,然而这并不是致命性的问题,用户仍然能在这个逻辑卷上执行维护命令:extendlv、mklvcopy、rmlv和crfs ?d(这个命令会损坏LVCB中的所有信息),但并不是所有的LVM命令都能成功执行,例如就无法输入(Import)一个逻辑卷,所以他需要一个正确有效的LVCB才能执行成功。
#od -c /dev/hd1
0000000 A I X L V C B \0 \0 j f s \0 \0 \0
0000020 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0000040 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0 0 0 d 2 8
0000060 7 3 5 3 6 9 7 1 3 0 . 1 6 \0 \0 \0
0000100 \0 \0 \0 l v 0 0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0000120 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
*
0000200 \0 \0 \0 F r i A p r 1 3 1 7
0000220 : 1 6 : 3 5 2 0 0 1 \n \0 \0 \0 \0
0000240 \0 F r i A p r 1 3 1 7 : 1
0000260 6 : 3 8 2 0 0 1 \n \0 \0 \0 \0 \0 D
0000300 2 8 7 3 4 C 0 0 \0 y m m \0 y \0
0000320 \0 001 \0 001 / a l l e n f s \0 \0 \0 \0
0000340 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
*
0000520 \0 \0 \0 \0 l o g = / d e v / h d 8
0000540 : o p t i o n s = r w : a c c o
0000560 u n t = f a l s e \0 \0 \0 \0 \0 \0 \0
0000600 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
*
… …