[b:55f7a7edab]这个帖子和上一个是一对[/b:55f7a7edab]
[b:55f7a7edab]在VxVM下替换失败的系统盘[/b:55f7a7edab]
环境:
Solaris2.X
VxVM 3.2
failed bootdisk(c0t0d0
mirror disk(c0t1d0)
系统盘c0t0d0硬件故障失败,但系统有一个用VxVM做的镜象盘c0t1d0。
下面是替换和恢复系统的过程:
[b:55f7a7edab]1 从镜象盘引导系统[/b:55f7a7edab]
系统无法正常引导时,我们可以让系统进入硬件维护状态,使用devalias找到镜象盘:
ok devalias
vx-mirror /pci@1f,4000/scsi@3/disk@1,0
vx-root /pci@1f,4000/scsi@3/disk@0,0
net /pci@1f,4000/network@1,1
disk /pci@1f,4000/scsi@3/disk@0,0
cdrom /pci@1f,4000/scsi@3/disk@6,0:f
...
然后从镜象盘引导:
ok boot vx-mirror
Boot device: /pci@1f,4000/scsi@3/disk@1,0:a File and args:
SunOS Release 5.8 Version Generic_108528-15 64-bit
Copyright 1983-2001 Sun Microsystems, Inc. All rights reserved.
Starting VxVM restore daemon...
VxVM starting in boot mode...
vxvm:vxconfigd: WARNING: Detaching plex rootvol-01 from volume rootvol
vxvm:vxconfigd: WARNING: Disk rootdisk in group rootdg: Disk device not found
configuring IPv4 interfaces: hme0.
Hostname: app02
VxVM starting special volumes ( swapvol rootvol var ...
VxVM general startup...
dumpadm: no swap devices could be configured as the dump device
The system is coming up. Please wait.
starting rpc services: rpcbind done.
Setting netmask of hme0 to 255.255.255.0
syslog service starting.
Print services started.
volume management starting.
The system is ready.
app02 console login:
请注意以上过程中的vxconfigd的告警信息,它表示VxVM发现卷rootvol中的有一边的
plex即rootvol-01是不可用的,所以它将这个plex从卷中“踢”了出去(detaching)。
但是从镜象盘系统仍然可以正常的启动。
[b:55f7a7edab]2 检查系统状态[/b:55f7a7edab]
进入系统后,使用vxdisk和vxprint命令来检查和确认失败的状态,是否和我们预计的
一致,在这个例子中,我们的rootdg中有3个卷,rootvol,swapvol和var。我们发现
这3个卷中都有1个plex是Disabled的,并且这3个被Disabled的卷正好是建在失败的原
系统盘c0t0d0上的:
# vxdisk list
DEVICE TYPE DISK GROUP STATUS
c0t1d0s2 sliced rootmirror rootdg online
- - rootdisk rootdg failed was:c0t0d0s2
# vxprint -ht
Disk group: rootdg
DG NAME NCONFIG NLOG MINORS GROUP-ID
DM NAME DEVICE TYPE PRIVLEN PUBLEN STATE
RV NAME RLINK_CNT KSTATE STATE PRIMARY DATAVOLS SRL
RL NAME RVG KSTATE STATE REM_HOST REM_DG REM_RLNK
V NAME RVG KSTATE STATE LENGTH READPOL PREFPLEX UTYPE
PL NAME VOLUME KSTATE STATE LENGTH LAYOUT NCOL/WID MODE
SD NAME PLEX DISK DISKOFFS LENGTH [COL/]OFF DEVICE MODE
SV NAME PLEX VOLNAME NVOLLAYR LENGTH [COL/]OFF AM/NM MODE
DC NAME PARENTVOL LOGVOL
SP NAME SNAPVOL DCO
dg rootdg default default 0 1035555399.1025.pegasus
dm rootdisk - - - - NODEVICE
dm rootmirror c0t1d0s2 sliced 3359 17690400 -
v rootvol - ENABLED ACTIVE 13423200 ROUND - root
pl rootvol-01 rootvol DISABLED NODEVICE 13423200 CONCAT - RW
sd rootdisk-B0 rootvol-01 rootdisk 17690399 1 0 - NDEV
sd rootdisk-02 rootvol-01 rootdisk 0 13423199 1 - NDEV
pl rootvol-02 rootvol ENABLED ACTIVE 13423200 CONCAT - RW
sd rootmirror-01 rootvol-02 rootmirror 0 13423200 0 c0t1d0 ENA
v swapvol - ENABLED ACTIVE 2100000 ROUND - swap
pl swapvol-01 swapvol DISABLED NODEVICE 2100000 CONCAT - WO
sd rootdisk-01 swapvol-01 rootdisk 13423199 2100000 0 - NDEV
pl swapvol-02 swapvol ENABLED ACTIVE 2100000 CONCAT - RW
sd rootmirror-02 swapvol-02 rootmirror 13423200 2100000 0 c0t1d0 ENA
v var - ENABLED ACTIVE 2100000 ROUND - fsgen
pl var-01 var DISABLED NODEVICE 2100000 CONCAT - WO
sd rootdisk-03 var-01 rootdisk 15523199 2100000 0 - NDEV
pl var-02 var ENABLED ACTIVE 2100000 CONCAT - RW
sd rootmirror-03 var-02 rootmirror 15523200 2100000 0 c0t1d0 ENA
[b:55f7a7edab]3 替换失败的硬盘并恢复VxVM的配置[/b:55f7a7edab]
拔掉坏盘插入新盘,首先要确定Solaris可以看到新的硬盘,你可以用format命令来确认,然后使用命令:
# vxdctl enable
这一步是让VxVM也读取新盘的信息,然后用vxdisk命令来检查:
# vxdisk list
DEVICE TYPE DISK GROUP STATUS
c0t0d0s2 sliced - - error
c0t1d0s2 sliced rootmirror rootdg online
- - rootdisk rootdg failed was:c0t0d0s2
可以看到VxVM已经看到新盘c0t0d0s2,但它的状态是error,这是正常的,因为VxVM还没有对它进行管理。
接下来要做的就是将新插入的盘c0t0d0s2变回原来的rootdisk,这步工作可以用VxVM
提供的菜单命令vxdiskadm来做,也可以用命令行来做。
# vxdiskadm
出现选项,先选4 - Remove a disk for replacement,
它会问你要删除的"disk name",输入"rootdisk",回主菜单后
再选5-Replace a failed or removed disk,它首先问你上一步
删除的disk name,仍然输入"rootdisk",然后问你一个新的磁盘
来进行初始化,你输入c0t0d0,后面你看提示打Y或N即可。
推出vxdiskadm后,用上面提到的命令:
# vxdisk list
DEVICE TYPE DISK GROUP STATUS
c0t0d0s2 sliced rootdisk rootdg online
c0t1d0s2 sliced rootmirror rootdg online
可以看到c0t0d0s2现在已经开始online了,再使用vxprint -ht命令观察,
你会发现3个卷都在进行同步。另外还有一个命令vxtask list可以让你
看到同步的进度。这里不再细说了。
如果用命令行的话,可以这么做:
# vxdg -k -g rootdg rmdisk rootdisk
# vxdg -k -g rootdg adddisk rootdisk=c0t0d0s2
# vxrecover -bs
确认镜象同步完成后,重新启动系统。
有问题可以发信给我:recommendedpatch@yahoo.com.cn
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/