AIX LVM基本概念理解及十八个典型问题

 对于AIX系统工程师来说,LVM是无论如何都无法避免的区域,VG镜像、存储迁移、IO调优,存储故障处理各个方面都有LVM的影子。每当我们在这些方面遇到难题时,其实都是直接或间接的和LVM战斗。

以下是一些LVM知识、常见问题及其解决方法和注意事项,掌握这些内容,必将提高你的LVM战斗力!

1. 基本概念

LVM内置在AIX系统中,随着AIX版本的更新而更新。不管是功能性还是扩展性都在逐步发展。我们在日常的工作中,一定结合自己的实际情况做好规划再使用,避免由于LVM本身的限制带来后期维护和扩展的困难。

典型问题:

1. lvm里关于VG三种选项有何差异,在实际使用中有何种不同体现,优缺点在哪里?

2. chvg -t factor各个因子分别代表什么?

3. AIX上卷组里关于quorum这个值的作用和意义?

解答以上问题,需要具备下知识

AIX LVM支持3种类型的VG,分别是normal VG,Big VG和Scalable VG,如下表所示:

这三种VG最重要的区别就是在扩展性上的支持有很大差异。

normal VG扩展性最小,Big VG次之、Scalable VG扩展性最好。

这三种类型的vg是随着AIX版本的更新逐步推出的。如果在早期的项目实施中使用了normal vg,后续还有陆续扩容的需求,可能就会超出normal vg的自身限制,造成扩容失败的后果。此时又两个解决方法:

1. 升级到其他VG类型获取更高的扩展性:

Chvg–B xxvg 升级到big vg,可以在线升级

Chvg–G xxvg升级到scalable vg,需要先执行varyoffvg命令才能升级

两者都需要pv中有足够的空间来承载vgda信息的变更。

2. 更改factor因子。实际是通过更改pp限制来实现,由factor来指定。更改实际上是在pp数支持和pv支持数量上做一个平衡。如:

Chvg–t 2 xxvg

除了容量和扩展性的差别。在创建裸设备时,使用scalable vg创建的裸设备lv默认不带4k偏移,big vg加 -T -O参数可以不带4k偏移,普通vg不行。不过现在用裸设备的不多了,可以忽略。

卷组的quorum 是由有效的VGDA(卷组描述区)构成的。一个卷组中至少有2个 VGDA 区,每个物理卷上都至少有一个VGDA。VGDA 中记录了卷组中所包含逻辑卷和物理卷的状态和描述信息。 当卷组中只有一个物理卷时,该物理卷上就会存在2个VGDA区; 当卷组中有两个物理卷上时,其中一块物理卷上有2个VGDA ,另一物理卷上有1个VGDA; 当卷组由在3个以上(>=3)的物理卷组成时,每个物理卷上都会有1个VGDA。 当quorum的值设置为on时,quorum丢失会导致卷组关闭,防止进一步的操作造成数据丢失。

2.故障排错

在LVM的使用中,经常遇到各种故障。有的是理论知识不足,有的是细节有待完善。PVID、VGDA、VGSA、ODM、exportvg、recreatevg等等,我们需要梳理LVM的结构和相关术语,这样才能在故障排错中得心应手。

典型问题:

1. odmvgda混乱时,该如何下手?

2. lg_dumplv报too small,增加后很快又空间不足,能否忽略该问题?

3. vg信息与ODM同步问题?

4. AIX PV 出现missing和remove的状态原因和相应的解决办法探讨?

5. VG中添加PV失败?

解答以上问题,需要具备下知识

AIX中LVM的信息同时存放在硬盘和ODM里,硬盘里的表现为VGDA、VGSA等。当磁盘指定为pv(如执行mkdev)时,vgda被分配。当pv加入vg时,vgda内被写入信息。Aix对磁盘的识别以PVID为准。在正常情况下,硬盘上的信息和ODM里的信息应该是一致的。我们平时所做的操作如lspv、lsvg等命令,实际上是从ODM读取的信息。当执行exportvg命令时,实际上是将odm里的对应信息删除掉,执行importvg则是将vgda里的信息重新复制到odm中。以此为准,上面的问题就比较好解答了:

Q:odmvgda混乱时,该如何下手?

A:我们知道,lvm信息由两份,一份在硬盘上,一份在odm上。如果odm的出了问题,最常见的处理方式就是使用exportvg命令将vg导出后,重新importvg即可。但在一些特殊情况下这样做会不起作用,可以考虑使用以下几种方式:

Synclvodm,是从VGDA同步ODM,前提是VG的定义还在,ODM里错误的被修正,缺失的会从VGDA导入,但ODM里多的还会存在。

redefinevg也是从VGDA同步ODM,前提是VG定义没了才用,要指定从哪个PV导入,ODM里多的还会在

recreatevg,根据vgda信息重建vg,即使PVID丢失,只有原有的lv和fs等结构未破坏即可修复。

Q:lg_dumplv报too small,增加后很快又空间不足,能否忽略该问题?

A:用sysdumpdev -e看看生成的需要多大空间,然后建个大的dump device,指向新的dump device即可。Dump设备是用来在出故障时捕获内存等信息的,如果太小会dump失败。每天的报错是由crontab里的dumpcheck条目触发的。只有空间不足,每天定时任务里的dumpcheck检查都会导致出现报错。

Q:AIX PV 出现missing和remove的状态原因和相应的解决办法探讨?

A:(1).链路异常,物理损坏,不正常操作会导致missing

对应:排查并确保hdisk到存储lun的物理路径正常,如果链路没问题,一般cfgmgr后会自动更正。但是对于aix下rdac的情况,需要额外注意,aixrdac设备如下:

darX:设备路由,可用理解成整个一台存储,一台存储1个如:dar0

dacX:理解成控制器,一台存储2个如:dac0 dac1

hdiskX:聚合后的硬盘

ds45k存储下,rdac这几个设备经常会异常,导致硬盘紊乱,矫正不过来,需要从darx到hdiskx都删除,再重新cfgmgr

(2). 状态异常会导致remove,这个具体原因不明

应对: 使用chpv -v a hdiskx可以手工更正过来

(3).其他异常,如pvid丢失等。可通过recreatevg命令重建vg

3.LVM在集群环境中的应用

在实际生产环境中,LVM经常会出现在各种集群环境中,比如IBM PowerHA,Oracle RAC等等,在不同的集群环境、不用的应用场景中,对LVM的要求也各不相同,需要我们在实施和维护中多加注意。

典型问题:

1. HACMP中LVM shrink lv问题?

2. 想了解下ha环境中,lvm如何管理,存储扩容,存储性能优化?

3. LVM Mirror其中一台存储挂起,另一台文件系统访问时间?

4. PVID号不同的话不会影响ha接管吧?

5. 在HA环境下不停业务,如何将卷组增加mirror pool功能?

解答以上问题,需要具备下知识

LVM最常出现的场景就是IBM PowerHA(以前的HACMP),vg在HACMP中可以以两种方式出现。一种是普通的vg模式,一种是fast takeover模块(concurrent vg)。不管采用哪种方式,要求挂接的存储盘在两个节点上的PVID必须是一样的。最好major number也要一样。在配置好HACMP并投入运行后,后期对存储层面的变更基本都会涉及到lvm,目前有两种处理方式:

(1). 在其中一个节点进行LVM操作,另外一个节点重新导入。这样做需要预留一定的停机时间。

(2). 直接通过hacmp的c-spoc来在线操作,无需停止HACMP。

在使用Oracle RAC的场景中比较特殊。早期Oracle11.2之前的版本,可以使用裸设备、集群文件系统和asm(10版本)。不管是asm还是裸设备都使用了HACMP,在这里HACMP的作用是将并发的concurrent vg在两个节点同时拉起来(当然,rac的一些服务也要像grpsvcs注册,这里只讨论LVM相关)。所以,只有oracle在使用裸设备或asm的情况下,并且使用了LVM的方式,才会用到HACMP,其他时候不需要。并且,使用了HACMP+concurrent vg的场景下,后续lv的增删可以在一个节点执行,另一个节点会自动识别。到了11G r2版本后,裸设备已经不再被支持,HACMP也失去了存在的意义,基本只使用asm了。并且,由于asm使用的是裸磁盘,识别到的hdiskx还需要将PVID清除掉。

现在我们再来看上面的问题:

Q:HACMP中LVM shrink lv问题?

A:直接通过smithacmp–c-spoc菜单执行即可。也可以在单个节点修改后,另一个节点重新导入。

Q: 想了解下HA环境中,LVM如何管理,存储扩容,存储性能优化?

A: LVM管理,HA环境下需要考虑两台机器的一致性问题,powerha 7.1版本会自动把单机lvm命令翻译成HA环境下的双机命令,如果是hacmp6.1之前的版本,要在HA菜单中操作,才能保证共享vg的信息一致:smittycl_lvm

要注意,更老的版本,5.4.1之前的这个经常会失败,也就是说调整lvm,可能需要安排共享vg varyoff。存储扩容,对os来说,就是lvm管理,同上。

存储性能优化,要具体看环境,双存储镜像在核心db上很常见,要注意两份数据,很清晰的分布在两个存储上,而不只是分布在两个lun上。

Q:LVM Mirror其中一台存储挂起,另一台文件系统访问时间?

A:如果是本地盘,几乎没有影响。如果是两个存储做了LVM的镜像,在对这个环境调优情况下,(AIX FC HDISK参数)一般会有20s左右的io挂起时间。

Q:PVID号不同的话不会影响HA接管吧?

A:要求hacmp环境中的共享磁盘具有相同的PVID,最好major number也一样。

Q:在HA环境下不停业务,如何将卷组增加mirror pool功能?

A:mirror pool主要用于hacmp下的lvm mirror。它的好处是可以在盘数比较多的情况下,把要镜像的两组盘区分开。在ha不停机的情况下,步骤如下

(1)通过c-spoc在线添加对应磁盘

(2)通过c-spoc在线创建mirror pool

(3)通过c-spoc把磁盘加到mirror pool中

(4)通过c-spoc给vg做镜像

4.基于LVM的高可用或迁移方案

由于LVM自身的特性,使得可以直接基于LVM设计存储高可用和存储迁移的方案。善用LVM使得我们不管在方案设计还是日常工作中都会受益良多。

典型问题:

1. 生产挂两个存储,在VG层面做镜像,实施DS8000存储级容灾应该注意什么?

2. 对于善用AIX LVM特性直接做存储双活方案,有几个点想咨询?

3. lvm做镜像如何实现磁盘的读写分离?

4. lvm镜像不同存储的两个卷,存储性能需求及存储故障影响?

5. 如何用最短的停机时间实现存储切换/V5100L转V7000?

解答以上问题,需要具备下知识

AIX本身的LVM mirror功能使得AIX在LVM层面上的存储迁移和高可用成功可能。相关的mirrorvg、mklvcopy、migratepv等命令都可以应用这些场景中。其中mirrorvg实际上调用的还是mklvopcy命令,对卷组基本实现镜像。Mklvcopy可单独的对单个lv进行镜像。Migratepv用于在同卷组中的不同pv间迁移数据,不能在不同卷组间迁移,不能迁移条带化lv。

再来看上面的问题:

Q:生产挂两个存储,在VG层面做镜像,实施DS8000存储级容灾应该注意什么?生产挂两个存储,在VG层面做镜像,在这种场景做DS8000存储的MM复制需要关注那几个方面?应该注意什么?

A:这是IBM前几年最推崇的成熟可靠的解决方案,目前很多金融用户有案例,使用相对广泛,近两年开始推广hyperswap的方案了

LVM双存储需要调整大量的AIX OS FC Hidsk的参数,来保证本地的存储高可用性,同城之间使用DWDM来保证数据链路传输安全稳定可靠。

主要还是考虑性能方面的问题,如果两台存储配置不一样,性能不一样的话,做mirror可能会影响上层应用,注意多路径策略的选择。做MM的话,距离太远会导致IO传输路径变长,service time高,对IO响应时间敏感的应用系统需特别关注。

这样架构的还有一个问题在于,灾备端的卷vgda里记录是有VG镜像的。因此,在拉起灾备的时候,会pv missing校验报错,importvg时间会较长。因此在pv较多的情况下,需要测算一下灾备vg varyon的时间。某银行曾出现过类似架构切换拉起卷一个多小时的情况。

Q:对于善用AIX LVM特性直接做存储双活方案,有几个点想咨询?

(1)LVM方式将磁盘做镜像,那么两个镜像副本的IO延时会有几个毫秒的差异,两个镜像的链路也会存在抖动的风险,那么LVM层面有什么参数或者是策略能较少这方面的风险?

(2)将设远端镜像IO延时超时,那么另外一个镜像就相当于掉线了,当链路恢复之后,除了用镜像同步的方式还有没有更好的恢复掉线镜像的方式?

A:

(1)光纤卡的fc_err_recov硬盘的rw_timeoutreassign_to等参数的设置都会对挂起时间略有影响,需要做对应的调整

(2)因为是基于lvm mirror做的,只能从lvm层面同步stale的pp

Q:lvm做镜像如何实现磁盘的读写分离?

A: 通过在lv层面选择不同的策略即可,命令:chlv -d "ps" xxx_lvname

Q:lvm镜像不同存储的两个卷,存储性能需求及存储故障影响?

如题,lvm镜像两个不同存储的卷,系统io读写取决于较差性能的存储,并且lvm没有缓存机制,需要两个存储卷全部写入完成,才算是真正写入完成,一个存储卷或存储故障,整个系统均会受影响,从这两个角度,是否说明lvm不适用于外置存储卷镜像,只适用于内置硬盘镜像。

A:建议通过lv的读写策略来修正,比如在lv层面使用Parallel write with sequential read scheduling policy策略,即:同时写A,写B,A完成,B完成,写入完成永远从A读,读A失败则读B smitchlv可以改

因为写入是个硬需求改不了,顶多优化一下读。如果写操作比例大,还是建议两个存储的性能差别不要太大

Q:如何用最短的停机时间实现存储切换/V5100L转V7000?

各位专家,我客户现有一个存储IBM5100升级V7000的需求,具体有哪些完善的方案?

主机端为原来有P520和P550 ,新购P740,存储V5100,采用磁带LTO6备份。

AIX5.3,ORACLE10 ,SAP应用:业务数据接近3T。

另外,V7000:双控16G缓存,有8400G的SSD硬盘和16600G SAS,请问如果是全新LVM管理,应该如何对以上存储进行更加合理和优化。

A:因为你的新存储是v7000,所以有两种方案,停机时间都非常小,如下:

1. lvm方式。新的v7000接入aix,配置好lun加入vg,以mklvcopy的方式创建镜像,做完后解除镜像删掉5100的lun。可以无停机时间。

2. v7000的vdm:v7000挂接5100,以image模式导入lun,后续使用v7000的空间和5100做vdm即可。需要较短的停机时间,重新挂接存储

以上是LVM常见的十八个典型问题,以及解决这些问题必备的知识。通过这样一番学习,你是否可以在面对LVM的时候更加自信了?

 

 作者:王巧雷

来源:51CTO

时间: 2024-09-18 15:46:49

AIX LVM基本概念理解及十八个典型问题的相关文章

【存储】AIX存储管理基本概念和操作(LVM)

AIX存储管理基本概念和操作 AIX存储管理的基本概念包括(不限于) 1.磁盘或者硬盘如何查看系统已有的磁盘及相关属性 2.物理卷(Physical Volume,PV)物理卷和磁盘/硬盘有何关联,列出系统已有PV及相关属性,添加/删除/维护PV属性 3.卷组(Volume Group,VG)VG的创建,删除,扩容,维护和导入导出迁移,查看相关属性 4.物理分区(Physical Parttion,PP) 什么是PP 5.逻辑分区(Logical Partition,LP) 什么是LP 6.逻辑

DockOne微信分享( 八十八):PPTV聚力传媒的Docker与DevOps

本文讲的是DockOne微信分享( 八十八):PPTV聚力传媒的Docker与DevOps[编者的话]DevOps是2009年前后提出的一个概念,提倡开发(Development)和运维(Operations)这两个领域的高度协同.从而在完成高频率部署的同时,提高生产环境的可靠性.稳定性.弹性和安全性.本次分享介绍了PPTV聚力传媒以Docker技术为支撑,在DevOps方面做的优化,包括: DevOps简介 Docker在PPTV的应用 DevOps与Docker的结合 实现方案 DevOps

学习CSS优化的十八项技巧

css|技巧|优化 一.使用css缩写 使用缩写可以帮助减少你CSS文件的大小,更加容易阅读.css缩写的主要规则请参看<常用css缩写语法总结>,这里就不展开描述. 二.明确定义单位,除非值为0 忘记定义尺寸的单位是CSS新手普遍的错误.在HTML中你可以只写width=100,但是在CSS中,你必须给一个准确的单位,比如:width:100px width:100em.只有两个例外情况可以不定义单位:行高和0值.除此以外,其他值都必须紧跟单位,注意,不要在数值和单位之间加空格. 三.区分大

网页制作技术CSS十八条优化与应用技巧

css|技巧|网页|优化 一.使用css缩写 使用缩写可以帮助减少你CSS文件的大小,更加容易阅读.css缩写的主要规则请参看<常用css缩写语法总结>,这里就不展开描述. 二.明确定义单位,除非值为0 忘 记定义尺寸的单位是CSS新手普遍的错误.在HTML中你可以只写width=100,但是在CSS中,你必须给一个准确的单位,比如:width: 100px width:100em.只有两个例外情况可以不定义单位:行高和0值.除此以外,其他值都必须紧跟单位,注意,不要在数值和单位之间加空格.

CSS的十八般技巧

css|技巧 翻译:阿捷 原文作者:Roger Johansson 作者简介:住在瑞典哥德堡,1994年开始接触和参与web设计,456 Berea Street是他的住址,因此采用这个名字作为他的个人主页域名 最近,经常有朋友问我一些工作中遇到的CSS问题.他们总是不能很好的控制CSS,影响CSS的效率发挥.我来分析总结一下错误所在,帮助大家更加容易使用CSS. 本文总结了我开始使用CSS布局方法以来所有的技巧和兼容方案,我愿意把这些与你分享,我会重点解释一些新手容易犯的错误(包括我自己也犯过

蟊贼一十八:说不得的域名自律公约

在互联网上能憋上一肚子气的个人站长无非就是因为玉米.空间与备案的事.今天说说这的这个事,就是在公元前656年,齐桓公九合诸侯,定下了武力规则的故事.这个小事,在上中学的时候非常让人感慨,感慨到很多小朋友都可以强行纠集另外九个小朋友,自称猪猴. 前些日子,有看到说域名注册商也九合诸侯,六块山庄的地主们都来了,大家经过集体智慧和群策群力,经过热烈的讨论与当前局势的紧密结合,发自内心的进行自我批评与在他人背后进行批评他人的优良作风,最后,隆重的邀请CNNIC的官员同志进行文件监督,然后我国的域名管理监

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十八)

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十八) 完美精灵之八面玲珑(WPF Only)② 紧接着上一节,首先得解释一下为什么需要将这272张图片合成为一张大图.因为如果游戏中还有装备.坐骑等其他设置,那么我们就需要对图片源进行时时的合成:同时对272张甚至更多的图片进行合成效率高还是对2张大图进行合成效率高这是显而易见的.在本节例子中,主角由身体(衣服)及武器两个部分组成:因此,我们还需要定义一个交错数组来保存已经加载的角色装备合成图到内存中: //

设计模式 ( 十八 ) 策略模式Strategy(对象行为型)

设计模式 ( 十八 ) 策略模式Strategy(对象行为型) 1.概述         在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能.如查找.排序等,一种常用的方法是硬编码(Hard Coding)在一个类中,如需要提供多种查找算法,可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个具体的查找算法:当然也可以将这些查找算法封装在一个统一的方法中,通过if-else-或者case等条件判断语

CSS十八条技总结

一.使用css缩写 使用缩写可以帮助减少你CSS文件的大小,更加容易阅读.css缩写的主要规则请参看<常用css缩写语法总结>,这里就不展开描述. 二.明确定义单位,除非值为0 忘记定义尺寸的单位是CSS新手普遍的错误.在HTML中你可以只写width="100",但是在CSS中,你必须给一个准确的单位,比如:width:100px width:100em.只有两个例外情况可以不定义单位:行高和0值.除此以外,其他值都必须紧跟单位,注意,不要在数值和单位之间加空格. 三.区