转自:http://www.aixchina.net/Question/29969

前几天在客户数据库做巡检的时候,在警告日志中发现有如下警告:
引用
WARNING: You are creating datafile /dev/rtbs_data01.
WARNING: Oracle recommends creating new datafiles on devices with zero offset. The command "/usr/sbin/mklv -y LVname -T O -w n -s n -r n VGname NumPPs" can be used. Please contact Oracle customer support for more details.

如果在AIX环境创建lv,如果创建带有4k偏移量的lv,Oracle 10g将做如上提示,使用参数-T O,AIX对-T 0有如下解释
引用
-T O
     For big vg format volume groups, the -T O option indicates that the logical volume control block will not occupy the first block of the logical volume.
     Therefore, the space is available for application data. Applications can identify this type of logical volume with the IOC INFO ioctl. The logical volume
     has a device subtype of DS_LVZ. A logical volume created without this option has a device subtype of DS_LV. This option is ignored for old and scalable
     vg format volume groups.

我们对AIX解释做进一步延伸:
AIX在创建vg时有3中vg类型可选,分别是 Original Volume Group,Big Volume Group和Scalable Volume Group
对于普通的VG(Original Volume Group),不管你使用什么命令创建lv,都是普通的DS_LV类型的LV。
对于Big VG,是唯一允许同时存在这两种LV类型的VG,如果我们指定-T O(注意,这里是大写的字母O),则创建DS_LVZ类型的LV,否则,创建普通类型的LV。如
/usr/sbin/mklv -y LVname -T O -w n -s n -r n VGname NumPPs。
对于Scalable-type VG类型的VG,不管你使用什么方式的命令创建lv,都是扩展的DS_LVZ类型的LV。
由Oracle的警告日志可以看出,Oracle 使用raw设备时,建议设置不带4k的lv。那我们不禁有3个疑问:
(1)这4k偏移量有什么用处?
(2)怎么样查看LV是否带有4K偏移量呢?
(3)设置这4k偏移量有什么坏处?
AIX将这4k偏移量称之为lvcb(logical volume control block),它将占用4k的前512个字节,它类似于Oracle数据文件头,保留有lv的创建时间,镜像拷贝信息,文件系统挂载点等。
可以通过getlvcb命令查看lvcb信息:
引用
# getlvcb -AT fslv02
         AIX LVCB
         intrapolicy = m
         copies = 1
         interpolicy = m
         lvid = 000b56cc00004c000000012d264b87e5.14
         lvname = fslv02
         label = /ora10g
         machine id = B56CC4C00
         number lps = 112
         relocatable = y
         strict = y
         stripe width = 0
         stripe size in exponent = 0
         type = jfs2
         upperbound = 32
         fs = vfs=jfs2:log=/dev/loglv00:mount=true:options=rw:account=false
         time created  = Mon Apr 18 09:52:50 2011
         time modified = Mon Apr 18 09:52:56 2011

从2个方面可以查看lv是否有4k偏移量
1、主机层面
没有4k偏移量:
引用
#lslv jfkdb_2G_044
LOGICAL VOLUME: jfkdb_2G_044 VOLUME GROUP: jfk_dbvg_01
LV IDENTIFIER: 00c3dff400004c00000001217a9d839e.84 PERMISSION: read/write
VG STATE: active/complete LV STATE: closed/syncd
TYPE: raw WRITE VERIFY: off
MAX LPs: 1024 PP SIZE: 32 megabyte(s)
COPIES: 1 SCHED POLICY: parallel
LPs: 64 PPs: 64
STALE PPs: 0 BB POLICY: relocatable
INTER-POLICY: maximum RELOCATABLE: yes
INTRA-POLICY: middle UPPER BOUND: 1024
MOUNT POINT: N/A LABEL: None
MIRROR WRITE CONSISTENCY: on/ACTIVE
EACH LP COPY ON A SEPARATE PV ?: yes
Serialize IO ?: NO
DEVICESUBTYPE : DS_LVZ

有4k偏移量:
引用
[root@jfk_p560q /]# lslv jfkdb_2G_044
LOGICAL VOLUME: jfkdb_2G_044 VOLUME GROUP: jfk_db_vg01
LV IDENTIFIER: 00ce76de00004c00000001134ee6bc51.84 PERMISSION: read/write
VG STATE: active/complete LV STATE: opened/syncd
TYPE: raw WRITE VERIFY: off
MAX LPs: 1024 PP SIZE: 32 megabyte(s)
COPIES: 1 SCHED POLICY: parallel
LPs: 64 PPs: 64
STALE PPs: 0 BB POLICY: relocatable
INTER-POLICY: maximum RELOCATABLE: yes
INTRA-POLICY: middle UPPER BOUND: 16
MOUNT POINT: N/A LABEL: None
MIRROR WRITE CONSISTENCY: on/ACTIVE
EACH LP COPY ON A SEPARATE PV ?: yes
Serialize IO ?: NO

(2)Oracle层面:
Oracle提供了一小工具dbfsize(在$ORACLE_HOME/bin下)用于观察lv是否有4k偏移量
无4k偏移量:
引用
$ dbfsize /dev/rlvsysaux_1g

Database file: /dev/rlvsysaux_1g
Database file type: raw device without 4K starting offset
Database file size: 40960 8192 byte blocks

有4k偏移量:
引用
[oracle@jfk_p560q /dev]$ dbfsize /dev/rjfkdb_2G_054

Database file: /dev/rjfkdb_2G_054
Database file type: raw device
Database file size: 262016 8192 byte blocks

如果数据库使用block size为16k,创建跨pv带有4k偏移的lv,条带块大小为64k。这样将导致第4个block横跨2个pv(条带化操作,把lvcb也计算进条带块中)。这样会导致
条带块的第4个Oracle block跨磁盘,撇开性能方面考虑,如果系统异常宕机,或者存储异常宕机,极易引起数据库块损坏,引起ora-01578错误。(metalink ID 261460.1)
引用
$   oerr ora 01578
01578, 00000, "ORACLE data block corrupted (file # %s, block # %s)"
// *Cause:  The data block indicated was corrupted, mostly due to software
//          errors.
// *Action: Try to restore the segment containing the block indicated. This
//          may involve dropping the segment and recreating it. If there
//          is a trace file, report the errors in it to your ORACLE
//          representative.

那是不是不做条带化,lv保留4k,就没问题了呢?
答案还是否定的。如果lv横跨pv,pp size 为64m,那么(64m-4k)/16k,还是除不尽,那问题还是依旧。
Oracle从 9.2.0.3开始可以识别无4k偏移量的lv,那是不是创建无4k偏移量的lv就万事大吉了呢?可惜不是,bug如期而至:
https://www-304.ibm.com/support/docview.wss?uid=isg1IY94343
也就是说当系统重启或者执行chlv之类命令,DS_LVZ标记将会消失,也就意味着Oracle认为此lv有4k偏移量,那也就存在着Oracle block横跨pv的可能性,
如果运气不好的话,ora-01578又不期而至,噩梦由此开始。
引用
IY94343: MKLV -TO ON BIG VOLUME GROUPS FAILS TO PUT SOME LV INFORMATION APPLIES TO AIX 5300-07
****************************************************************
* USERS AFFECTED:
* Users of BIG volume groups with the bos.rte.lvm fileset at
* the 5.3.0.53 or 5.3.0.54 level.
****************************************************************
* PROBLEM DESCRIPTION:
* When creating a logical volume with a device type of DS_LVZ
* using the '-TO' flag, lslv reports a DEVICESUBTYPE of DS_LV
* rather than DS_LVZ.  The problem shows up only after a reboot
* or any subsequent chlv or other LVM command that can update
* the VGDA on disk.
* This problem can cause some applications, such as Oracle, to
* fail to start, and could result in database corruption.

如果没有这个bug,即没有4k的offset,如果db_block_size比strip size大,问题还是存在的,即也会存在跨pv,这是我们建条带化所需要注意的,事实上,我也没看到过条带化大小比block size小的环境。但是这里又引申出一个问题,如果存储底层硬盘全部打散,且已做条带化,并虚拟出硬盘,那讨论应该复杂的多,可能操作系统需要跨磁盘的 block,真正在物理并没有跨磁盘。

 
 

[转] AIX lv 4k偏移量的更多相关文章

  1. 关于AIX lv 4k offset问题初步了解

    关于这个问题我们首先来看一下AIX的vg的3种类型: original vg 普通卷组 big vg 大卷组 scalable vg 动态的或者可扩展的卷组 如何快速区分这三组卷组呢? 通过其参数MA ...

  2. AIX采用LV创ASM磁盘组

    CREATE ASM ON AIX LV DEVICE OS:AIX  6100-03 ASM版本号 10205 # lspv hdisk0          000d295a6d68902b     ...

  3. AIX误删除LV后如何进行现场保护和数据恢复工作

    在AIX环境下,若因维护误操作.存储mapping错误等,不小心将LV误删除,这种损失通常是巨大的.删除后的不当保护及恢复操作可能使数据无法恢复,也可能增加处理的时间与算法复杂度.如何有效保护现场,并 ...

  4. aix创建lv 在lv上创建文件系统

    创建LV命令: mklv -y softlv -t jfs2 rootvg 15G 创建文件系统命令: crfs -v jfs2 -d/dev/softlv -m /soft -A yes 把soft ...

  5. 关于AIX VG中 LV 的状态问题,LV STATE

    在数据库管理过程中常常遇见LV状态异常,而造成LV不能再次被使用的情况,那么AIX中LV的两种状态分别代表什么呢 如果是访问fs需要open,即创建文件系统并mount 文件系统LV STATE 才是 ...

  6. AIX中PV,VG,LV及FS常用相关命令

    1.PV常用相关命令 1)lsdev:列出ODM(Object Data Manager)中的设备. 2)chdev:修改一个AIX设备的属性. 3)mkdev:创建一个AIX设备. 4)chpv:修 ...

  7. AIX存储LV PV VG (转载)

    1.基本概念:PV 物理卷:普通的直接访问的存储设备,有固定的和可移动的之分,代表性的就是硬盘.vg 卷组:AIX中最大的存储单位,一个卷组由一组物理硬盘组成,也就是由一个或多个物理卷组成.pp 物理 ...

  8. IBM AIX创建lv

    #lsvg 查看当前有哪些vgrootvgvgdb02vgdb01datavg#lslv maindb_index 查看maindb_index这个lv 位于哪个vg上,新的lv也要与之相同.LOGI ...

  9. AIX详细的VG,LV扩容步骤

    需求 1.归档日志刷得太快,经常把空间挤爆. 2.Oracle数据库表空间需要扩容 解决方案 1.先做重要数据备份 2.进行文件系统扩容 步骤 1. df -g 查找出/u01 对应的VG卷 VOLU ...

随机推荐

  1. 微信连wifi

    微信连wifi 首先需要到微公众平台添加微信连wifi功能插件

  2. 古诗词api,诗词接口,诗词api,中国诗词

    服务商:api.getlove.cn 分类:诗词 更新时间:2016-03 如果接口不满足您的要求,您可以联系qq:2265658022购买完整的数据库 免费apikey:56eab527a0facb ...

  3. 在C#中如何将多个rtf文件内容组合在一起用一个rtf文件保存?

    //重点为是使用 SelectedRtf 属性 private void button1_Click( object sender, EventArgs e ) { //mergeRTF为并内容后的 ...

  4. 【转】Java集合类

    http://blog.csdn.net/zhangerqing/article/details/8122075 http://android.blog.51cto.com/268543/400557 ...

  5. 移动端自动化环境搭建-stuptools和pip的安装

    安装stuptools和pip A.安装依赖 setuptools 和 pip 并非必须安装的两个包,但安装之后,后续再安装 Python 的库将变得非常简单. B.安装过程

  6. Linux下apache+phppgadmin+postgresql安装配置

    Linux下apache+phppgadmin+postgresql安装配置 操作系统:CentOS 安装包:httpd(首选yum), php(包括php以及php-pgsql,php-mbstri ...

  7. android 自定义alertdialog和取消dialog

    看代码: public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle ...

  8. TJI读书笔记15-持有对象

    TJI读书笔记15-持有对象 总览 类型安全和泛型 Collection接口 添加元素 List 迭代器 LinkedList 栈 Set Map Queue Collection和Iterator ...

  9. Abstract Factory Step by Step --- 抽象工厂

    抽象工厂是创建型模式的代表,其他的还有单件(Singleton).生成器(Builder).工厂方法(Factory Method)以及原型(Prototype),模式本身没有好坏之分,只有适用不适用 ...

  10. HDOJ(2438)几何里的三分

    Turn the corner http://acm.hdu.edu.cn/showproblem.php?pid=2438 题目:一辆车能否在一个路口拐弯,看图就很明白啦. 算法:见下图,只要求出图 ...