VXVM综述

来源:互联网 发布:mac rar解压缩软件 编辑:程序博客网 时间:2024/05/20 18:42

1. Create VG/LV by vxvm(过程样例)

a. 在OceanStor上创建LUN,并mapping

b. 用root登录主机,执行下面命令:

   1) hot_add

vxdisk scandisks

   2) vxdisk -o alldgs list(或者vxdisk list)

   3) 新增的盘处在offline状态,则执行vxdisksetup –if sdb

4) vxdg init vgscp vgscp_1=sdb  //创建VG

5) vxassist -g vgscp -U fsgen make lvscp 10G vgscp_1 //创建LV

6) mkfs.vxfs /dev/vx/dsk/vgscp/lvscp //创建文件系统

7) mkdir /tellin/tellinapp     //创建挂接点

8) mount.vxfs /dev/vx/dsk/vgscp/lvscp /tellin/tellinapp //挂载文件系统

9) df –h    //检查文件是否挂接成功

10) umount /dev/vx/dsk/vgscp/lvscp  //去挂载文件系统

11) vxvol -g vgscp stopall    //去激活

12) vxdg deport vgscp  //导出VG

c. 用root登录备机,执行下面命令

1) vxdg import vgscp    //导入VG

2) vxvol -g vgscp startall     //激活VG

3) mkdir /tellin/tellinapp     //创建挂接点

4) mount.vxfs /dev/vx/dsk/vgscp/lvscp /tellin/tellinapp //挂载文件系统

5) umount /dev/vx/dsk/vgscp/lvscp    //去挂载文件系统

6) vxvol -g vgscp stopall      //去激活

7) vxdg deport vgscp    //导出VG

d. 用root登陆主机,执行下面命令

1) vxdg import vgscp    //导入VG

2) vxvol -g vgscp startall     //激活VG

3) mount.vxfs /dev/vx/dsk/vgscp/lvscp /tellin/tellinapp //挂接文件系统

2. 挂VG(枚举样例)

//挂载所有的VG,枚举全部

a. vxdg import vgora  //导入VG

vxvol -g vgora startall    //激活VG

b. vxdg import vgopt

vxvol -g vgopt startall

c. vxdg import vgphydb

vxvol -g vgphydb startall

d. vxdg import vguoa

vxvol -g vguoa startall

e. vxdg import vgsee

vxdg -g vgsee startall

3. LV is corrupted

mount /dev/vg02/vol2 /mnt/vg02/vol2

UX:vxfs mount: ERROR: V-3-21268: /dev/vg02/vol2 is corrupted. needs checking

fsck -F vxfs -y -o full /dev/vg00/lvol2

 

 

 

 

 

 

命令详述见下面

步骤

命令

说明

检查磁盘状态

vxdisk -e list

 

检查磁盘组状态

vxdg

 

 

see01_a:/usr/lib/vxvm/bin # ./vxdiskunsetup sdg

 

 

/etc/vx/bin/vxreattach -c sde

检查挂接磁盘操作是否可行

启动vxvm守护进程

/usr/lib/vxvm/bin # vxdctl enable

重新扫描设备列表,重新挂接磁盘vxdg –Cf import dg

 

用vxdisk list命令察看,如果看到上述硬盘为error,可以用下述命令使其online:

# ./vxdisksetup c2t0d0

如果不是error

如果对磁盘使用vxdiskunsetup和vxdisksetup,并指定与配置备份中不同的属性,可能会损坏公共区域和其中的所有用户数据。

运行使硬盘在线的命令

# vxdisk online sdb

磁盘组如果不是online状态,不能重新建立磁盘组

显示卷的可访问性和可用性信息

see01_a:~ # vxinfo -g vgsee

lvcdr          fsgen    Startable

vg_name_srl    fsgen    Startable

 

 

see01_a:~ # vxinfo -p -g vgsee

vol  lvcdr          fsgen    Startable

plex lvcdr-01       CLEAN

vol  vg_name_srl    fsgen    Startable

plex vg_name_srl-01 CLEAN

 

Plex状态转换

vxinfo –p –g vgsee

vxmend -o force -g vgsee off lvcdr-01

vxmend -o force -g vgsee on lvcdr-01

vxmend -o force -g vgsee fix active lvcdr-01

 

文件系统不使用

see01_a:~ # mount

see01_a:/dev/vx/rdsk # fuser /dev/vx/rdsk/vgora/*

/dev/vx/rdsk/vgora/lvctl1: 22761 22765 22769 23777

/dev/vx/rdsk/vgora/lvctl2: 22761 22765 22769 23777

/dev/vx/rdsk/vgora/lvctl3: 22761 22765 22769 23777

 

/dev/vx/rdsk/vgora/lvredo1: 22765see01_a:/app # umount /home/oracle/flashback/

# vxvol -g vgrbi stopall

see01_a:/app # vxdg deport vgopt

see01_a:~ # umount /home/see/rbirun

see01_a:~ # umount /home/see/recode

 

 

 

执行mount命令之前需要激活 vxvol  -g vgphydb startall

 

 

激活以后数据库才能启动

 

mount.vxfs /dev/vx/dsk/vgopt/lvarchive /home/oracle/archive

 

 

 

 

重建磁盘组

将磁盘阵列所属的C2T22D0S2作为HOT-SPARE磁盘

# vxedit set spare=on sybased05

其中sybased05是C2T22D0S2的名字,它是在建立磁盘组时自动取的名字

 

注意:在建立raid5卷时,不能选取hot-spare盘,即不能使用上面的syabsed05,也就是C2T22D0S2这块盘

 

建卷

see01_a:/etc # vxassist -g vgsee make vgsee 10G

 

 

# vxassist –g sybasedg make datadev00 2g layout=raid5 sybased01 sybased02 syabsed03

sybased04 sybased06

 

vxassist -g datadg make vol1 500g

 

基础知识

VxVM & 本地磁盘

Veritas Volume Manager(VxVM)提供了一个在线数据存储管理基础,给系统盘和数据盘做本地的镜像和其它RAID功能,并可在线改变Volume的大小。

将物理磁盘置于VxVM控制之下,即在物理对象和VxVM对象之间建立了关系。

Volume Manager的对象:物理对象和虚拟对象(VxVM对象)

物理对象:Physical Disk à VM Disk àsub disk

虚拟对象:Subdisks à Plexes àVolumesàDisk Groups(将VM Disk划入到Disk Group中///当一个主机系统上安装了VxVM软件后,我们必需将VM Disk划入到Disk Group中,另外再在Disk Group上创建一些逻辑卷,来达到VxVM控制物理磁盘的目的。

(1.VM Disk由VxVM控制并组成磁盘组 2.一个或多个Subdisk组成Plex 3.一个卷由一个或多个Plex组成)

1.    安装VxVM

2.    物理磁盘置于VxVM管理之下,成为VM disk(将VM磁盘组成磁盘组)

3.    划入Disk Group

4.    划分LV

若要将物理磁盘置于VxVM控制之下,磁盘一定不能受LVM控制。

VVR

Veritas Volume Replicator(VVR)是一款优秀的异地备份软件,提供数据中心和容灾备点的数据库和应用数据的复制。

VxVM & VVR结合

如果把VxVM和VVR集成在一起,就可通过IP网络将卷组复制到安全区域。

 

VM Disks

一个VM Disk至少应该包含一个分区

一个VM Disk通常分为两个部分

Subdisks

Plex由分布在一个或多个磁盘上的一个或多个SubDisk组成,通常有三种方法可以将SubDisk组成Plex:串联、RAID 0、RAID 5。

Disk Groups

一个磁盘组由一个或多个VM disk组成。缺省的磁盘组名叫rootdg。用户可以增加新的磁盘组。一个卷必须建立在一个磁盘组之内。一个磁盘组内的多个VM disk有相同的配置信息。

Plexes

CLEAN(off,on)->STALE(fix active)->active

OFFLINE(on)->ON

参见前文命令

Volumes

一个卷由一个或多个Plex组成,每一个Plex保存一份相同数据的拷贝。一个卷最多可以有32个Plexes。一个卷内所有的Plexes必须属于同一个磁盘组。卷通常被命名为VOL##,而其中的Plex通常被命名为VOL##-##。

此次遇到一个奇怪的问题是:当1号机正在使用磁盘组,2号机只要重新启动,并且执行vxdg import sybasedg命令,则两台机器上都能看到磁盘组,由于双方发生了资源争抢现象,很容易导致磁盘组被破坏,我曾经因为这个问题将磁盘组建了n次,数据库安装n次,由于磁盘组毁坏,所以整个数据库也被破坏,后来在启动时增加了一个控制文件,过程如下:

# cd /

#cd /etc/rcS.d

#vi S98vxvm

内容为:

    echo “stop sybasedg”

    vxvol –g sybasedg stopall

    vxdg deport sybasedg

添加了上述文件后,系统每次启动时自动将磁盘组deport出去,这里好像是停止了vxvm的autoimport属性,磁盘组不再被重新import。

 

dgdisable状态的dg通常有几种原因导致:

 

1) dg下的volume还在被使用的时候加-f参数强行deport dg(通常不是手工误操作,而是发生故障时,数据库Agent的退出代码没有退出干净,导致数据库还在访问volume裸设备或者应用Agent的退出代码没有退出干净导致文件系统没有真正umount成功等情况,而VCS的servicegroup的offline操作执行到dg时就会offline失败而调用clean操作,这个clean操作就会自动加-f参数强行deport dg,但还是会失败,并且留下一个dgdisabled状态),如果是这种情况,就需要通过lsof找到是那些进程还在访问裸设备并kill之(针对使用裸设备的情况)或者cat /proc/mounts文件找到还在挂载的文件系统通过fuser -k -m mount_point杀掉在该文件系统上打开了文件的进程最后通过/opt/VRTSvcs/bin/vxumount -o force mount_point来强行卸载该文件系统(针对使用文件系统的情况),然后执行vxdg deport dgname和vxdg import dgname来恢复这个故障dg,执行vxvol -g dgname -o bg startall来激活该dg下所有的volume。通常这种情况下还需要执行fsck来检查和恢复文件系统;

 

1.1) 之前有这么一个场景,和第1个场景非常相像,不过是由于mount命令的配合问题和代码上的不完备原因共同自动导致的:单板重启时应用进程没有关闭完全,导致重启时文件系统其实是在活动状况下而留下了需要执行fsck的标志位。重启后VCS自动执行online servicegroup操作,执行dg资源的online(dg import)成功,执行volume资源的online(volume start)也成功,但到了mount资源的online时,由于mount命令和mount.vxfs命令之间传递执行结果的缺陷,导致发生了mount命令输出中显示该文件系统没有挂载但/proc/mounts文件里却显示该文件系统已经挂载,而标准版本的mountagent代码不能处理这种异常,online报失败执行clean报成功,却仍然留下了/proc/mounts文件里的相应条目,这之后volume资源offline失败,clean成功,继续保留了/proc/mounts文件里的条目,后面就和第1个场景一样了,执行dg资源的offline失败,clean也会失败,因为操作系统判断该dg下的volume仍然处于打开状态,clean里的强行deport dg操作就会让该dg留下dgdisabled的状态。这个问题后来通过使用HWMountAgent(里面增加了对这种异常的处理代码确保这种需要做fsck的vxfs文件系统可以online成功,也增加了代码确保由于其他异常导致出现mount命令输出于/proc/mounts文件内容不一致时可以正常执行volume的offline/clean操作并去除/proc/mounts文件的相应条目)可以很好消除了;

 

2) I/O的访问异常(通常是磁盘I/O访问错误,比方说磁盘阵列掉电)导致运行期间VxVM直接将dg置为dgdisable状态,这种场景在恢复I/O后重启就可以解决。如果要在线恢复,可以在I/O恢复后,执行和第1种场景一样的恢复操作;

 

3) 极少见的情况是运行期间由于竞争读写导致vxfs文件核心metadata损坏而将文件系统置为full+readonly+need full fsck状态,引发servicegroup的故障offline。和第1.1个场景非常类似,标准版本的mountagent代码对这种异常处理不完备,执行了clean后其实没有完全成功,留下了/proc/mounts里面的条目,却认为clean已经完成而没有执行vxumount(这个命令可以对vxfs文件系统消除上述不一致),后面发生的就和第1.1场景完全一样了。同样,使用了HWMount后这种情况也可以正确消除;

 

针对你反馈的信息,第9块单板比较大的可能是第1.1场景。

 

第5块单板的情况我没有看懂,第1次执行vxdisk list和vxdg list的输出和第2次执行间你还执行了什么操作导致状态发生了变化?vxdisk list看到的auto error状态意味着磁盘上的分区表格式完全不被VxVM识别或者是刚刚划分的LUN,上面还完全没有分区表等情况,这和auto:none online:invalid是很不同的,后者表明VxVM可以识别到这块盘,只是在磁盘上没有发现VxVM的私有区或者有效的私有区(比方说私有区和公有区的数据都完全没被破坏,但是磁头的某些标志位被破坏导致VxVM不认可其实仍然可以恢复的私有区为有效私有区);

 

 

 

 

 

0 0
原创粉丝点击