跳过导航链接 | |
退出打印视图 | |
Solaris Volume Manager 管理指南 Oracle Solaris 10 1/13 Information Library (简体中文) |
4. Solaris Volume Manager for Sun Cluster(概述)
5. 配置和使用 Solaris Volume Manager(方案)
20. 维护 Solaris Volume Manager(任务)
21. Solaris Volume Manager 的最佳做法
25. Solaris Volume Manager 故障排除(任务)
Solaris Volume Manager 故障排除(任务列表)
Solaris Volume Manager 故障排除的一般原则
如何使用 Solaris Volume Manager 配置来恢复系统
A. 重要的 Solaris Volume Manager 文件
B. Solaris Volume Manager 快速参考
由于 Solaris Volume Manager 允许您镜像根 (/)、swap 和 /usr 目录,因此在引导系统时可能会出现特殊问题。这些问题可能由硬件故障引起,也可能由操作错误引起。本节中的过程针对此类潜在问题提供了解决方案。
下表列出了这些问题,并提供了指向相应解决方案的链接。
表 25-1 Solaris Volume Manager 的常见引导问题
|
如果 Solaris Volume Manager 由于错误而使卷脱机,请卸载发生故障的磁盘上的所有文件系统。
由于每个磁盘分片都是独立的,因此可以在单个磁盘上挂载多个文件系统。如果软件遇到了故障,则同一磁盘上的其他分片有可能很快也会遇到故障。直接挂载在磁盘分片上的文件系统不具备 Solaris Volume Manager 错误处理的保护功能。如果使这样的文件系统保持挂载,则很可能会出现系统崩溃和数据丢失的情况。
请尽可能缩短使用已禁用或脱机的子镜像运行的时间。在重新同步和联机备份间隔期间,镜像将失去所有的保护。
如果在 /etc/vfstab 文件中创建了错误的条目(例如,在镜像根 (/) 文件系统时),则系统最初看起来引导正确,但随后会出现故障。要解决此问题,需要在单用户模式下编辑 /etc/vfstab 文件。
从错误的 /etc/vfstab 文件条目中恢复的概括性步骤如下所示:
将系统引导到单用户模式
针对镜像卷运行 fsck 命令
重新挂载文件系统并启用读写选项
可选:针对根 (/) 镜像运行 metaroot 命令
验证 /etc/vfstab 文件是否正确引用了与该文件系统条目对应的卷
重新引导系统
在以下示例中,根 (/) 文件系统使用双向镜像 d0 进行镜像。/etc/vfstab 文件中的根 (/) 条目由于某种原因又恢复为文件系统的原始分片。但是,/etc/system 文件中的信息仍显示将从镜像 d0 引导。最可能的原因就是,没有使用 metaroot 命令来维护 /etc/system 和 /etc/vfstab 文件。另外一个原因可能是,/etc/vfstab 文件的旧副本被复制回当前的 /etc/vfstab 文件中。
不正确的 /etc/vfstab 文件与以下内容类似:
#device device mount FS fsck mount mount #to mount to fsck point type pass at boot options # /dev/dsk/c0t3d0s0 /dev/rdsk/c0t3d0s0 / ufs 1 no - /dev/dsk/c0t3d0s1 - - swap - no - /dev/dsk/c0t3d0s6 /dev/rdsk/c0t3d0s6 /usr ufs 2 no - # /proc - /proc proc - no - swap - /tmp tmpfs - yes -
由于这些错误,在系统引导时,将自动进入单用户模式:
ok boot ... configuring network interfaces: hme0. Hostname: host1 mount: /dev/dsk/c0t3d0s0 is not this fstype. setmnt: Cannot open /etc/mnttab for writing INIT: Cannot create /var/adm/utmp or /var/adm/utmpx INIT: failed write of utmpx entry:" " INIT: failed write of utmpx entry:" " INIT: SINGLE USER MODE Type Ctrl-d to proceed with normal startup, (or give root password for system maintenance): <root-password>
此时,根 (/) 和 /usr 文件系统都以只读模式挂载。请执行以下步骤:
注 - 请小心谨慎,务必对根 (/) 镜像使用正确的卷。
# fsck /dev/md/rdsk/d0 ** /dev/md/rdsk/d0 ** Currently Mounted on / ** Phase 1 - Check Blocks and Sizes ** Phase 2 - Check Pathnames ** Phase 3 - Check Connectivity ** Phase 4 - Check Reference Counts ** Phase 5 - Check Cyl groups 2274 files, 11815 used, 10302 free (158 frags, 1268 blocks, 0.7% fragmentation)
# mount -o rw,remount /dev/md/dsk/d0 / mount: warning: cannot lock temp file </etc/.mnt.lock>
# metaroot d0
此命令将编辑 /etc/system 和 /etc/vfstab 文件,以指定根 (/) 文件系统当前位于卷 d0 上。
/etc/vfstab 文件中的根 (/) 条目应显示为以下内容,文件系统条目才能正确引用 RAID–1 卷:
#device device mount FS fsck mount mount #to mount to fsck point type pass at boot options # /dev/md/dsk/d0 /dev/md/rdsk/d0 / ufs 1 no - /dev/dsk/c0t3d0s1 - - swap - no - /dev/dsk/c0t3d0s6 /dev/rdsk/c0t3d0s6 /usr ufs 2 no - # /proc - /proc proc - no - swap - /tmp tmpfs - yes -
系统将恢复到正常的运行状态。
如果您有一个根 (/) 镜像,那么,当引导设备出现故障时,您需要设置备用引导设备。
本任务中的概括性步骤如下所示:
从备用根 (/) 子镜像引导
确定出错的状态数据库副本和卷
修复出现故障的磁盘
将状态数据库副本和卷恢复到其原始状态
最初,当引导设备出现故障时,您将看到类似于以下内容的消息。在不同的体系结构中,此消息可能会有所不同。
Rebooting with command: Boot device: /iommu/sbus/dma@f,81000/esp@f,80000/sd@3,0 The selected SCSI device is not responding Can't open boot device ...
看到此消息时,请记下该设备。然后,请执行以下步骤:
由于本示例中的六个状态数据库副本中只有两个出错,因此仍可以引导系统。如果不是这种情况,则需要在单用户模式下删除不可访问的状态数据库副本。此过程在如何从不足的状态数据库副本中恢复中介绍。
在为根 (/) 文件系统创建镜像时,应在执行过程中记录备用引导设备。在本示例中,disk2 是备用引导设备。
ok boot disk2 SunOS Release 5.9 Version s81_51 64-bit Copyright 1983-2001 Sun Microsystems, Inc. All rights reserved. Hostname: demo ... demo console login: root Password: <root-password> Dec 16 12:22:09 host1 login: ROOT LOGIN /dev/console Last login: Wed Dec 12 10:55:16 on console Sun Microsystems Inc. SunOS 5.9 s81_51 May 2002 ...
# metadb flags first blk block count M p unknown unknown /dev/dsk/c0t3d0s3 M p unknown unknown /dev/dsk/c0t3d0s3 a m p luo 16 1034 /dev/dsk/c0t2d0s3 a p luo 1050 1034 /dev/dsk/c0t2d0s3 a p luo 16 1034 /dev/dsk/c0t1d0s3 a p luo 1050 1034 /dev/dsk/c0t1d0s3
在本示例中,系统无法再检测到故障磁盘上的分片 /dev/dsk/c0t3d0s3 上的状态数据库副本。
# metastat d0: Mirror Submirror 0: d10 State: Needs maintenance Submirror 1: d20 State: Okay ... d10: Submirror of d0 State: Needs maintenance Invoke: "metareplace d0 /dev/dsk/c0t3d0s0 <new device>" Size: 47628 blocks Stripe 0: Device Start Block Dbase State Hot Spare /dev/dsk/c0t3d0s0 0 No Maintenance d20: Submirror of d0 State: Okay Size: 47628 blocks Stripe 0: Device Start Block Dbase State Hot Spare /dev/dsk/c0t2d0s0 0 No Okay d1: Mirror Submirror 0: d11 State: Needs maintenance Submirror 1: d21 State: Okay ... d11: Submirror of d1 State: Needs maintenance Invoke: "metareplace d1 /dev/dsk/c0t3d0s1 <new device>" Size: 69660 blocks Stripe 0: Device Start Block Dbase State Hot Spare /dev/dsk/c0t3d0s1 0 No Maintenance d21: Submirror of d1 State: Okay Size: 69660 blocks Stripe 0: Device Start Block Dbase State Hot Spare /dev/dsk/c0t2d0s1 0 No Okay d2: Mirror Submirror 0: d12 State: Needs maintenance Submirror 1: d22 State: Okay ... d12: Submirror of d2 State: Needs maintenance Invoke: "metareplace d2 /dev/dsk/c0t3d0s6 <new device>" Size: 286740 blocks Stripe 0: Device Start Block Dbase State Hot Spare /dev/dsk/c0t3d0s6 0 No Maintenance d22: Submirror of d2 State: Okay Size: 286740 blocks Stripe 0: Device Start Block Dbase State Hot Spare /dev/dsk/c0t2d0s6 0 No Okay
在本示例中,metastat 命令显示以下子镜像需要维护:
子镜像 d10、设备 c0t3d0s0
子镜像 d11、设备 c0t3d0s1
子镜像 d12、设备 c0t3d0s6
提示 - 如果新磁盘与现有磁盘(在本示例中为镜像完整的一面)相同,请快速格式化新磁盘。为此,可使用 prtvtoc /dev/rdsk/c0t2d0s2 | fmthard -s - /dev/rdsk/c0t3d0s2 命令(在本示例中为 c0t3d0)。
# halt ... Halted ... ok boot ... # format /dev/rdsk/c0t3d0s0
请注意,必须从另一半根 (/) 镜像重新引导。在创建镜像时,您应该已经记录了备用引导设备。
# halt ... ok boot disk2
# metadb flags first blk block count M p unknown unknown /dev/dsk/c0t3d0s3 M p unknown unknown /dev/dsk/c0t3d0s3 a m p luo 16 1034 /dev/dsk/c0t2d0s3 a p luo 1050 1034 /dev/dsk/c0t2d0s3 a p luo 16 1034 /dev/dsk/c0t1d0s3 a p luo 1050 1034 /dev/dsk/c0t1d0s3 # metadb -d c0t3d0s3 # metadb -c 2 -a c0t3d0s3 # metadb flags first blk block count a m p luo 16 1034 /dev/dsk/c0t2d0s3 a p luo 1050 1034 /dev/dsk/c0t2d0s3 a p luo 16 1034 /dev/dsk/c0t1d0s3 a p luo 1050 1034 /dev/dsk/c0t1d0s3 a u 16 1034 /dev/dsk/c0t3d0s3 a u 1050 1034 /dev/dsk/c0t3d0s3
# metareplace -e d0 c0t3d0s0 Device /dev/dsk/c0t3d0s0 is enabled # metareplace -e d1 c0t3d0s1 Device /dev/dsk/c0t3d0s1 is enabled # metareplace -e d2 c0t3d0s6 Device /dev/dsk/c0t3d0s6 is enabled
一段时间之后,重新同步将完成。现在您可以恢复为从原始设备引导。