[转] AIX lv 4k偏移量

转自: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偏移量:
引用
[[email protected]_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偏移量:
引用
[[email protected]_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,真正在物理并没有跨磁盘。

时间: 2024-10-05 04:31:25

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

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

关于这个问题我们首先来看一下AIX的vg的3种类型:original vg 普通卷组big vg 大卷组scalable vg 动态的或者可扩展的卷组如何快速区分这三组卷组呢?通过其参数MAX PVS,上述3个类型的卷组对应的限制是:32.128.1024;除此之外,还可以通过readvgda命令来读取pv的元数据判断.好了,实际来看几个例子.db1:/#uname -aAIX db1 1 6 00F7B72A4C00db1:/#oslevel -r6100-07这是一台aix6.1下的环境,含

aix5.3系统安装oracle 10g使用裸设备--4k偏移量问题

今天朋友在aix 5.3系统上安装oracle 10g 建库是用裸设备时候,dbca建库到2%报错退出,观察alert日志发现是temp表空间空间不足导致.查看该表空间数据文件所在的裸设备容量为512M,建库时候给出的数据文件大小也是512M.也许是因为aix系统以1000进制计算,而oracle数据库计算容量是以1024进制导致差距,随即将oracle数据文件大小改为500M,则正常通过. 但是,在alert日志中不断爆出warning提示:WARNING: You are creating

读了这篇文章 AIX误删除数据的恢复将变得非常简单

在AIX环境下,若因维护误操作.存储mapping错误等,不小心将LV误删除,这种损失通常是巨大的.删除后的不当保护及恢复操作可能使数据无法恢复,也可能增加处理的时间与算法复杂度.如何有效保护现场,并选择正确的数据恢复方案是非常重要的. AIX的存储层有太多文章描述,做为铺垫,简要描述一下.PV相当于物理磁盘(对于存储,是存储映射过来的卷,对于操作系统而言,等同于物理硬盘),若干个PV组成一个VG,意味着可以将容量不同的存储空间合起来统一分配.为了实现这个目的,AIX把同一个VG的所有PV按相同

AIX使用LV创建ASM磁盘组

纠结啊为毛感觉只过了一天,就有两天没写了,今天晚上的机票离开上海.希望小叶子不会难为我. 昨晚研究了一下插卡小哥的业务流程,发现他并不是每个房间都插的,时间在每晚的9点到11点之间.估计是会在周边每个宾馆巡回一遍,插广告的房间有两种可能,第一种就是他们和宾馆沆瀣一气,知道哪个房间有人,第二种可能就是他们只给大床房的房间发,7天没有单间所以单身旅客一般会选择大床房,这绝对是优质潜在用户哇. 晚上看了个 正者无敌 还挺好看的样子,里面男主娶了3房姨太太,不错不错~ 晚上做了个梦,醒来后还是格外清晰,

AIX环境通过增加lv大小来增加ASM diskgroup 大小----非常规方法

先交代环境: AIX 7.1 Oracle/ASM 11.2.0.3 单实例 今测试环境需要将ASM中flashdg的大小增大到35G(目前10G),diskgroup是基于在vg中以raw方式划分出来的lv创建的. 由于是测试环境仅通知AIX管理员,AIX管理员直接通过smit lv 增加fsflashdglv的pp个数,添加之后再操作系统中可以发现lv是增大了,但是flashdg1没有增大.下面来描述整个过程. -----此为非常规方案,常规方案应该是新建lv后,以add disk的方式来增

aix 更改(扩大或减小)增删容量LV

aix 更改lv的大小 smitty extendlv chlv -n NewLVname LVname AIX下减小lv size 1,计算逻辑卷(假设为lvkrnltest)中需要缩小的LP数量 这步不能出错,一旦多删了就麻烦了这你已经计算好了,是最后20个LP. 2,获取lvkrnltest的LVIDgetlvodm -l lvkrnltest00cb1faf00004c000000010a35404686.50 3,获取LV的mapping信息lquerylv -L 00cb1faf00

aix 下创建vg和lv

1.LVM背景介绍 在AIX中,磁盘管理策略是一种Logical Volume Management的方法.简单的说,就是将存储划分为物理卷PV(Phsical Volume).逻辑卷组VG(Logical Volume Group)和逻辑卷LV(Logical Volume)三个层次进行管理. 物理卷是我们最直观的磁盘或者分区,操作系统中可能有多种存储设备.在LVM中,都将其视为物理卷对象(PV). 若干物理卷可以划归到一个逻辑组织中进行统一管理,这就是逻辑卷组(Logical Volume

AIX PV VG LV详解

1.基本概念:PV 物理卷:普通的直接访问的存储设备,有固定的和可移动的之分,代表性的就是硬盘.vg 卷组:AIX中最大的存储单位,一个卷组由一组物理硬盘组成,也就是由一个或多个物理卷组成.pp 物理分区:是把物理卷划分成连续的大小相等的存储单位,一个卷组中的物理分区大小都相等.lp 逻辑分区:适映射物理分区的逻辑单位,一个逻辑分区可以对应一个也可以对应多个物理分区.lv 逻辑卷:是指卷组中由多个逻辑分区组成的集合,逻辑卷中的逻辑分区是连续的,但是对应的物理分 区是不连续的,可以在一个磁盘上,也

AIX命令创建JFS2的LV及FS(非smitty交互模式)

AIX命令创建JFS2的LV及FS 下面命令是创建一个2g逻辑卷及在此卷上创建jfs2的文件系统,并挂载,并配置 系统自动挂载 #mkdir /databack #mklv -t jfs2 -y lv_databack datavg 2g -t 为逻辑卷类型 -y为逻辑卷名字 datavg是指定卷组 2g是逻辑卷的大小 #crfs -v jfs2 -d lv_databack -A yes -m /databack -v 为文件系统的类型 -d为逻辑卷名字 -A 为系统重启后自动挂载 -m为挂载