Chinaunix首页 | 论坛 | 博客
  • 博客访问: 440440
  • 博文数量: 95
  • 博客积分: 7012
  • 博客等级: 少将
  • 技术积分: 1127
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-13 22:49
文章存档

2010年(5)

2009年(43)

2008年(47)

我的朋友

分类: LINUX

2009-01-04 20:49:33

                   
                
一、基本知识:
1、vgda
VGDA位于每个物理卷的开头,它包含所有属于本VG的LV和PV的信息.VGDA被几乎所有的LVM命令更新.VGDA产生每个VG的自述.AIX可以读取每个磁
盘的VGDA,从VGDA中,可以获知哪些PV和LV属于这个卷组.每个盘至少包含一个VGDA,时间的变化很重要,VGDA中的时间戳用于确定哪个VGDA正确地
反映了VG的状态.如果VG中一个盘出错,VGDA可能无法同步磁盘,这样磁盘上的VGDA就无法在磁盘不运行的时候更新.所以需要一种方法来更新
VGDA刚在线的磁盘,这就是处理进程要做的.
当磁盘被创建为一个PV(以mkdev命令)的时候,VGDA也被创建,这时会在盘开始保留一段空间给VGDA.当PV被分派到一个VG(用mkvg或extendvg)的
时候实际的VG信息就被写到VGDA中去.当一个PV从VG中删除的时候(用reducevg),VG信息也从VGDA中删除.
2、odm中的内容来自vgda。Matters have not improved, as a second lsvg would confirm. We think
exportvg only references the ODM. We also think lsvg only references the
ODM.(我们要知道lslv和lsvg是用odm来取得信息的)
3、exportvg和importvg
exportvg只是删除原来的vg的odm的信息,在pv上面仍然保留了vgsa和vgda信息,importvg的时候导回来。但是也有exportvg出错,因为有可能
odm损坏而无法清楚。
4、我们在做lvm操作的时候能用高级命令,就不要用低级命令了。
例如下面pvid出现异常的情况,使用chpvid这个高级命令
# varyonvg workvg
PV Status: hdisk5 00017d372f1de834 PVACTIVE
hdisk6 0000000000000000 INVPVID
00017d372f67da78 NAMIDMTCH
varyonvg: Volume group workvg is varied on.
# chpvid 00017d372f67da78 hdisk6
# varyoffvg workvg
# varyonvg workvg
#
(repair any damage if exportvg was run)
# mount /workfs
$ ls /workfs
fs_ok lost+found
#
产生lvm高级命令的实际运行情况,因为lvm大多数高级命令是脚本程序,用sh -xv来追踪lvm命令的过程。
二、问题解决
1、odm坏了,怎么解决:
直接用高级命令解决
redefinevg -d hdisk_name vg_name
synclvodm -P -v vgname
有什么区别。
synclvodm 是同步设备配置数据裤命令
-l 参数是逻辑卷。-p 是物理卷,-v是卷组
系统故障可能导致设备配置数据库(odm)变得与lvm不一致。
一般错误消息为 0516-322 或0516-306。
这个时候主要解决的问题是odm和vgsa不一致,synclvodm用vgsa的东西同步到odm中能够解决一定的问题。
当这个时候问题仍然等不到解决,可以exportvg后importvg中就可以解决大部分这个问题。(所有的这些问题的假设是odm坏了)
2、如果vgsa坏了,怎么解决
------------------------------------------------------------------
一个实例
-------------------------------------------------------------------
由于操作失误(chdev -l hdiskx -a pv=yes) 使得 hdiskx 的PVID发生改变, 硬盘上的内容尽管没被破坏,但由于与VGDA区的描述不一致,造
成卷组无法访问, 该怎么办? 
解答 可用recreatevg命令来重新创建一内容相同的卷组, 以达到修复的目的。
1.首先将原卷组的定义从系统的ODM库中删除:
# exportvg vgname
2. 检查硬盘上VGDA 区的信息,从中得到有关逻辑卷的名称及定义:
如:
#lqueryvg -Atp hdisk2
Max LVs: ------256
PP Size: ------26
Free PPs: -----538
LV count: -----2
PV count: -----1
Total VGDAs: --2
Conc Allowed --0
MAX PPs per ---1016
MAX PVs: ------32
Conc Autovar --0
Varied on Co --0
Logical: ------0003f62a00004c00000000f52f1737c5.1 --datalv1 1
---------------0003f62a00004c00000000f52f1737c5.2 --datalv2 1
Physical: -----0003f62a2f135f0e --------------2 ----0
Total PPs: ----542
LTG size: -----128
HOT SPARE: ----0
AUTO SYNC: ----0
VG PERMISSIO --0
3. 创建逻辑卷名对应表文件。 第一字段为VGDA区中的逻辑卷的名,第二字段为在新卷组中新的逻辑卷名,可相同也可不同;为了修复原有卷
组的内容,通常逻辑卷名保持不变。
如:
#vi -/tmp/lvname
-----datalv1:datalv1
-----datalv2:datalv2
4. 在硬盘上重新创建卷组,保留原有卷组的数据结构。
#recreatevg -y vgname ---l lv_file hdisk_name...
如: 
#recreatevg -y forrecr2 ---l /tmp/lvname hdisk2 
经过上述步骤, 在hdisk2 上创建了一个卷组 forrecr2, 原有的 datalv1, datalv2 逻辑卷的内容也保留了下来。 此时硬盘的PVID与新卷组
VGDA的一致。 
5. 如果卷组上有文件系统,还需修改 /etc/filesystems ,使对应的文件系统的加载点与原来的一致。
ps.可以重新建立vg,也可以采用另外一种方法重新建立lv,不过需要map文件。
-------------------------------------------------------------
-------------------------------------------------------------
3.如果lv有问题的话
getlvcb -AT lvname查找问题,如果有问题的话,例如log出错,可以使用
chfs -a log=/dev/loglv00 /workfs指定log。
note:指定log不能跨越vg的。
阅读(2137) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~