Bomi
分类: 系统运维
2012-02-05 01:16:52
veritas volume manager(故障处理一)
从未完成的磁盘组移动中恢复
如果当磁盘组移动、分割或结合操作正在进行时系统崩溃或子系统失败,则在系统重新启
动或子系统修复时, VxVM 会尝试逆转或完成该操作。是逆转还是完成操作,取决于操作
进展程度。
自动恢复要求源和目标磁盘组均能够导入。如果该条件不可能满足 (例如,如果其中一个
磁盘组已在另一主机上导入),则执行以下步骤来恢复磁盘组:
1. 使用 vxprint 命令检查这两个磁盘组的配置。未完成移动的磁盘组中的对象,其
TUTIL0 域设置为 MOVE。
2. 输入以下命令,尝试完成移动:
# vxdg recover sourcedg
如果因为其中一个磁盘组已在另一主机上导入或因为其不存在而不能导入,则此操作
失败:
vxvm: vxdg: 错误 : diskgroup: 磁盘组不存在
如果恢复失败,请执行下列相应的步骤。
如果磁盘组已在另一主机上导入,则将它从那个主机上逐出,然后在当前主机上导入。
如果在源磁盘组或目标磁盘组中,所有需要的对象均已存在,则使用以下命令在该磁
盘组中重置 MOVE 标志:
# vxdg -o clean recover diskgroup1
而在另一磁盘组上使用以下命令,将那些 TUTIL0 域标记为 MOVE 的对象删除:
# vxdg -o remove recover diskgroup2
如果只有一个磁盘组可用于导入,则使用以下命令在此磁盘组上重置 MOVE 标志:
# vxdg -o clean recover diskgroup
从 DCO 日志卷故障中恢复
Persistent FastResync (保留式快速再同步)使用数据更改对象 (DCO) 日志卷来执行卷中
更改区域的跟踪。如果当读取或写入 DCO 日志卷时发生错误,则分离该卷并在 DCO 上设
置 badlog 标志。 (可对 vxprint 使用 -a、 -F 或 -m 选项中的一个,检查是否在 DCO
上设置了 badlog 标志。)所有对卷的进一步写入将不会被 DCO 跟踪。
若要恢复 DCO 日志卷,请执行以下步骤:
1. 纠正导致 I/O 失败的问题。
2. 使用以下命令从 DCO 中删除 badlog 标志:
# vxdco -g diskgroup -o force enable dco
3. 使用以下命令重新启动 DCO 日志卷:
# vxvol -g diskgroup start dco_log_vol
4. 使用 vxassist snapclear 命令清除原始卷及其所有镜像的 FastResync 映像。这确
保在对快照进行快照合并时,不会使用有可能失效的 FastResync 映像 (执行一次完全
再同步)。对卷的任何后续快照,将重新启用快速再同步跟踪。
警告在将 badlog 标记从 DCO 中删除后,必须对卷的所有快照使用 vxassistsnapclear 命令。否则,当对快照卷进行快照合并时,有可能丢失或损坏数据。
如果卷及其快照卷在同一磁盘组中,则以下命令将同时清除这两个卷的 FastResync 映
像:
# vxassist -g diskgroup snapclear volume snap_obj_to_snapshot
其中, snap_obj_to_snapshot 是指向快照卷的 snap 对象的名称,该对象与 volume
关联。
如果快照卷和原始卷在不同的磁盘组中,则必须对每个卷执行单独的 snapclear 操
作:
# vxassist -g diskgroup1 snapclear volume snap_obj_to_snapshot
# vxassist -g diskgroup2 snapclear snapvol snap_obj_to_volume
其中, snap_obj_to_volume 是指向原始卷的 snap 对象的名称,该对象与快照卷
snapvol 关联。
5. 若要对在前一步骤中执行了 snapclear 操作的快照卷进行快照合并,请使用以下命
令 (如有必要,请在使用 vxdg move 命令将快照卷移回原始磁盘组之后执行 ):
# vxplex -f -g diskgroup snapback volume snapvol_plex
注意 不能使用 vxassist snapback 命令,因为 snapclear 操作已删除了快照关联信
息。
下列命令序列演示如何恢复跟踪磁盘组 egdg 中顶层卷 vol1 的 DCO 日志卷,还演示如何
将快照卷 SNAP-vol1 与 vol1 快照合并:
# vxdco -g egdg -o force enable vol1_dco
# vxvol -g egdg start vol1_dco
# vxassist -g egdg snapclear vol1 SNAP-vol1_snp
# vxplex -g egdg snapback vol1 SNAP-vol1-01
其中,vol1_dco 是与 vol1 关联的 DCO,SNAP-vol1_snp 是与 vol1 关联的指向快照
SNAP-vol1 的 snap 对象,而 SNAP-vol1-01 是与 vol1 快照合并的快照 plex。
更多信息,请参见 vxassist(1M) 和 vxdco(1M) 帮助手册。
可能的根、 swap 和 usr 配置
在安装期间,根 (/)、 swap 和 usr 文件系统可能有不同的配置。可能出现下列情况:
usr 是 / 下的一个目录,没有为它分配单独的分区。在这种情况下,当封装根磁盘并
使其受 VERITAS Volume Manager 控制时, usr 成为 rootvol 卷的一部分。
usr 在根磁盘上的一个独立于根分区的分区中。在这种情况下,为 usr 分区创建一个
独立卷。vxmirror 在目的地磁盘上镜像 usr 卷。
usr 在根磁盘以外的一个磁盘上。在这种情况下,仅当使用 VxVM 封装该磁盘时才为
usr 分区创建一个卷。注意,如果独立的 usr 分区因任何原因而变得无法存取,则封
装根磁盘和拥有根卷的镜像对维护系统的可用性不起作用。要获得系统的最大可用性,
建议您封装根磁盘和包含 usr 分区的磁盘,并镜像 usr、rootvol, 和 swapvol 卷。
VxVM 允许您将 swap 分区放置在任何磁盘上; 在引导进程的早期阶段,不需要初始
swap 区域。默认情况下, VERITAS Volume Manager 安装选择选定磁盘上的分区 0 作为
根分区,而分区 1 作为 swap 分区。但是, swap 分区也可以在根磁盘以外的分区上。在这
种情况下,建议您封装该磁盘并为 swap 卷创建镜像。如果不这样做,则对 swap 分区的
损坏将最终导致系统崩溃。或许还可以引导系统,但具有 swapvol 卷的镜象可以防止系
统故障。
从替换引导磁盘启动系统
如果已封装并镜像根磁盘,则当主引导磁盘失败时,可以使用其镜像中的一个来引导系
统。在 SPARC 系统上,若要在主引导磁盘发生故障后引导系统,请按下列步骤进行:
1. 在引导提示符下输入以下命令,检查 EEPROM 变量 use-nvramrc? 的设置:
ok printenv use-nvramrc?
如果此变量设置为 true,则允许使用替换的引导磁盘。若要将 use-nvramrc? 的值
设置为 true,在引导提示符下输入以下命令:
ok setenv use-nvramrc? true
如果 use-nvramrc? 设置为 false,则系统无法从 devalias 引导,并显示诸如以
下的错误信息:
Rebooting with command: boot vx-mirdisk
Boot device: /pci@1f,4000/scsi@3/disk@0,0 File and args:vx-mirdisk
boot: cannot open vx-mirdisk
Enter filename [vx-mirdisk]:
2. 在引导提示符下使用以下命令,检查可用的引导磁盘别名:
ok devalias
根磁盘的合适镜像以 vx-diskname 形式的名称列出。
3. 输入此命令:
ok boot alias
其中, alias 是从前一步骤找到的替换根磁盘镜像的名称。
如果选定的磁盘包含失效的根镜像,则 vxconfigd 显示错误信息,指出镜像不可用,
并列出所有非失效的替换引导磁盘。
SPARC 系统上的引导进程
除非已在固件所使用的非易失存储区域设置了 autoboot 标志,否则 Sun SPARC 系统会
提示输入引导命令。带有较老的 PROM 的机器,其提示符不同于较新的 V2 和 V3 版本。
这些较新版本的 PROM 还称为 OpenBoot PROM (OBP)。较新类型 PROM 的 boot 命令的
语法为:
ok boot [OBP names] [filename] [boot-flags]
OBP names 指定 OpenBoot PROM 标示。例如,在 Desktop SPARC 系统上,标示
sbus/esp@0,800000/sd@3,0:a 表示一个位于 SCSI 总线上的目标 3、 lun 0 的 SCSI 磁
盘 (sd),带有插入插槽 0 的 esp 主机总线适配器。
注意 可以使用 VERITAS Volume Manager 引导磁盘别名来取代 OBP 名称。别名实例为
vx-rootdisk 或 vx-disk01。若要列出可用的引导设备,在 OpenBoot 提示符下
使用 devalias 命令。
filename 是包含内核的文件名称。默认为根分区中的 /kernel/unix。如有必要,可以
通过指定 -a 标志来指定其它程序 (如 /stand/diag)。 (某些固件版本允许在系统的
非易失存储区域保存默认文件名。)
注意 不要使用由 -a 标志所引入的全部默认值来引导正在运行启用了根目录可置性的VxVM 的系统。
热重定位与引导磁盘故障
如果引导 ( 根 ) 磁盘发生故障并且它已镜像,热重定位会自动尝试用新镜像更换出错的根
磁盘。要达到此目的,热重定位使用幸存的根磁盘镜像在备用磁盘或者在具有足够空闲空
间的磁盘上创建新镜像。这确保始终有至少两个根磁盘的镜像可用于引导系统。热重定位
后台驻留程序还调用 vxbootsetup 实用程序,将带有新镜像的磁盘配置为可引导磁盘。
如果 rootdg 磁盘组未包含足够的备用磁盘或空闲空间来容纳来自出错根磁盘的卷,则对
根磁盘的热重定位会失败。rootvol 和 swapvol 卷需要连续的磁盘空间。如果出错根磁
盘上的根卷和其它卷不能重定位到同一新磁盘,则每个卷可能重定位到不同的磁盘。
rootvol 和 swapvol 卷的镜像必须是磁柱对准的。这意味着,它们只能创建在那些具有
足够空间来允许其子磁盘起始和结束于磁柱边界的磁盘上。如果没有这样的磁盘存在,则
热重定位无法创建镜像。
将子磁盘解除重定位至替换引导磁盘
当封装引导磁盘时,会将根文件系统和其它系统区域,如 swap 分区建立为卷。 VxVM 使
用部分现有的交换区来创建专用区域,它通常位于磁盘的中部。但是,当磁盘初始化为
VM 磁盘时, VxVM 在磁盘的起始处创建专用区域。
如果镜像的封装引导磁盘失败,则热重定位在备用磁盘上创建其子磁盘的新副本。作为此
进程的一部分,出错磁盘的名称及其成分子磁盘的偏移均存储在子磁盘记录中。在以具有
同样存储容量的磁盘更换出错的引导磁盘之后,它被 “初始化”并添加回磁盘组。可以运
行 vxunreloc 以将所有子磁盘移回该磁盘。但是,初始化磁盘与封装磁盘间的不同磁盘
布局会影响计算每个解除重定位的子磁盘在磁盘中的偏移的方式。对 vxunreloc 使用 -f
选项,可将子磁盘移到该磁盘,但不必移到相同的偏移处。为使此操作成功,替换磁盘应
至少比原始引导磁盘大 2 千兆字节。
vxunreloc 在将所有子磁盘移到新磁盘后,使该磁盘成为可引导磁盘。
注意 系统转储设备通常配置为根磁盘的 swap 分区。一旦交换子磁盘从一个磁盘移动
(通过热重定位,或使用 vxunreloc)到另一磁盘,必须在新磁盘上重新配置转储
设备。
在 Solaris 2.6 和早期版本中,转储设备的名称存储在 dumpfile 结构中。使用以下命令来
发现其设置:
# echo dumpfile+0x10/s | adb -k /dev/ksyms /dev/mem
其输出类似于如下显示:
physmem 3d24
dumpfile+0x10: /dev/dsk/c0t0d0s1
在此实例中,转储设备配置为 /dev/dsk/c0t0d0s1。要更改此设置,请关机并重新引导
系统。这会将第一个交换分区配置为转储设备。
在 Solaris 7 和其后的版本中,使用 dumpadm 命令查看和设置转储设备。详见 dumpadm
(1M) 帮助手册。
(参考volume manager管理的故障卷)
[ 本帖最后由 云杉上的蝴蝶 于 2008-3-17 17:51 编辑 ]